基于 go-cqhttp 和 java 的 qq 机器人
-
在 https://github.com/Mrs4s/go-cqhttp/releases 下载对应平台的可执行文件, 放到 go-cqhttp 目录中
-
运行
go-cqhttp/下载的文件
, 根据提示填写 QQ 号和密码等信息, 参考文档 https://docs.go-cqhttp.org/guide/quick_start.html -
根据文档将go-cqhttp的上报方式修改为Array
-
clone并执行mvn clean install
-
创建你的springboot项目并引用依赖
<dependency> <groupId>com.zhuangxv</groupId> <artifactId>bot-core</artifactId> <version>1.0.0</version> </dependency>
-
在启动类上加注解@EnableBot
在resources目录下新建application.yml,如果您熟悉spring,可根据自己需求自行编写配置.
bot:
botName: #bot名字(保证唯一)
websocketUrl: #go-cqhttp配置中的正向websocket地址(如ws://127.0.0.1:6700)
accessToken: #go-cqhttp配置中的access_token
- 创建一个SpringBoot项目
- 创建一个类并加入spring管理(可以在类上加@Service注解,注意配置扫描包路径)
- 创建一个方法,并在该方法上增加事件注解即可监听该事件(事件注解用法见下方)
所有事件注解的参数都是限制该注解是否生效的依据,当全部满足时才会调用该注解所对应的方法,不同事件可注入的对象不同,具体见下方。
收到群消息时执行该方法
注解参数列表
- regex 正则表达式,该值不为默认值时,将验证消息是否匹配
- groupIds 验证收到消息的群号是否为当前值的内容,默认为0即不限制
- excludeGroupIds 验证收到消息的群号是否非当前值的内容,默认为0即不限制
- senderIds 验证收到消息的人是否为当前值的内容,默认为0即不限制
- excludeSenderIds 验证收到消息的人是否非当前值的内容,默认为0即不限制
- isAt 验证是否被艾特,默认为false
可注入到方法中的属性
- Group 该消息所对应群的实例
- Member 该消息发送者所对应的群成员实例
- MessageChain 该消息的消息链形式
- String 该消息的字符串形式
- Integer/int 该消息的id
收到好友私聊消息时执行该方法
注解参数列表
- regex 正则表达式,该值不为默认值时,将验证消息是否匹配
- senderIds 验证收到消息的人是否为当前值的内容,默认为0即不限制
- excludeSenderIds 验证收到消息的人是否非当前值的内容,默认为0即不限制
可注入到方法中的属性
- Friend 该消息发送者所对应的好友实例
- MessageChain 该消息的消息链形式
- String 该消息的字符串形式
- Integer/int 该消息的id
收到临时会话时执行该方法
注解参数列表
- regex 正则表达式,该值不为默认值时,将验证消息是否匹配
- senderIds 验证收到消息的人是否为当前值的内容,默认为0即不限制
- excludeSenderIds 验证收到消息的人是否非当前值的内容,默认为0即不限制
可注入到方法中的属性
- TempFriend 该消息发送者所对应的好友实例
- MessageChain 该消息的消息链形式
- String 该消息的字符串形式
- Integer/int 该消息的id
有群消息撤回时执行该方法
注解参数列表
- groupIds 验证撤回消息的群号是否为当前值的内容,默认为0即不限制
- excludeGroupIds 验证撤回消息的群号是否非当前值的内容,默认为0即不限制
- senderIds 验证撤回消息的操作人是否为当前值的内容,默认为0即不限制
- excludeSenderIds 验证撤回消息的操作人是否非当前值的内容,默认为0即不限制
可注入到方法中的属性
- Group 被撤回的消息所在的群实例
- MessageChain 被撤回的消息的消息链形式
- String 被撤回的消息的字符串形式
- Integer/int 被撤回的消息id
- RecallMessage 包含撤回该消息的操作人以及被撤回消息的发送人id
有用户入群时执行该方法
注解参数列表
- groupIds 验证撤回消息的群号是否为当前值的内容,默认为0即不限制
- excludeGroupIds 验证撤回消息的群号是否非当前值的内容,默认为0即不限制
- senderIds 验证撤回消息的操作人是否为当前值的内容,默认为0即不限制
- excludeSenderIds 验证撤回消息的操作人是否非当前值的内容,默认为0即不限制
可注入到方法中的属性
- Group 被撤回的消息所在的群实例
- UserAddMessage 包含操作管理员以及入群用户的id