Skip to content

Repository files navigation

骰子机器人系统

项目简介

骰子机器人是一个基于微信的多功能聊天机器人,集成了骰子投掷、牌堆抽卡、天气查询、AI聊天和角色卡管理等功能。适用于桌面角色扮演游戏(TRPG)和日常聊天场景。

主要功能

🎲 骰子系统

  • 支持复杂骰子表达式
  • 优势/劣势投掷(a/p标记,如d20a优势骰,d20p劣势骰)
  • 支持复合运算(如d8*(d4+2)
  • 支持重复投掷(如d4:d6
  • 多面骰支持(d4/d6/d8/d10/d12/d20/d100)

🃏 牌堆系统

  • 内置多种牌堆(108将、万象无常等)
  • 支持自定义牌堆(JSON/TXT格式)
  • 108将牌堆支持图片展示

🌤️ 天气服务

  • 实时天气查询
  • 72小时天气预报
  • 灾害预警通知
  • 生活指数(穿衣/运动/紫外线)
  • 定时天气播报

🤖 AI聊天

  • 通义千问集成
  • 多会话管理
  • 群聊/私聊权限控制
  • 定时消息推送

🔮 今日人品

  • 随机抽取易经64卦或浅水寺100签
  • 道士风格卦象解读或和尚风格签文
  • 每位用户每天只能使用一次

📚 D&D规则查询系统

传统D&D规则查询

  • .dnd [关键词] - 查询传统D&D规则内容
  • 支持武器、法术、职业、种族等规则查询
  • 基于嵌套JSON结构的快速搜索

D&D 2024年版法术查询

  • .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 <角色名> <点数> - 设置角色的成长点数(仅管理员可用)

使用说明

  1. 角色卡使用规则

    • 每个用户同一时间只能使用一个角色
    • 使用新角色前需要先释放当前角色
    • 一个角色同时只能被一个用户使用
  2. 技能成长规则

    • 成长检定使用D100,需要投出大于当前技能值的结果
    • 成长值根据当前技能值决定:
      • 1-29: 1d10
      • 30-49: 1d8
      • 50-69: 1d6
      • 70-89: 1d4
      • 90+: 1d3
    • 投出100时获得双倍成长值
    • 技能值>95时,投出96-100总能成长
    • 每次成长检定消耗1点成长点数
  3. 历史记录

    • 系统会记录角色的所有操作历史
    • 包括创建、使用、释放等基础操作
    • 记录技能成长历史和成长点数变化
  4. 注意事项

    • 角色名如果包含空格,需要用引号括起来
    • 可选参数用[]表示,必填参数用<>表示
    • 技能名称大小写不敏感,但需要与角色卡中的名称匹配

数据库备份系统

备份功能

  • 自动定期备份(默认每24小时)
  • 手动备份
  • 备份文件管理(自动保留最近的10个备份)
  • 备份恢复功能
  • 备份状态监控
  • 临时备份保护机制

备份命令

  • .backup - 手动创建数据库备份
  • .backup list - 列出所有备份文件
  • .backup restore <备份文件名> - 从指定备份恢复数据库

备份说明

  1. 备份存储位置

    • 备份文件存储在数据库目录下的backups子目录中
    • 备份文件名格式:backup_YYYYMMDD_HHMMSS.db
    • 建议定期将备份文件复制到其他位置保存
  2. 自动备份

    • 系统启动时自动启动备份服务
    • 默认每24小时进行一次备份
    • 自动清理旧备份,只保留最近的10个备份
    • 可以通过配置文件修改备份间隔和保留数量
  3. 手动备份

    • 可以随时使用.backup命令创建备份
    • 建议在进行重要操作前手动创建备份
    • 备份文件包含完整的数据库结构和数据
  4. 备份恢复

    • 恢复前会自动创建当前数据库的临时备份
    • 如果恢复失败,会自动恢复临时备份
    • 恢复操作需要管理员权限
    • 恢复过程中会显示详细的进度信息
  5. 备份状态监控

    • 系统会记录每次备份的时间和大小
    • 可以通过.backup list查看备份历史
    • 通过.sys命令可以查看备份服务状态
    • 自动检测备份文件完整性
  6. 注意事项

    • 备份文件较大,请确保有足够的磁盘空间
    • 建议定期将备份文件复制到其他位置保存
    • 恢复操作会覆盖当前数据库,请谨慎操作
    • 如果备份失败,系统会记录错误日志
    • 建议定期测试备份文件的可用性
  7. 配置说明

    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  # 是否创建临时备份

快速开始

  1. 安装依赖:

    pip install -r requirements.txt
  2. 配置config.yaml:

    ai:
      qwen:
        api_key: your_api_key
        app_id: your_app_id
  3. 启动机器人:

    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: 10

好友请求配置

friend_request:
  auto_accept: true            # 是否自动通过好友请求
  pass_phrase: "骰子机器人"    # 验证口令,匹配时自动通过,为空则全部通过
  greeting: "你好 {nickname},我是骰子机器人,可以使用 .help 查看指令帮助。"  # 欢迎消息,{nickname}会被替换为新好友昵称

牌堆配置

decks:
  108bro: 108将.txt
  dmt: 万象无常.json
  injury: 侠界伤残.json
  wm: 狂野法术浪涌.json

文件路径配置

files:
  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张牌

D&D规则查询

.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签)

系统会随机在两种模式之间切换:

  1. 易经64卦:以道士风格抽取一卦,并展示卦象与解释
  2. 浅水寺100签:以和尚风格抽取一签,并展示签文、解释、建议与运势

每位用户每天只能使用一次该命令。

AI聊天

@机器人 今天天气如何?    # 群聊中@机器人进行对话

开发指南

  1. 添加新牌堆:

    • decks目录下添加JSON/TXT文件
    • 更新config.yaml中的decks配置
  2. 添加新的D&D数据:

    • 将JSON数据文件放置在项目根目录
    • 在config.yaml的files配置中添加文件路径
    • 在main.py中添加数据加载逻辑
    • 创建对应的搜索和处理函数
  3. 扩展新功能:

    • functions.py中添加处理函数
    • CommandHandler中注册新命令
    • 更新帮助文档和README

贡献指南

欢迎提交Pull Request,请遵循以下规范:

  • 保持代码风格一致
  • 添加必要的单元测试
  • 更新相关文档

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages