Files
WPSBot/README.md
2025-10-29 11:32:43 +08:00

9.5 KiB
Raw Blame History

WPS Bot Game 🎮

基于WPS协作开放平台的自定义机器人游戏系统支持多种互动小游戏。

功能特性

🎲 骰娘系统

  • 支持基础掷骰(.r 1d20
  • 支持带修正掷骰(.r 3d6+5
  • 自动识别大成功/大失败

石头剪刀布

  • 与机器人对战
  • 战绩统计
  • 胜率计算

🔮 运势占卜

  • 每日运势(同一天结果相同)
  • 塔罗牌占卜
  • 幸运数字和幸运颜色

🔢 猜数字游戏

  • 1-100范围
  • 10次机会
  • 智能提示系统

📝 问答游戏

  • 多领域题库
  • 3次答题机会
  • 关键词智能匹配

🀄 成语接龙

  • 支持多音字和谐音接龙
  • 全局黑名单系统
  • 实时状态显示
  • 参与者统计排行
  • 支持指定下一位接龙者

五子棋

  • 标准15×15棋盘
  • 黑方禁手规则(三三、四四、长连)
  • 多轮对战同时进行
  • 完整的战绩统计
  • 实时棋盘显示

💎 积分系统

  • 每日签到获得固定积分10分
  • 运势占卜随机获得积分1-20分30%概率)
  • 个人积分查询和记录
  • 积分排行榜
  • 完整的积分变动记录

⚗️ 炼金系统

  • 消耗积分进行抽奖10/20/50积分
  • 奖品池数学期望略高于消耗积分,对玩家友好
  • 包含大奖(巨额积分)和负面奖励(额外扣分)
  • 完整的炼金记录和统计
  • 支持多种消耗档位的抽奖

🎁 积分赠送系统

  • 用户间积分赠送功能
  • 支持附赠个性化消息
  • 完整的赠送和接收记录
  • 赠送统计和记录查询
  • 单次最多赠送1000积分

🚀 快速开始

环境要求

  • Python 3.10+
  • 1GB内存 + 单核CPU推荐配置
  • Ubuntu Server推荐

安装步骤

  1. 克隆项目
git clone <repository-url>
cd WPSBotGame
  1. 安装依赖
# 使用conda环境
conda activate liubai
pip install -r requirements.txt

# 注意成语接龙游戏需要pypinyin库进行拼音处理
  1. 配置环境变量
# 复制配置文件模板
cp env.example .env

# 编辑配置文件填入你的Webhook URL
nano .env
  1. 运行应用
# 开发模式
python app.py

# 生产模式使用uvicorn
uvicorn app:app --host 0.0.0.0 --port 8000 --workers 1

📝 配置说明

环境变量

.env 文件中配置以下参数:

# WPS Webhook配置
WEBHOOK_URL=https://xz.wps.cn/api/v1/webhook/send?key=YOUR_KEY_HERE

# 数据库配置
DATABASE_PATH=data/bot.db

# 系统配置
MAX_CONCURRENT_REQUESTS=5
SESSION_TIMEOUT=1800
MESSAGE_RATE_LIMIT=20

# 日志配置
LOG_LEVEL=INFO

# 游戏配置(可选,使用默认值)
# 成语接龙最大历史显示数量
IDIOM_MAX_HISTORY_DISPLAY=10

# 五子棋最大并发游戏数
GOMOKU_MAX_CONCURRENT_GAMES=5

WPS机器人配置

  1. 在WPS群聊中添加webhook机器人
  2. 获取webhook URL包含key参数
  3. 配置Callback URL为你的服务器地址http://your-server:8000/api/callback
  4. 验证Callback可用性WPS会发送GET请求

🎮 使用指南

通用指令

  • .help - 显示帮助信息
  • .帮助 - 显示帮助信息
  • .stats - 查看个人统计

骰娘指令

.r 1d20        # 掷一个20面骰
.r 3d6         # 掷三个6面骰
.r 2d10+5      # 掷两个10面骰加5
.r 1d20-3      # 掷一个20面骰减3

石头剪刀布

.rps 石头      # 出石头
.rps 剪刀      # 出剪刀
.rps 布        # 出布
.rps stats     # 查看战绩

运势占卜

.fortune       # 今日运势
.运势          # 今日运势
.fortune tarot # 塔罗占卜

猜数字

.guess start   # 开始游戏
.guess 50      # 猜数字
.guess stop    # 结束游戏

问答游戏

.quiz          # 获取题目
.quiz 答案     # 回答问题

成语接龙

.idiom start [成语]    # 开始游戏(可指定起始成语)
.idiom [成语]          # 接龙
.idiom [成语] @某人    # 接龙并指定下一位
.idiom stop           # 结束游戏
.idiom status         # 查看游戏状态
.idiom reject [词语]  # 拒绝词语加入黑名单(仅发起人)
.idiom blacklist      # 查看黑名单
.idiom next @某人     # 指定下一位(仅最后接龙者)

五子棋

.gomoku challenge     # 发起挑战
.gomoku accept        # 接受挑战
.gomoku A1            # 在A1位置落子
.gomoku show          # 显示当前棋盘
.gomoku resign        # 认输
.gomoku cancel        # 取消自己的挑战
.gomoku list          # 列出所有进行中的对战
.gomoku stats         # 查看个人战绩

积分系统

.points               # 查看个人积分
.积分                 # 查看个人积分
.checkin              # 每日签到
.签到                 # 每日签到
.打卡                 # 每日签到
.points leaderboard   # 积分排行榜
.points records       # 积分记录

炼金系统

.alchemy              # 消耗10积分进行炼金
.炼金                 # 消耗10积分进行炼金
.alchemy 20           # 消耗20积分进行炼金
.alchemy 50           # 消耗50积分进行炼金
.alchemy stats        # 查看炼金统计
.alchemy records      # 查看炼金记录

积分赠送系统

.gift 123 50 生日快乐    # 赠送50积分给用户123附赠消息
.赠送 456 100 感谢帮助   # 赠送100积分给用户456附赠消息
.送 789 200             # 赠送200积分给用户789
.gift stats            # 查看赠送统计
.gift sent             # 查看发送记录
.gift received         # 查看接收记录

🏗️ 项目结构

WPSBotGame/
├── app.py                 # FastAPI主应用
├── config.py              # 配置管理
├── requirements.txt       # Python依赖
├── env.example            # 环境变量模板
├── core/                  # 核心模块
│   ├── database.py       # SQLite数据库
│   ├── models.py         # 数据模型
│   └── middleware.py     # 中间件
├── routers/              # API路由
│   ├── callback.py       # Callback处理
│   └── health.py         # 健康检查
├── utils/                # 工具函数
│   ├── message.py        # 消息发送
│   ├── parser.py         # 指令解析
│   └── rate_limit.py     # 限流控制
├── games/                # 游戏模块
│   ├── base.py           # 游戏基类
│   ├── dice.py           # 骰娘系统
│   ├── rps.py            # 石头剪刀布
│   ├── fortune.py        # 运势占卜
│   ├── guess.py          # 猜数字
│   ├── quiz.py           # 问答游戏
│   ├── idiom.py          # 成语接龙
│   ├── gomoku.py         # 五子棋
│   ├── gomoku_logic.py   # 五子棋逻辑
│   ├── points.py         # 积分系统
│   ├── alchemy.py        # 炼金系统
│   └── gift.py           # 积分赠送系统
├── data/                 # 数据文件
│   ├── bot.db            # SQLite数据库
│   ├── fortunes.json     # 运势数据
│   ├── quiz.json         # 问答题库
│   └── idiom_blacklist.json # 成语黑名单
├── deploy/               # 部署配置
│   ├── install.sh        # 安装脚本
│   ├── manage.sh         # 管理脚本
│   ├── nginx/            # Nginx配置
│   └── systemd/          # systemd服务配置
└── Convention/           # 通用工具库
    ├── Runtime/          # 运行时工具
    └── Image/            # 图像处理工具

🔧 部署

使用systemd推荐

  1. 复制服务配置文件
sudo cp deploy/systemd/wps-bot.service /etc/systemd/system/
  1. 修改配置文件
sudo nano /etc/systemd/system/wps-bot.service
# 修改WorkingDirectory和ExecStart路径
  1. 启动服务
sudo systemctl daemon-reload
sudo systemctl start wps-bot
sudo systemctl enable wps-bot
sudo systemctl status wps-bot

查看日志

# 实时查看日志
sudo journalctl -u wps-bot -f

# 查看最近100行
sudo journalctl -u wps-bot -n 100

📊 监控

健康检查

curl http://localhost:8000/health

系统统计

curl http://localhost:8000/stats

返回内存使用、活跃用户数等信息。

🐛 常见问题

1. 内存不足

问题服务器内存只有1GB 解决

  • 项目已优化为极低内存占用(~150-200MB
  • 使用单worker模式
  • 按需加载游戏模块
  • 定期清理过期会话

2. 消息发送失败

问题:机器人不回复 解决

  • 检查Webhook URL是否正确
  • 检查网络连接
  • 查看日志:journalctl -u wps-bot -f
  • 确认触发了限流20条/分钟)

3. 数据库锁定

问题SQLite database is locked 解决

  • 项目使用自动提交模式,不应出现锁定
  • 如果出现,检查是否有多个进程访问数据库

📈 性能指标

  • 内存占用150-300MB包含拼音处理库
  • 响应时间<500ms
  • 并发支持5-10个同时请求
  • 用户规模50-100个活跃用户
  • 消息限制20条/分钟WPS限制
  • 支持游戏10种游戏类型骰子、石头剪刀布、运势、猜数字、问答、成语接龙、五子棋、积分系统、炼金系统、积分赠送系统

🤝 贡献

欢迎提交Issue和Pull Request

📄 许可证

MIT License

📞 联系方式

如有问题请提交Issue。


Made with ❤️ for WPS Bot Game