出发点
QQ 群需要一个活跃气氛的东西。签到打卡太无聊,问答机器人又容易被滥用。想了很久,决定做几个群内小游戏——既能增加互动,又不会太打扰。
架构设计
QQ Webhook 接收消息
→ Python Flask API 处理
→ 意图识别(关键词匹配 + 简单 NLP)
→ 路由到对应插件
→ MongoDB 存取用户数据
→ 生成回复插件用简单的注册机制:
PLUGINS = {}
def register(name):
def decorator(func):
PLUGINS[name] = func
return func
return decorator
@register('cultivation')
def handle_cultivation(msg, user):
# 修仙修炼逻辑
pass三个游戏
1. 修仙修炼
群友每天可以"修炼"获取修为,突破境界(练气→筑基→金丹→元婴→化神)。有随机事件(渡劫、奇遇、走火入魔),还有 PVP 切磋。数据持久化到 MongoDB。
# 境界体系
CULTIVATION_LEVELS = [
("练气期", 0),
("筑基期", 1000),
("金丹期", 5000),
("元婴期", 20000),
("化神期", 80000),
]2. 故事接龙
机器人给一个开头,群友每人续写一句。用简单的规则判断句子是否合理(长度限制、敏感词过滤),攒够一定轮数后输出完整故事。
3. 俄罗斯轮盘
群友报名参加,随机一颗"子弹"在 6 发弹仓中。每人轮流"开枪",活着的人进入下一轮。最后存活的人获得积分。
防止滥用
- 每条命令有冷却时间(不同游戏不同)
- 频率限制:同一用户 1 分钟内最多 5 条游戏指令
- 关键词黑名单:过滤敏感词
技术栈
- Python Flask 作为 HTTP API 服务
- MongoDB 存储用户数据(修为、积分、游戏记录)
- QQ Webhook 接收和发送消息
- 宝塔面板部署,Nginx 反代
效果比预期好——群里活跃度明显提升,有人甚至为了突破金丹期每天坚持"修炼" 😂