开发QQ官方机器人
QQ 频道机器人开发简明教程
1. 简介
QQ 频道机器人是一种可以在 QQ 频道中与用户进行互动的服务。这个教程旨在帮助新手学习如何使用 Python 的官方SDK,快速实现一些基本的机器人功能。
2. 准备工作
- 机器人注册和添加: 在 QQ 开放平台 注册开发者账号,并创建一个机器人应用。获取分配给机器人的 App ID 和 Token。
3. 环境搭建
- 安装 Python3: 确保你的机器上已经安装了 Python3。
- 安装机器人SDK: 打开终端并执行以下命令安装机器人的 Python SDK:
pip install qq-bot
pip install pyyaml
4. 创建项目文件
- 创建两个文件
- config.yaml
- robot.py
5. 配置文件填写
- 打开
config.yaml文件,填入机器人的 App ID 和 Token,并保存:token:
appid: "123"
token: "xxxx"
6. 编写机器人代码
- 打开
robot.py文件,导入依赖包并设置机器人自动回复消息的功能:import asyncio
import os.path
import qqbot
from qqbot.core.util.yaml_util import YamlUtil # 从配置文件读取机器人的信息
test_config = YamlUtil.read(os.path.join(os.path.dirname(__file__), "config.yaml")) async def _message_handler(event, message: qqbot.Message):
msg_api = qqbot.AsyncMessageAPI(t_token, False)
qqbot.logger.info("event %s" % event + ",receive message %s" % message.content) # 自动回复消息
message_to_send = qqbot.MessageSendRequest(content="你好", msg_id=message.id)
await msg_api.post_message(message.channel_id, message_to_send) if __name__ == "__main__":
t_token = qqbot.Token(test_config["token"]["appid"], test_config["token"]["token"])
qqbot_handler = qqbot.Handler(
qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
)
qqbot.async_listen_events(t_token, False, qqbot_handler)
7. 运行机器人
- 在终端中执行以下命令,运行机器人:
python3 /home/demo/robot.py
8. 测试机器人
- 在 QQ 频道中 @机器人 发送消息(例如,@机器人 hello),机器人将自动回复 "你好"。
9. 关键词功能
我们将robot.py里面的代码改为关键词回复,可以在 _message_handler 函数中使用条件语句检查收到的消息内容,然后根据关键词回复不同的内容。
import asyncio
import os.path
import qqbot
from qqbot.core.util.yaml_util import YamlUtil
# 从配置文件读取机器人的信息
test_config = YamlUtil.read(os.path.join(os.path.dirname(__file__), "config.yaml"))
async def _message_handler(event, message: qqbot.Message):
msg_api = qqbot.AsyncMessageAPI(t_token, False)
qqbot.logger.info("event %s" % event + ", receive message %s" % message.content)
# 检查消息内容是否包含关键词
if "你好" in message.content:
reply_content = "你也好!"
elif "再见" in message.content:
reply_content = "再见,期待下次见面!"
else:
reply_content = "我不太明白你说的是什么..."
# 回复消息
message_to_send = qqbot.MessageSendRequest(content=reply_content, msg_id=message.id)
await msg_api.post_message(message.channel_id, message_to_send)
if __name__ == "__main__":
t_token = qqbot.Token(test_config["token"]["appid"], test_config["token"]["token"])
qqbot_handler = qqbot.Handler(
qqbot.HandlerType.AT_MESSAGE_EVENT_HANDLER, _message_handler
)
qqbot.async_listen_events(t_token, False, qqbot_handler)
到自己的测试频道艾特自己的机器人发送关键词即可
这里我添加了一个简单的条件语句,检查消息内容中是否包含关键词 "你好" 或 "再见",然后根据关键词回复不同的内容。
如果消息内容中包含关键词,则回复相应的内容;否则,回复一个默认的消息。
开发QQ官方机器人的更多相关文章
- QQ聊天机器人 Delphi代码
QQ聊天机器人 前几日,看到杂志上有一篇关于开发QQ聊天机器人的文章.谈到了对QQ循环发送消息内容,感觉倒也很好玩,于是拿起Delphi开始了我的QQ聊天机器人之路. 首先要明白自己要做什么, ...
- QQ 聊天机器人小薇 2.0.0 发布!
本次发布主要加入了支持讨论组聊天,并增强了稳定性.另外,官方小薇 QQ 机器人已经下线,大家要体验的话请 自建私服~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务, ...
- QQ 聊天机器人小薇 2.1.0 发布!
本次发布加入了支持茉莉机器人,并且更容易搭建开发环境,在线显示登录二维码~ 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息 ...
- QQ 聊天机器人小薇 1.0.1 发布!
本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节. 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 Q ...
- QQ 聊天机器人小薇发布!
简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 QQ 群消息,发现有"感兴趣"的内容时通过图灵机器人进行智能回复 监 ...
- QQ 聊天机器人API
QQ机器人是腾讯陆续推出的的人工智能聊天机器人的总称. 都说小Q妹妹聪明好学,我们能够教她说话.也能够请他帮忙查询邮编.手机号,或者解释成语.翻译成语,据说她还会查询手机号码归属地.应用科学计算器. ...
- iOS开发 QQ粘性动画效果
QQ(iOS)客户端的粘性动画效果 时间 2016-02-17 16:50:00 博客园精华区 原文 http://www.cnblogs.com/ziyi--caolu/p/5195615.ht ...
- Android开发人员官方站点文档 - 国内踏得网镜像
Android Developer 安卓开发人员官方站点无法正常訪问.即使FQ因为网络原因依旧訪问缓慢. 故整理相关字体.脚本.样式.页面资源,在踏得网server上建立了本地镜像.初始镜像时间201 ...
- IOS开发苹果官方Sample Code及下载地址
IOS开发苹果官方Sample Code及下载地址 在线浏览地址:https://developer.apple.com/library/ios/navigation/#section=Resourc ...
- 开发QQ互联ios版Ane扩张 辛酸史
来源:http://www.myexception.cn/operating-system/1451490.html 开发QQ互联ios版Ane扩展 辛酸史 开发QQ互联ios版Ane扩展辛酸史: 1 ...
随机推荐
- SBOM落地的关键一步——漏洞可利用性交流(VEX)
SolarWinds 网络安全事件的影响,加上 Log4j 漏洞对众多知名企业产生难以估量的后果,使软件供应链安全成为安全领域的热门话题,并且SBOM现在成为网络安全漏洞计划的一个重要组成部分. SB ...
- 由浅入深,揭秘企业级OLAP数据引擎ByteHouse
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在字节跳动各产品线飞速成长的过程中,对数据分析能力也提出了更高的要求,现有的主流数据分析产品都没办法完全满足业务要 ...
- Axure 弹出框遮罩层灯箱效果
灯箱效果:比较适合Web, 效果不太理想,还是自己做个比较合适 弹出效果:就是弹框 推动效果:A 元件显示的时候,把 B元件往下.右移动.如Web左侧菜二级单效果
- Axure 元件--基本元件
图片:导入图看,根据图片实际大小显示,双击方框,再导入,根据控件的大小来显示图片 热区:1:增加锚点,制作点击事件:2:放在页面下方,控制滚动位置,比如其它控件在交互事件中找到它的坐标. 动态面版:交 ...
- Kubernetes(K8S) helm chart
感觉和放到一个 yaml 文件中,用 ---- 分隔,操作繁琐程度上,没有太大区别 创建自定义 Chart # 创建自定义的 chart 名为 mychart [root@k8smaster ~]# ...
- Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级
Jenkins Pipeline 流水线 - K8S kubectl 升级 使用代理节点 Remote SSH 远程执行命令进行升级 Remote SSH 方式 安装插件 SSH Pipeline S ...
- 【k8s】基础环境配置部署
基础环境配置部署 Hzero部署练习参考文档 https://docs.qq.com/sheet/DQWxlRlBXZmJ4b01G?tab=BB08J2&_t=1684458310312&a ...
- Codeforces Round #671 (Div. 2) (A - B、D1题)
比赛链接:https://codeforces.com/contest/1419 https://codeforces.com/contest/1419/problems A. Digit Game ...
- 使用acme.sh、acme-dns自动申请ssl证书
使用acme.acme-dns实现自动申请ssl证书并实现自动替换 有些dns没有dnsapi,所以用这种方式申请只需要添加一条dns解析即可完成 以下为linux系统操作 安装acme.sh 官方源 ...
- Springcloud和Dubbo的区别。Eureka和Ribbon和Hystrix和zuul
netty 是什么? "netty 是一个基于nio的客户.服务器端编程框架,netty提供异步的,事件驱动的网络应用程序框架和工具,可以快速开发高可用的客户端和服务器.netty是基于ni ...