Package: cqbot
Cqbotgo-cqhttp python 框架，可以用于快速塔建 bot安装pipinstallcqbot使用可以从examples文件夹下拷贝所需的文件go-cqhttp需要去releases下载最新的文件下面是我的目录结构，仅供参考├── mybot - 项目目录
│   ├── bot.py - 机器人逻辑文件
│   ├── config.yml - go-cqhttp配置文件，根据自己的要求修改
│   ├── go-cqhttp - go-cqhttp执行文件，window下是exe结尾的文件， 如果使用docker构建不需要这个文件
│   ├── Dockerfile - 构建镜像的文件
│   ├── run.sh - 脚本构建镜像并创建容器运行config.yml配置支持的事件支持的API支持的CQ码例子第一种方式# pip install cqbotimportjsonfromtypingimportList,Any# pip install addictfromaddictimportDict# pip install cqbotfromcqbotimport*defto_json(obj:object):returnjson.dumps(obj.__dict__,default=lambdao:o.__dict__,ensure_ascii=False)on=Truedefcmd_enable(act:Action,msg:EventMessage,args:List[Any])->bool:globalonon=Trueact.send_group_msg(msg.group_id,"已启动！")returnTruedefcmd_stop(act:Action,msg:EventMessage,args:List[Any])->bool:globalonon=Falseact.send_group_msg(msg.group_id,"已停止！")returnTruedefcmd_test(act:Action,msg:EventMessage,args:List[Any])->bool:iflen(args)==0:# 当没有参数的时候打印帮助act.send_group_msg(msg.group_id,cmd.help())return# 将参数原样发回act.send_group_msg(msg.group_id,' '.join(args))returnTrue# 设置指令cmd=Cmd()cmd.add('#启动','启动程序',cmd_enable)cmd.add('#停止','停止程序',cmd_stop)cmd.add('#测试','#测试 你的内容',cmd_test)defon_message_group(act:Action,msg:EventMessage):# 打印消息体print('on_message_group:',to_json(msg))# 如果是官方机器人则不处理ifmsg.is_office_bot():return# 执行指令ifcmd.run(act,msg):return# 判断当前的消息是否at了机器人ifmsg.is_at():# 回复这条消息message=f'{CQ.at(msg.user_id)}好的{CQ.face(124)}'act.send_group_msg(msg.group_id,message)# 再发送一条文字转语音message=f'{CQ.tts("人类的赞歌是勇气的赞歌，人类的伟大是勇气的伟大。")}'act.send_group_msg(msg.group_id,message)returndefon_notice_group_recall(act:Action,msg:EventNotice):# 如果是撤回机器人的消息则不处理ifmsg.self_id==msg.user_id:returnprint('on_notice_group_recall:',to_json(msg))# 获取被撤回的消息recall_msg=act.get_msg(msg.message_id)ifrecall_msgisNone:returnm=Dict(recall_msg)# 将撤回的消息重新发回群里message=f'{CQ.at(m.data.sender.user_id)}撤回了一条消息:{m.data.message}'act.send_group_msg(msg.group_id,message)if__name__=='__main__':bot=Bot()# 处理群消息bot.on_message_group=on_message_group# 处理群消息撤回bot.on_notice_group_recall=on_notice_group_recallbot.run()第二种方式importjsonfromtypingimportList,Any# pip install addictfromaddictimportDict# pip install cqbotfromcqbotimport*defto_json(obj:object):returnjson.dumps(obj.__dict__,default=lambdao:o.__dict__,ensure_ascii=False)on=Truedefcmd_enable(act:Action,msg:EventMessage,args:List[Any])->bool:globalonon=Trueact.send_group_msg(msg.group_id,"已启动！")returnTruedefcmd_stop(act:Action,msg:EventMessage,args:List[Any])->bool:globalonon=Falseact.send_group_msg(msg.group_id,"已停止！")returnTruedefcmd_test(act:Action,msg:EventMessage,args:List[Any])->bool:iflen(args)==0:# 当没有参数的时候打印帮助act.send_group_msg(msg.group_id,cmd.help())return# 将参数原样发回act.send_group_msg(msg.group_id,' '.join(args))returnTrue# 设置指令cmd=Cmd()cmd.add('#启动','启动程序',cmd_enable)cmd.add('#停止','停止程序',cmd_stop)cmd.add('#测试','#测试 你的内容',cmd_test)# 自定义一个Bot,继承Bot,重写需要处理的事件classMyBot(Bot):# 群消息处理defon_message_group(self,act:Action,msg:EventMessage):# 打印消息体print('on_message_group:',to_json(msg))# 如果是官方机器人则不处理ifmsg.is_office_bot():return# 执行指令ifcmd.run(act,msg):return# 判断当前的消息是否at了机器人ifmsg.is_at():# 回复这条消息message=f'{CQ.at(msg.user_id)}好的{CQ.face(124)}'act.send_group_msg(msg.group_id,message)# 再发送一条文字转语音message=f'{CQ.tts("人类的赞歌是勇气的赞歌，人类的伟大是勇气的伟大。")}'act.send_group_msg(msg.group_id,message)return# 群消息撤回处理defon_notice_group_recall(self,act:Action,msg:EventNotice):# 如果是撤回机器人的消息则不处理ifmsg.self_id==msg.user_id:returnprint('on_notice_group_recall:',to_json(msg))# 获取被撤回的消息recall_msg=act.get_msg(msg.message_id)ifrecall_msgisNone:returnm=Dict(recall_msg)# 将撤回的消息重新发回群里message=f'{CQ.at(m.data.sender.user_id)}撤回了一条消息:{m.data.message}'act.send_group_msg(msg.group_id,message)if__name__=='__main__':bot=MyBot()bot.run()直接使用Api当go-cqhttp启动后可以直接使用Action方法# pip install cqbotfromcqbotimport*if__name__=='__main__':# 连接go-cqhttp暴露的httpact=Action('http://0.0.0.0:8000')# 直接指定群号发送消息act.send_group_msg(123,f'你好{CQ.face(78)}')CQ码使用# pip install cqbotfromcqbotimport*if__name__=='__main__':# 输出: [CQ:at,qq=12313]print(CQ.at(12313))# 输出: [CQ:face,id=12]print(CQ.face(12))指令使用fromtypingimportList,Anyfromcqbotimport*defcmd_test(act:Action,msg:EventMessage,args:List[Any])->bool:iflen(args)==0:act.send_group_msg(msg.group_id,cmd.help())returnact.send_group_msg(msg.group_id,' '.join(args))returnTrue# 设置指令cmd=Cmd()cmd.add('#测试1','#测试 你的内容',cmd_test)cmd.add('#测试2','#测试 你的内容',cmd_test)# 监听群消息defon_message_group(act:Action,msg:EventMessage):# 执行指令cmd.run(act,msg)一些问题在服务器上部署后不好登录，或则提示账号设备不安全可以在本地登录好，将session.tokendevice.json一同上传到服务器，免去了登录的烦恼