Discord AI聊天机器人

一款集成了AI聊天、语音TTS、游戏数据查询和服务器管理的Discord机器人,支持多模型AI交互和MCP协议集成。

  • by DawnReaverWOWS
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 DawnReaverWOWS/TheFinalDiscordMCP

使用说明

索伦之眼-不和谐机器人

一个Discord机器人,具有人工智能聊天、语音TTS、《战舰世界》统计数据和用于人工智能助手的MCP(模型上下文协议)集成。

特性

  • AI聊天 -由OpenRouter提供支持,拥有34+免费AI模型(Gemini、Llama、Qwen等)
  • 语音TTS -具有20+Microsoft Edge神经语音的自然文本到语音
  • WoWS统计数据 -从Wargaming API查找玩家统计数据和部落信息
  • 节制 -禁止、踢、超时、批量删除消息
  • 服务器管理 -创建渠道、角色、类别
  • MCP集成 -93个AI辅助控制工具(Claude等)
  • HTTP API -用于web集成的可选REST API模式
  • DM支持 -Bot在私人消息中自动响应(不需要前缀)

快速开始

先决条件

  • Node.js 18+
  • Discord机器人令牌
  • (可选)用于AI功能的OpenRouter API密钥

1.克隆和安装

git clone https://github.com/DawnReaverWOWS/TheFinalDiscordMCP.git
cd TheFinalDiscordMCP
npm install

2.配置

复制示例环境文件并对其进行编辑:

cp .env.example .env

编辑 .env:

# Required
DISCORD_TOKEN=your_bot_token_here
DISCORD_GUILD_ID=your_server_id_here

# AI Features (Optional but recommended)
OPENROUTER_API_KEY=your_openrouter_api_key_here

# Creator Configuration (Optional)
BOT_CREATOR_ID=your_discord_user_id
BOT_CREATOR_NAME=YourName

# Notifications (Optional)
BOT_NOTIFY_CHANNEL_ID=channel_id_for_bot_notifications

3.构建和运行

npm run build
npm start

对于热重载开发:

npm run dev

获取Discord Bot令牌

  1. 首选 Discord开发者门户
  2. 点击“新建应用程序”并为其命名
  3. 转到“Bot”选项卡->“添加Bot”
  4. 点击“重置令牌”并复制它(这是您的 DISCORD_TOKEN)
  5. 启用这些特权网关意图:
    • 出席意向
    • 服务器成员意图
    • 消息内容意图
  6. 转到“OAuth2”->“URL生成器”
  7. 选择范围: bot, applications.commands
  8. 选择权限: Administrator (或选择个人权限)
  9. 复制生成的URL并打开它以邀请机器人到您的服务器

人工智能集成

使用OpenRouter访问34+免费AI模型。获取API密钥: openrouter.ai/keys.

支持的免费型号

模型 上下文 最适合
google/gemini-2.0-flash-exp:free 1.05M 快速、多模式(默认)
meta-llama/llama-3.3-70b-instruct:free 131K 多语言聊天
qwen/qwen3-235b-a22b:free 131K 推理,100多种语言
nousresearch/hermes-3-llama-3.1-405b:free 131K 405B前沿模型
qwen/qwen3-coder:free 262K 编码任务

看 context/openrouterAiModels.md 查看34款免费型号的完整列表。

使用人工智能

  • 提及机器人: @BotName what's the best ship for ranked?
  • DM机器人:只需直接发送消息-不需要前缀
  • 机器人将以上下文感知的答案进行响应

机器人命令

所有命令都使用 ! 前缀(不含前缀的DM除外)。

人工智能和聊天

命令 描述 示例
@BotName <message> 与AI聊天 @BotName help me with builds
DM机器人 AI自动响应 只需发送一条消息

语音

命令 描述 示例
!join <channel> 加入语音频道 !join War Room
!leave 离开语音频道 !leave
!say <text> 通过TTS朗读文本 !say Hello everyone!
!voices 列出可用的TTS语音 !voices
!setvoice <name> 更改TTS语音 !setvoice guy
!lockvoice 仅将语音锁定到创建者 !lockvoice
!unlockvoice 为每个人解锁语音 !unlockvoice
!voicestatus 检查声控锁状态 !voicestatus

别名: !vc (加入), !disconnect (离开), !speak/!tts (说)

可用TTS语音

20+自然微软Edge神经声音:

美国女性: 咏叹调(默认)、珍妮、萨拉、安娜、米歇尔 美国男性: 盖伊,戴维斯,托尼,杰森 英国女性: 索尼亚、梅西、利比 英国男: 瑞安、托马斯、阿尔菲 澳大利亚人: 威廉娜塔莎

战舰世界

命令 描述 示例
!wows <username> 查看玩家统计数据 !wows PlayerName
!ships <username> 按战斗排名前10的船只 !ships PlayerName
!allships <username> 所有船只按级别分组 !allships PlayerName
!clan <tag/name> 查找部落信息 !clan DROVA

别名: !player, !lookup (对于wows), !topships (对于船舶), !claninfo, !clanlookup (氏族)

舰艇指挥选项:

  • 按层筛选: !ships PlayerName tier:10
  • 按类型筛选: !ships PlayerName type:bb (dd、ca、bb、cv、ss)
  • 排序选项: !ships PlayerName sort:winrate (战斗、胜率、伤害、最近)

信息

命令 描述
!ping 检查机器人延迟
!serverinfo 服务器信息
!members [limit] 列出服务器成员
!memberinfo @user 获取用户信息

审核(需要权限)

命令 描述 示例
!ban @user [reason] 禁止会员 !ban @user spamming
!unban <userId> 取消会员资格 !unban 123456789
!kick @user [reason] 踢会员 !kick @user warning
!timeout @user [seconds] [reason] 成员超时 !timeout @user 300 cool down
!bulkdelete <count> 删除邮件(1-100) !bulkdelete 10

别名: !b (禁令), !k (踢腿), !mute/!to (超时), !clear/!purge (bulkdelete)

消息

命令 描述 示例
!send #channel <message> 发送消息 !send #general Hello!
!read [limit] 阅读最近的消息 !read 20

频道(仅限管理员)

命令 描述 示例
!createchannel <name> 创建文本频道 !createchannel announcements
!createvoice <name> 创建语音频道 !createvoice Gaming
!deletechannel #channel 删除频道 !deletechannel #old-channel
!createcategory <name> 创建类别 !createcategory Projects

角色

命令 描述 示例
!createrole <name> [color] 创建角色(管理员) !createrole VIP #ff0000
!addrole @user @role 向用户添加角色(Mod) !addrole @user @Member
!removerole @user @role 从用户中删除角色(Mod) !removerole @user @Member

效用

命令 描述 冷却
!createinvite 创建服务器邀请 30s
!exportchat 导出频道聊天记录 60s
!createthread [#channel] <name> 创建线程(Mod) -

乐趣

命令 描述 示例
!8ball <question> 问魔术8球 !8ball Will I win today?
!bread 获取随机面包棒图片 !bread

别名: !breadsticks, !breadstick, !carbs

创建者模式

该机器人支持语音命令的“创建者优先级”系统:

  • 集 BOT_CREATOR_ID 在 .env 到您的Discord用户ID
  • 使用 !lockvoice 仅将语音命令锁定到创建者
  • 锁定时,只有创建者可以控制语音功能
  • 使用 !unlockvoice 再次允许所有人

当被问及其创建者时,机器人会高度评价他们!

MCP集成(适用于AI助理)

这个机器人还充当MCP服务器,允许像克劳德这样的人工智能助手控制Discord。

Claude桌面配置

添加到您的Claude桌面配置(~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "discord": {
      "command": "node",
      "args": ["/path/to/FinalDiscordMCP/dist/index.js"],
      "env": {
        "DISCORD_TOKEN": "your_token_here",
        "DISCORD_GUILD_ID": "your_server_id",
        "OPENROUTER_API_KEY": "your_openrouter_key"
      }
    }
  }
}

HTTP API模式

从启用HTTP API开始:

MCP_HTTP_PORT=3001 npm start

或者在HTTP-only模式下运行(没有Discord机器人,只有API):

HTTP_ONLY=true MCP_HTTP_PORT=3001 npm start

环境变量

变量 必填 描述
DISCORD_TOKEN 是 您的Discord机器人令牌
DISCORD_GUILD_ID 否 默认服务器ID
OPENROUTER_API_KEY 否 用于AI功能的OpenRouter API密钥
OPENROUTER_MODEL 否 覆盖默认AI模型
BOT_CREATOR_ID 否 创建者的Discord用户ID(用于语音锁定)
BOT_CREATOR_NAME 否 创建者的显示名称
BOT_NOTIFY_CHANNEL_ID 无 启动/关闭通知通道
BOT_OWNER_ID 否 DM通知的用户ID(回退)
MCP_HTTP_PORT 否 在此端口上启用HTTP API
HTTP_ONLY 否 在没有Discord机器人程序的情况下运行(仅限API)
ENABLE_LOGGING 否 启用操作日志记录
RATE_LIMIT_PROTECTION 否 启用速率限制(默认值:true)

项目结构

TheFinalDiscordMCP/
├── src/
│   ├── index.ts              # Entry point
│   ├── discord-service.ts    # Discord.js wrapper
│   ├── ai-service.ts         # OpenRouter AI integration
│   ├── voice-settings.ts     # TTS voice configuration
│   ├── voice-priority.ts     # Creator voice lock system
│   ├── commands/
│   │   ├── decorated-commands.ts  # Bot commands
│   │   └── prefix-handler.ts      # Command routing & AI
│   ├── services/
│   │   └── wargaming-api.ts  # WoWS API integration
│   ├── decorators/
│   │   └── prefix.ts         # Command decorators
│   └── core/
│       ├── DiscordController.ts
│       ├── ConfigManager.ts
│       ├── RateLimiter.ts
│       └── ...
├── context/
│   └── openrouterAiModels.md # Full list of 34 free AI models
├── dist/                     # Compiled JS
├── .env                      # Your config (not committed)
├── .env.example              # Example config
└── package.json

部署

该机器人包括用于自动部署的GitHub Actions工作流:

  • 持续集成 -在所有推送、构建和测试中运行
  • 部署 -在推送到主服务器时部署到VM1和VM2

看 .github/workflows/ 用于配置。

发展

# Install dependencies
npm install

# Run in dev mode (hot reload)
npm run dev

# Build for production
npm run build

# Run production build
npm start

# Type check
npx tsc --noEmit

许可证

麻省理工学院-参见 许可证