QQ 聊天机器人 Luna
一个住在 QQ 里的聊天机器人,名字叫 Luna。私聊它、或者在群里跟它说话,它会用 AI 生成的文字回你,
不是提前备好的固定话术。它记得住每个人最近聊过什么,也认得几个以 / 开头的命令——
比如发 /remind 明天下午3点 交作业,到点它会主动私聊提醒你。
这是我第一个能自己连续跑上几个星期的程序。
它能干什么
- 会聊天:收到消息就交给 AI 生成回复,不是提前写好的固定问答表。
- 记得住刚才聊过什么:每个人最近 20 句留在这台机器上,下次再聊它还接得上。
- 认得几个命令:以
/开头的消息不麻烦 AI,直接由程序处理,所以/ping永远是秒回。 - 会按时提醒:
/remind后面可以直接写人话时间——“明天下午3点”“30 分钟以后”它都看得懂,到点私聊把这件事发给你。
它是怎么搭起来的
一共三块,像搭积木:一块替我登录 QQ 的现成程序、中间我自己写的 Python 程序、另一头的 AI 模型。 打个比方,那块现成程序像“替身”——替我把 QQ 挂上去、负责来回送消息;我写的程序像“前台”: 消息进来先看是不是命令,不是就转给 AI,再把 AI 的回答送回去。
| 用什么写的 | Python,两个文件:一个管总的流程,一个放命令 |
|---|---|
| AI 是谁 | DeepSeek 的对话模型;“Luna”这个名字和它说话的语气,是我写了一段说明告诉它的 |
| 记在哪 | 存在这台机器上的一个数据库文件里;每个人只留最近 20 句,多出来的自动删掉,文件不会越滚越大 |
| 提醒 | 程序每隔 30 秒看一眼有没有到点的提醒,到点就私聊发出去 |
会认的命令
| /help | 列出所有命令 |
|---|---|
| /ping | 回一句“Pong! Luna is online.”,用来确认它还活着 |
| /joke | 让模型讲一个短笑话 |
| /echo | 把你后面的字原样复述一遍,用来测消息通道通不通 |
| /remind | 设提醒:/remind 时间 要提醒的事 |
我做了什么
- Python 是自己写的:收消息、认命令、记住聊过什么、按时发提醒,都是自己搭的。
- 接上了 AI 模型的接口,也自己写了它的“人设”——语气、名字,以及要记着之前说过的话。
- 聊天记录一直留在这台树莓派上,没有放到云上。
- 反复改了很多版:文件夹里还留着二十多个旧备份,从名字能看出我试过看图、提醒、人设、搜索、重置这些方向。
现在为什么停着
它现在停着。日志的最后一条是 2026 年 7 月 30 日写的,那天之后我就没再启动过。 这回不怪代码:替我登录 QQ 的那块现成程序停了,它存登录信息的地方后来也跟着没了。
日志的结尾是一长串“连不上,5 秒后再试”,前后试了 924 次、大约一个多小时,然后就没动静了。 别的东西倒都还在:程序文件夹、聊天记录、日志,都没删——占地方很小,我就留着。
哪天想让它再活过来,我得把登录那块重新装一遍、再拿 QQ 扫一次码。 当年真正聊出来的东西还留着:2 个账号、40 句对话,全都挤在 2026 年 5 月的那个下午。
想自己做一个的话,有两条要先知道:拿一个备用的 QQ 号——用第三方程序登录 QQ 不合它的规矩, 号可能被限制甚至封掉;另外别把 AI 服务的密钥直接写在代码里——那串密钥相当于密码。 我第一版就是直接写进去的,文件不外流就没事;更稳妥的习惯是单独存一份,只让自己看得见。
把这些日子按顺序摆在一起,才发现前后其实只有两个多月:
- 2026-05-17:我把登录 QQ 的那块装了起来——Luna 从这天开始有。
- 2026-05-17~05-23:改代码的那一周——先修好一个中文读不出来的毛病,再试看图、提醒、人设、搜索。文件夹里的备份都是这一周留下的。
- 2026-05-23:它最后一次和人聊天——2 个账号、40 句。
- 2026-07-30 20:17:登录那块停了,Luna 开始每 5 秒重试一次。
- 2026-07-30 21:34:重试 924 次之后,日志停在这里,之后再没写过。