骰子机器人是一个基于微信的多功能聊天机器人,集成了骰子投掷、牌堆抽卡、天气查询、AI聊天和角色卡管理等功能。适用于桌面角色扮演游戏(TRPG)和日常聊天场景。
- 支持复杂骰子表达式
- 优势/劣势投掷(a/p标记,如
d20a优势骰,d20p劣势骰) - 支持复合运算(如
d8*(d4+2)) - 支持重复投掷(如
d4:d6) - 多面骰支持(d4/d6/d8/d10/d12/d20/d100)
- 内置多种牌堆(108将、万象无常等)
- 支持自定义牌堆(JSON/TXT格式)
- 108将牌堆支持图片展示
- 实时天气查询
- 72小时天气预报
- 灾害预警通知
- 生活指数(穿衣/运动/紫外线)
- 定时天气播报
- 通义千问集成
- 多会话管理
- 群聊/私聊权限控制
- 定时消息推送
- 随机抽取易经64卦或浅水寺100签
- 道士风格卦象解读或和尚风格签文
- 每位用户每天只能使用一次
.dnd [关键词]- 查询传统D&D规则内容- 支持武器、法术、职业、种族等规则查询
- 基于嵌套JSON结构的快速搜索
.dnd2024 [关键词]- 查询D&D 2024年版法术数据- 包含完整的法术手册数据
- 支持多维度搜索:
- 法术名称(中文/英文)
- 学派分类(塑能、防护、幻术等)
- 职业筛选(法师、术士、牧师等)
- 等级分类(戏法、1-9级法术)
- 格式化的法术信息展示
- 包含施法时间、距离、成分、持续时间
- 详细的法术描述和效果说明
- 最多显示3个匹配结果,避免刷屏
.char help- 显示帮助信息.char load- 上传角色卡文件.char list- 显示所有可用角色卡.char info [角色名]- 显示角色卡信息.char use <角色名>- 使用指定角色.char release- 释放当前使用的角色.char history [角色名]- 显示角色卡操作历史.char force release <角色名>- 强制释放被占用的角色(仅管理员可用)
.c <技能名>- 对指定技能进行检定.ca <技能名>- 对指定技能进行优势检定(掷两次骰,取较低值).cp <技能名>- 对指定技能进行劣势检定(掷两次骰,取较高值).grow <技能名> [次数]- 对指定技能进行成长检定.grow history [角色名] [显示条数]- 显示角色的技能成长历史.setgrow <角色名> <点数>- 设置角色的成长点数(仅管理员可用)
-
角色卡使用规则
- 每个用户同一时间只能使用一个角色
- 使用新角色前需要先释放当前角色
- 一个角色同时只能被一个用户使用
-
技能成长规则
- 成长检定使用D100,需要投出大于当前技能值的结果
- 成长值根据当前技能值决定:
- 1-29: 1d10
- 30-49: 1d8
- 50-69: 1d6
- 70-89: 1d4
- 90+: 1d3
- 投出100时获得双倍成长值
- 技能值>95时,投出96-100总能成长
- 每次成长检定消耗1点成长点数
-
历史记录
- 系统会记录角色的所有操作历史
- 包括创建、使用、释放等基础操作
- 记录技能成长历史和成长点数变化
-
注意事项
- 角色名如果包含空格,需要用引号括起来
- 可选参数用[]表示,必填参数用<>表示
- 技能名称大小写不敏感,但需要与角色卡中的名称匹配
- 自动定期备份(默认每24小时)
- 手动备份
- 备份文件管理(自动保留最近的10个备份)
- 备份恢复功能
- 备份状态监控
- 临时备份保护机制
.backup- 手动创建数据库备份.backup list- 列出所有备份文件.backup restore <备份文件名>- 从指定备份恢复数据库
-
备份存储位置
- 备份文件存储在数据库目录下的
backups子目录中 - 备份文件名格式:
backup_YYYYMMDD_HHMMSS.db - 建议定期将备份文件复制到其他位置保存
- 备份文件存储在数据库目录下的
-
自动备份
- 系统启动时自动启动备份服务
- 默认每24小时进行一次备份
- 自动清理旧备份,只保留最近的10个备份
- 可以通过配置文件修改备份间隔和保留数量
-
手动备份
- 可以随时使用
.backup命令创建备份 - 建议在进行重要操作前手动创建备份
- 备份文件包含完整的数据库结构和数据
- 可以随时使用
-
备份恢复
- 恢复前会自动创建当前数据库的临时备份
- 如果恢复失败,会自动恢复临时备份
- 恢复操作需要管理员权限
- 恢复过程中会显示详细的进度信息
-
备份状态监控
- 系统会记录每次备份的时间和大小
- 可以通过
.backup list查看备份历史 - 通过
.sys命令可以查看备份服务状态 - 自动检测备份文件完整性
-
注意事项
- 备份文件较大,请确保有足够的磁盘空间
- 建议定期将备份文件复制到其他位置保存
- 恢复操作会覆盖当前数据库,请谨慎操作
- 如果备份失败,系统会记录错误日志
- 建议定期测试备份文件的可用性
-
配置说明
backup: auto_backup: enabled: true interval: 24 # 备份间隔(小时) max_backups: 10 # 保留的备份数量 manual_backup: enabled: true max_size: 100 # 单个备份文件最大大小(MB) restore: require_admin: true # 是否需要管理员权限 create_temp_backup: true # 是否创建临时备份
-
安装依赖:
pip install -r requirements.txt
-
配置config.yaml:
ai: qwen: api_key: your_api_key app_id: your_app_id
-
启动机器人:
python main.py
bot:
name: 骰子机器人
version: 2.1.0
ai:
qwen:
api_key: your_api_key
app_id: your_app_id
group_chat:
enabled_rooms:
- "群聊ID1"
- "群聊ID2"
private_chat:
enabled: true
whitelist:
- "用户ID1"
- "用户ID2"ai:
qwen:
weather:
default_city: "北京"
daily_report:
enabled: true
broadcast_times:
- "07:30"
- "19:30"
warning:
enabled: true
interval: 10friend_request:
auto_accept: true # 是否自动通过好友请求
pass_phrase: "骰子机器人" # 验证口令,匹配时自动通过,为空则全部通过
greeting: "你好 {nickname},我是骰子机器人,可以使用 .help 查看指令帮助。" # 欢迎消息,{nickname}会被替换为新好友昵称decks:
108bro: 108将.txt
dmt: 万象无常.json
injury: 侠界伤残.json
wm: 狂野法术浪涌.jsonfiles:
deck_path: decks # 牌堆文件目录
dnd_data: DND5E23_4_2.json # 传统D&D规则数据文件
dnd2024_data: dnd5e_handbook_2024_spells.json # D&D 2024年版法术数据文件
log_file: logs/robot.log # 机器人日志文件.r d20a # 投掷d20优势骰(投2次取高)
.r d20p3 # 投掷d20劣势骰3次(投3次取低)
.r d4:(d8+2) # 先投d4获得次数N,然后重复计算(d8+2)共N次
.c 侦查 # 进行侦查技能检定
.ca 侦查 # 进行侦查技能优势检定(掷两次骰取较低值)
.cp 侦查 # 进行侦查技能劣势检定(掷两次骰取较高值)
.grow 侦查 # 对侦查技能进行成长检定
.grow 侦查 3 # 对侦查技能进行3次成长检定
.grow history # 查看当前角色的成长历史
.find <关键词> # 查询当前角色卡中的技能、物品和笔记
.weather 北京 # 查询北京当前天气
.weather 上海 3d # 查询上海未来3天天气
.draw dmt 2 # 从"万象无常"牌堆抽2张牌
.dnd 武器 # 查询传统D&D规则中的武器信息
.dnd 法术 # 查询传统D&D规则中的法术信息
.dnd 职业 # 查询传统D&D规则中的职业信息
.dnd2024 火球术 # 查询D&D 2024版中的火球术
.dnd2024 法师 # 查询D&D 2024版中法师可用的法术
.dnd2024 戏法 # 查询D&D 2024版中的所有戏法
.dnd2024 塑能 # 查询D&D 2024版中塑能系法术
说明:.dnd和.dnd2024命令使用统一的查询逻辑,支持模糊搜索。两个命令的区别仅在于数据源不同:
.dnd:查询传统D&D 5e规则数据(DND5E23_4_2.json).dnd2024:查询D&D 2024年版数据(dnd2024.json)
两个数据文件都采用相同的JSON格式,数据存储在"helpdoc"字段下,支持关键词模糊匹配。
.jrrp # 获取今日人品(随机抽取易经64卦或浅水寺100签)
系统会随机在两种模式之间切换:
- 易经64卦:以道士风格抽取一卦,并展示卦象与解释
- 浅水寺100签:以和尚风格抽取一签,并展示签文、解释、建议与运势
每位用户每天只能使用一次该命令。
@机器人 今天天气如何? # 群聊中@机器人进行对话
-
添加新牌堆:
- 在
decks目录下添加JSON/TXT文件 - 更新config.yaml中的decks配置
- 在
-
添加新的D&D数据:
- 将JSON数据文件放置在项目根目录
- 在config.yaml的files配置中添加文件路径
- 在main.py中添加数据加载逻辑
- 创建对应的搜索和处理函数
-
扩展新功能:
- 在
functions.py中添加处理函数 - 在
CommandHandler中注册新命令 - 更新帮助文档和README
- 在
欢迎提交Pull Request,请遵循以下规范:
- 保持代码风格一致
- 添加必要的单元测试
- 更新相关文档
MIT License