【QQ机器人】简易部署教程
一、使用条件
QQ机器人是基于QQ自身环境,部署在QQ群聊,QQ频道中,可以主动/被动回复人类的机器人。由于QQ机器人需要随叫随到,这里建议部署在服务器中。
下面是制作QQ机器人所需要的步骤:
(一)申请QQ机器人:
进入q.qq.com,输入自己的信息,创建一个新的机器人。
1、沙盒配置
取决于你的使用环境,如果希望在QQ群聊中使用,请务必成为群主/管理员才可以启动沙盒环境;如希望在频道中使用请选择相应的频道。本教程主要面向在群聊中开发QQ机器人。
2、开发设置
这里最重要的是AppID和AppSecret,分别填入ID和Secret从而让服务器绑定此机器人。下方IP白名单则需要输入你服务器(无论本地/网络)的ip地址。
3、指令设置
如需要参数传递,可以选择指令设置,当然本教程不包含指令设置,如需要请到QQ机器人官方Github的文档中查看。https://github.com/tencent-connect/botpy、https://bot.q.qq.com/wiki
(二)配置环境
1、选择合适的语言
QQ机器人提供了三种可用于编写机器人的语言,这里推荐使用python。
2、服务端配置环境(本文是在windows环境下、其它系统如linux也一致)
(1)安装python——可以使用搜索引擎,这里不再叙述
(2)设置环境变量,去cmd中测试python,如果没有报错则安装成功
(3)安装官方的botpy包:pip install qq-botpy
(4)在有需要的地方使用 import botpy
3、配置config.yaml
example中给出了原版的config.example.yaml,若使用请把名称变为config.yaml,其中需要配置(重点)的是机器人ID以及Secret(自动分配的密码)
(三)机器人代码
# -*- coding: utf-8 -*- import os import botpy from botpy import logging, BotAPI from botpy.ext.command_util import Commands from botpy.message import Message from botpy.ext.cog_yaml import read test_config = read(os.path.join(os.path.dirname(__file__), "config.yaml")) _log = logging.get_logger() @Commands("你好", "hello") async def hello(api: BotAPI, message: Message, params=None): _log.info(params) # 第一种用reply发送消息 await message.reply(content=params) # 第二种用api.post_message发送消息 await api.post_message(channel_id=message.channel_id, content=params, msg_id=message.id) return True @Commands("晚安") async def good_night(api: BotAPI, message: Message, params=None): _log.info(params) # 第一种用reply发送消息 await message.reply(content=params) # 第二种用api.post_message发送消息 await api.post_message(channel_id=message.channel_id, content=params, msg_id=message.id) return True class MyClient(botpy.Client): async def on_at_message_create(self, message: Message): # 注册指令handler handlers = [ hello, good_night, ] for handler in handlers: if await handler(api=self.api, message=message): return if __name__ == "__main__": # 通过预设置的类型,设置需要监听的事件通道 # intents = botpy.Intents.none() # intents.public_guild_messages=True # 通过kwargs,设置需要监听的事件通道 intents = botpy.Intents(public_guild_messages=True) client = MyClient(intents=intents) client.run(appid=test_config["appid"], secret=test_config["secret"])
·这是官方给出的机器人被@后所做出的反应
async def on_at_message_create(self, message: Message): _log.info(message.author.avatar) if "sleep" in message.content: await asyncio.sleep(10) _log.info(message.author.username) await message.reply(content=f"机器人{self.robot.name}收到你的@消息了: {message.content}")
这里给出了{message.content}以及f"",有需要的开发者可以根据相关代码开发自己需要的功能
(四)扩展功能
1、调整botpy中client.py,api.py
在安装目录(Python/Lib)中找到已安装的botpy文件夹,可以根据自己的需求修改api.py,client.py,具体的修改方法在文档中都有提到,api.py中也有相关的注释
2、增加插件
与正常的python一样,通过pip install以及安装包可以实现python的扩展功能
(五)需要关注的点
1、注意是在QQ频道还是在QQ群聊中使用,群聊请下载demo中的_group_文件
2、关于上传文件:需要富媒体支持,并且①不支持过大的图片上传②不支持文件(如pdf)上传
3、建议通过命令行部署,在性能不佳的服务器上有崩溃的概率
如希望部署/部署有问题,请在评论区分享问题
附:社长的机器人
登录后方可回帖