完整项目包括框架、代码和详细使用说明可以去链接下载 下载完只需要按照使用说明修改几处地方即可搭建成功
QQ机器人基础版 文章1-2所有功能
QQ机器人多功能版 文章1-3所有功能
最新功能请看第二篇文章 搭建一个QQ机器人叫女朋友起床
最近搭建的语音对话机器人体验地址:智能语音对话机器人
首先需要一个qq机器人框架 我使用的是基于mirai 以及 MiraiGo 开发的go-cqhttp 里面有开发文档 。
框架下载地址
Windows下32位文件为 go-cqhttp-v*-windows-386.zip
Windows下64位文件为 go-cqhttp-v*-windows-amd64.zip
Windows下arm用(如使用高通CPU的笔记本)文件为 go-cqhttp-v*-windows-arm.zip
选择合适的压缩包下载 然后解压。
双击exe文件 出现如下窗口
输入1后回车 然后关闭 此时已经在原来的文件目录下生成了配置文件config.yml。
双击config.yml 输入QQ号和密码 建议使用无登录保护的qq 否则可能出现滑块验证等问题 。
再转到最后两行 把前面的#去掉使其生效。 很重要 很重要
配置完后直接双击exe文件。等待一段时间出现如下窗口
这两个端口都应该出现 很重要
补充 窗口可能会一直出现如下警告 这个不需要管 是正常现象
窗口会一直显示接收到信息 不要关闭。
要实现自动回复功能的机器人需要借助一种语言 我选择的是python。
所以需要电脑配置好python环境和下载集成开发环境pycharm。可以直接上网找相关的安装和配置教程 这里就不展开说了。
当然在实现所有功能之前需要安装一些第三方库 这个不知道的也可以百度。
这包括发送私聊信息和发送群聊信息。下面的函数已经写好了 直接调用函数传入参数就行了。
import socket def send_msg(resp_dict): client socket.socket(socket.AF_INET, socket.SOCK_STREAM) ip 127.0.0.1 client.connect((ip, 5700)) msg_type resp_dict[ msg_type ] # 回复类型 群聊/私聊 number resp_dict[ number ] # 回复账号 群号/好友号 msg resp_dict[ msg ] # 要回复的消息 # 将字符中的特殊字符进行url编码 msg msg.replace( , %20 ) msg msg.replace( n , %0a ) if msg_type group : payload GET /send_group_msg?group_id str( number) message msg HTTP/1.1rnHost: ip :5700rnConnection: closernrn elif msg_type private : payload GET /send_private_msg?user_id str( number) message msg HTTP/1.1rnHost: ip :5700rnConnection: closernrn print( 发送 payload) client.send(payload.encode( utf-8 )) client.close() return 0
1 比如发送私聊信息 QQ用接收者的
resp_dict { msg_type : private , number :QQ号, msg : 你好 }
send_msg(resp_dict)
2 发送群聊信息 群号自己用一个
send_msg({ msg_type : group , number : QQ群号, msg : 大家好 })
3 当然不止发送文本信息 还可以发表情、图片、音乐等。还可以艾特某人。
例如 发表情
send_msg({ msg_type : group , number : QQ群号, msg : [CQ:shake] })
发窗口抖动
send_msg({ msg_type : group , number : QQ群号, msg : [CQ:shake] })
还有很多CQcode可以去官方文档查看 http://docs.go-cqhttp.org/cqcode/
import requests def get_group(id): response requests.post( http://127.0.0.1:5700/get_group_member_list?group_id str(id)).json() for i in response[ data ]: if(i[ card ]! ): print(i[ card ] str(i[ user_id ])) else: print(i[ nickname ] str(i[ user_id ]))
直接调用即可 群号随便用一个
get_group(QQ群号)
会打印出所有群成员的群昵称 未编辑群昵称的打印QQ昵称 和QQ号。
3、接收上报的事件下面这个代码命名为receive.py 之后方便调用 不要运行这个代码 否则端口会冲突 。这个返回的是事件的上报信息 包括接收到的信息、加好友请求等等。
import socket import json ListenSocket socket.socket(socket.AF_INET, socket.SOCK_STREAM) ListenSocket.bind(( 127.0.0.1 , 5701)) ListenSocket.listen(100) HttpResponseHeader HTTP/1.1 200 OK Content-Type: text/html



