三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

凌晨1点还在手动回群消息?Python开源QQ机器人5分钟让群聊自动化

凌晨1点还在手动回群消息?Python开源QQ机器人5分钟让群聊自动化

凌晨1点还在手动回群消息?Python开源QQ机器人5分钟让群聊自动化

【免费下载链接】qqbotQQBot: A conversation robot base on Tencent's SmartQQ项目地址: https://gitcode.com/gh_mirrors/qq/qqbot

深夜十二点半,你的手机还在群里震个没完:同一个问题被第四十个人问起,泡面凉了,复制粘贴的手也麻了——这种被群聊淹没的夜晚,大概每个打过工的人都懂。可如果有一个开源的 QQ 机器人替你把这一切自动化,会怎么样?

今天要聊的,正是这样一个能"接住"重复劳动的开源QQ机器人框架——QQBot。它用 Python 编写,把消息处理、定时任务、插件扩展、联系人管理打包成一套开箱即用的工具,你只需要会一点点 Python,就能让一个永远在线、永远不会嫌烦的"机器人管家"替你值守群聊。

手动回复 vs 自动化值守,一张表看清差距

在动手之前,先算笔账。同样是处理群里那些"日复一日"的琐事,手动和自动化之间的差距远比想象中大:

日常场景手动操作的一天交给 QQBot 之后
群内答疑同一句"多少钱""怎么发货"复制粘贴 N 遍关键词一命中,秒回标准答案
定时提醒设一排闹钟,还是经常忘到点自动发消息,一次配好永不缺席
消息监控反复刷新窗口生怕漏看新消息自动触发你的处理逻辑
群成员管理翻聊天记录找人、清点成员一条命令列出好友、群、群成员

拆开来看,其实就三个实在的收益:

  1. 把时间还给更重要的事——机器人替你盯群,你专注写代码、谈客户、陪家人;
  2. 它稳定到不像人类——不会累、不会忘、不会"在吗",7x24 小时在线值守;
  3. 规则越用越省力——回复逻辑写一次,群越大、问题越重复,省下的时间就越多。

拆开看看:QQBot 其实是四块积木

QQBot 本质上是一个跑在你电脑上的 Python 程序,它已经替你搞定了和 QQ 服务器之间的全部通信,你只需要"插上"自己的逻辑。把它拆开,就是四块积木:

  • 消息积木:负责收消息、发消息。每收到一条新消息,它就会调用你写的onQQMessage函数,把"回什么、回给谁"的决定权交给你;
  • 定时积木:内置定时任务调度,用qqbotsched装饰器就能给机器人装上闹钟,到点自动干活,不用人肉盯着;
  • 插件积木:每个功能就是一个插件文件,qq plug加载、qq unplug卸载,换功能不用重启整个程序,像换乐高零件一样方便;
  • 联系人积木bot.List帮你搜好友、找群、查成员,bot.SendTo帮你把消息精准送到某人或某个群。

至于它内部是怎么跑起来的,这张架构图讲得很清楚:

QQ机器人登录成功后,主线程会启动消息轮询、定时任务、终端监听等多个子线程,各司其职又互不干扰。

这个设计的妙处在于:你写插件的时候,完全不用关心底层通信和多线程调度,框架全都替你安排好了。你只负责"想清楚要干什么",剩下"怎么干"交给它。

三步跑通自动回复:从安装到第一句"你好"

说得再多,不如亲手跑一次。整个过程只要三步,目标很简单:让机器人学会回应"你好"。

第一步:装好环境

确保电脑上有 Python(2.7 或 3.4+ 版本),然后克隆项目并安装:

git clone https://gitcode.com/gh_mirrors/qq/qqbot cd qqbot pip install .

卡住了?大概率是网络波动,多试几次,或者换用国内的 pip 镜像源,速度会快很多。

第二步:启动并扫码登录

qqbot

程序会自动弹出登录二维码,用手机 QQ 扫一下、授权确认,机器人就上线了。登录信息会保存在本地,下次启动时用qqbot -q 你的QQ号可以直接恢复登录,不用反复扫码。

卡住了?如果二维码没有自动弹出,多半是系统缺少图片查看器。手动打开弹出的 png 文件扫码即可,也可以把二维码切换成邮箱模式或文本模式。

第三步:写你的第一个插件

~/.qqbot-tmp/plugins目录下(没有就新建一个)放一个mybot.py

def onQQMessage(bot, contact, member, content): if content == '你好': bot.SendTo(contact, '你好呀,我是你的机器人管家!')

然后在另一个命令行窗口加载它:

qq plug mybot

从现在起,任何人给这个 QQ 发一句"你好",都会收到回应。你的第一条自动化消息,就这样跑通了。

卡住了?检查插件文件名和qq plug后面的名字是否完全一致,再看代码有没有语法错误——加载失败时,终端会给出明确的报错提示。

两个即插即用的玩法:自动客服和定时闹钟

第一句回复跑通之后,想象力就归你了。这里挑两个上手快、存在感又强的玩法,可以直接抄作业。

玩法一:给客服群装一个"自动应答员"

如果你管着电商群、售后群,或者任何"每天都在回答相同问题"的群,这个玩法能直接帮你减负:

def onQQMessage(bot, contact, member, content): if '价格' in content: bot.SendTo(contact, '当前活动价 99 元,下单立减 10 元哦~') elif '发货' in content: bot.SendTo(contact, '下单后 24 小时内发货,一般 3-5 天送达') elif '退换' in content: bot.SendTo(contact, '支持 7 天无理由退换,质量问题包来回运费')

把群里出现频率最高的三五个问题写进去,机器人就是你的"值班客服"。剩下那些真正棘手的、需要人判断的问题,才会被推到你这来。

玩法二:给机器人装上"打卡闹钟"

每天固定时间提醒群成员打卡,是最容易"忘了"的活,也最适合交给定时任务:

from qqbot import QQBotSched as qqbotsched @qqbotsched(hour='22', minute='0') def daily_checkin(bot): groups = bot.List('group', '学习打卡群') for group in groups: bot.SendTo(group, '晚上十点啦,今天的学习任务完成了吗?回复"已打卡"记录一下!')

同样的思路,改成每个整点报时、每天早上推送天气、每周五统计群活跃度,都只是换一行参数的事。

小提示:想让它长期稳定在线,可以在配置文件里开启自动重启,再配合自带的定时重启插件,让机器人每隔一段时间自动"满血复活"一次。

从"会用"到"会造":一张进阶地图

第一次跑通自动回复,只是拿到了入场券。接下来的成长路线,大致是这么三关:

  • 入门关:把项目根目录的官方文档README.MD从头翻一遍,弄懂onQQMessage四个参数各代表什么,再试着给机器人加几条自己的回复规则;
  • 进阶关:打开qqbot/plugins/sampleslots.py,里面躺着框架支持的全部回调函数示例——初始化、二维码、消息、定时、加载卸载、退出。挨个跑一遍,你就理解了机器人的完整生命周期;
  • 实战关:把qqbot/plugins/里现成的插件研究透,比如定时重启插件是怎么写的,然后动手做一个真正解决自己问题的插件——比如通过 QQ 远程控制家里或公司的设备。

这个框架的上限,其实取决于你的想象力。

动手,是最好的开始

回到文章开头那个夜晚:如果阿伦的群里当时有一个能自动回答的QQ机器人,那碗泡面至少还是热的。

QQBot 给了一个低成本试错的机会——不用懂复杂的网络协议,不用部署服务器,只要会一点 Python,就能把群聊自动化玩出花样。它不完美,但它足够简单,也足够开放。

现在就去动手:克隆项目、扫码登录、写下你的第一句自动回复。从今天起,把重复的事交给机器人,把时间留给真正重要的人和事。

【免费下载链接】qqbotQQBot: A conversation robot base on Tencent's SmartQQ项目地址: https://gitcode.com/gh_mirrors/qq/qqbot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表