相信各位都有过没能及时回复女朋友的消息,而导致睡沙发的经历吧?
那么,只要我们有了能够自动回复的QQ机器人就不再怕了!
simbot是一个封装了多个聊天软件的API的框架,它是kotlin语言编写的。
当然了不要因此就望而却步,java同样能够很好的使用kotlin框架。
首先来说这个框架分为2.+版本和3.+版本,我这里介绍的是maven管理下的2.+版本实例。
文档链接:simbot框架文档
二、创建项目我这里就简单的一个小案例,若真想正儿八经的写点东西,建议看看文档。
创建一个maven管理的项目,并在pom.xml文件内引入如下依赖。
2.3.8 love.forte.simple-robot component-mirai ${simbot.version} org.apache.maven.plugins maven-compiler-plugin 8 8 -parameters org.springframework.boot spring-boot-maven-plugin 2.3.4.RELEASE repackage
当然了如果是springboot项目,官方文档里是有springboot-starter的依赖注入
三、yml文件既然是登录必然需要一个QQ账号,当你注册好账号后,在resources文件夹下创建simbot.yml文件
文件内容如下:
simbot:
core:
# 账号:密码,多个用逗号(,)分隔或者用yaml的多项配置
# bots: 账号:密码
bots: username:password
四、监听器
框架是通过监听消息来进行后续的操作,所以这里需要编写各异监听器,不过不用紧张,simbot已经写好了各个注解
我们创建一个MyListener类
内容如下:
package com.kang.bot.listener;
import catcode.CatCodeUtil;
import love.forte.common.ioc.annotation.Beans;
import love.forte.common.ioc.annotation.Depend;
import love.forte.simbot.annotation.OnPrivate;
import love.forte.simbot.api.message.MessageContent;
import love.forte.simbot.api.message.MessageContentBuilder;
import love.forte.simbot.api.message.MessageContentBuilderFactory;
import love.forte.simbot.api.message.events.PrivateMsg;
import love.forte.simbot.api.sender.Sender;
@Beans
public class MyListener {
@Depend
private MessageContentBuilderFactory messageContentBuilderFactory;
@OnPrivate
public void replyPrivateMsg1(PrivateMsg privateMsg, Sender sender){
// 获取消息正文。
MessageContent msgContent = privateMsg.getMsgContent();
// 向 privateMsg 的账号发送消息,消息为当前接收到的消息。
sender.sendPrivateMsg(privateMsg, msgContent);
// 再发送一个表情ID为'9'的表情。
// 方法1:使用消息构建器构建消息并发送
// 在绝大多数情况下,使用消息构建器所构建的消息正文 'MessageContent'
// 是用来发送消息最高效的选择。
// 相对的,MessageContentBuilder所提供的构建方法是十分有限的。
// 获取消息构建器
MessageContentBuilder msgBuilder = messageContentBuilderFactory.getMessageContentBuilder();
// 通过.text(...) 向builder中追加一句话。
// 通过.face(ID) 向builder中追加一个表情。
// 通过.build() 构建出最终消息。
MessageContent msg = msgBuilder.text("表情:").face(9).build();
// 直接通过这个msg发送。
sender.sendPrivateMsg(privateMsg, msg);
// 方法2:使用CAT码发送消息。
// 使用CAT码构建一个需要解析的消息是最灵活的,
// 但是相对的,它的效率并不是十分的可观,毕竟在这其中可能会涉及到很多的'解析'操作。
// 获取CAT码工具类实例
CatCodeUtil catCodeUtil = CatCodeUtil.getInstance();
// 构建一个类型为 'face', 参数为 'id=9' 的CAT码。
// 有很多方法。
// 1. 通过 codeBuilder 构建CAT码
String cat1 = catCodeUtil.getStringCodeBuilder("face", false).key("id").value(9).build();
// 2. 通过CatCodeUtil.toCat 构建CAT码
String cat2 = catCodeUtil.toCat("face", "id=9");
// 3. 通过模板构建CAT码
String cat3 = catCodeUtil.getStringTemplate().face(9);
// 在cat码前增加一句 '表情' 并发送
sender.sendPrivateMsg(privateMsg, "表情:" + cat3);
}
}
五、启动类注解解释:
@Beans类似于spring中的@Component,使得该类成为被框架所管理的组件。
@Depend类似于spring中的 @Autowired, 依赖注入
@OnPrivate这个便是关键注解,private在java中是私有的,而这里的这个注释表示它监听的是私聊。文档中还有@OnGroup注解,表示监听的是群聊。
PrivateMsg类是消息信息,里面包含了消息的内容,发送人等等信息。
Sender是一个消息发送器,通过这个类进行发送消息。
~~
catCodeUtil这是个工具类,用来创建 “猫猫码”。
在simbot2.+中像表情、图片、@这些信息都是通过猫猫码进行编写获取。
package com.kang.bot;
import love.forte.simbot.annotation.SimbotApplication;
import love.forte.simbot.core.SimbotApp;
@SimbotApplication
public class MyBotApplication {
public static void main(String[] args) {
SimbotApp.run(MyBotApplication.class, args);
}
}
六、登录验证@SimbotApplication注解是如同spring中的@SpringBootApplication一样
各位各位,不会以为这就完了吧?
不会吧不会吧?
这个框架本质上就是模拟移动端登录,那么QQ在新的设备上登录至少需要什么?滑块验证
这里就需要一个滑块验证的工具。
当然了,你运行后也会给你弹出这个工具的git地址,可以直接下载后安装在手机上,将给予你的四位码填入滑块验证的工具中进行操作。
这里会有一个四位的请求码,打开滑动验证助手输入请求码进行滑块验证即可。
之后便可以在你的控制台看到如下信息
这便代表登录成功。
git仓库地址: https://github.com/mzdluo123/TxCaptchaHelper
进入后在这个地方下载即可。
能说的都说完了,再不行可以去simbot的官方群 782930037 里问问各个大佬~
里面各个都是人才,说话又好听。



