Discord语音机器人

一个基于Pycord的Discord机器人,具有语音录制、音频播放和MCP服务器集成功能,适用于社区管理和娱乐场景。

  • by IuriGuerreiro
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 IuriGuerreiro/Discord-MCP-Server

使用说明

带有MCP服务器的Discord机器人

安装 PYCORD:

使用 pip 升级安装来自 GitHub 的 Pycord 库:`pip install --upgrade git+https://github.com/Pycord-Development/pycord.git`

使用 pip 安装 requirements.txt 文件中的依赖

一个用(某种语言或工具)构建的Discord机器人 Pycord(通常指一个用于Python的Discord库) 包括:

  • 录音功能
  • 使用Wavelink/Lavalink进行音频播放
  • MCP(模型上下文协议)服务器集成
  • 用户管理的数据库集成

特点/功能

录音

  • /record - 在你的语音频道开始录制音频
  • /stop_recording - 停止录音并接收音频文件

音频播放(Wavelink)

  • /play <search> - 从YouTube或其他来源播放一首歌曲
  • /stop - 停止播放并断开连接
  • /pause - 暂停当前曲目
  • /resume - 恢复播放

MCP 工具

  • send_message_to_user - 向用户发送私信
  • get_known_users - 获取已知用户列表
  • add_known_user - 将用户添加到数据库中

设置

先决条件

  1. Python 3.8或更高版本
  2. 一个Discord机器人的令牌
  3. MySQL/MariaDB 数据库
  4. Lavalink服务器(用于音频播放)

安装

  1. 克隆仓库
  2. 创建一个虚拟环境:
python -m venv .venv
.\.venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 复制 .env.example to .env 并进行配置:
DISCORD_TOKEN=your_discord_token_here
DB_HOST=localhost
DB_USER=your_db_user
DB_PORT=3306
DB_PASSWORD=your_db_password
DB_NAME=your_database_name
MESSAGE_UNKNOWN_USERS=FALSE
LAVALINK_URI=http://localhost:2333
LAVALINK_PASSWORD=youshallnotpass

Lavalink 设置(用于音频播放)

  1. 从以下链接下载 Lavalink:https://github.com/lavalink-devs/Lavalink/releases
  2. 创造 application.yml:
server:
  port: 2333
  address: 0.0.0.0
lavalink:
  server:
    password: "youshallnotpass"
    sources:
      youtube: true
      bandcamp: true
      soundcloud: true
      twitch: true
      vimeo: true
      http: true
      local: false
    bufferDurationMs: 400
    frameBufferDurationMs: 5000
    youtubePlaylistLoadLimit: 6
    playerUpdateInterval: 5
    youtubeSearchEnabled: true
    soundcloudSearchEnabled: true
    gc-warnings: true
  1. 运行 Lavalink:
java -jar Lavalink.jar

运行机器人

.\.venv\Scripts\python.exe main.py

机器人架构

  • **Pycord(一个用于Python的Discord库)**现代Discord API封装器,支持斜杠命令
  • **Wavelink(可译为“瓦维尔链接”或根据具体语境简化为“无线链接”等,但通常直接音译为“瓦维尔链接”以保留原名特色)**用于音乐播放的Lavalink客户端
  • FastMCP用于AI集成的模型上下文协议服务器
  • **Asyncio(异步I/O)**机器人服务器和MCP服务器的并发执行

命令概览

记录命令

/record - Start recording in voice channel
/stop_recording - Stop recording and save files

音乐指令

/play <song> - Play audio (requires Lavalink)
/stop - Stop and disconnect
/pause - Pause playback
/resume - Resume playback

备注

  • 语音录制要求机器人与用户处于同一个语音频道中
  • 音频播放需要运行中的Lavalink服务器
  • 这个机器人同时运行Discord和MCP服务器
  • 已处理优雅关闭以实现干净退出

许可证

麻省理工学院许可证