大模型Discord机器人配置:从创建应用到频道对话的完整流程
想让大模型在Discord频道里直接回答问题,核心操作分三步:在Discord开发者后台创建应用并拿到Token,配置好机器人权限和意图,再用代码把大模型API接进来。
下面按零基础能照做的顺序展开,每一步都给出操作路径和验证方式。
创建Discord应用并获取机器人Token
先登录Discord开发者门户(discord.com/developers/applications),点击New Application,输入应用名称后创建。
进入左侧Bot页面,点击Add Bot确认添加。
在Bot页面找到Token区域,点击Reset Token并复制保存,这个Token只显示一次,泄露后需重新生成。
接着在同一页面向下找到Privileged Gateway Intents,开启Message Content Intent。
不开这个选项,机器人收不到普通消息内容,只能收到事件通知。
最后在OAuth2→URL Generator中勾选bot和applications.commands,在Bot Permissions中至少勾选Send Messages和Read Message History,复制生成的邀请链接,在浏览器打开并把机器人邀请到你的测试服务器。
准备运行环境与依赖
机器人需要一个长期在线的运行环境,本地电脑或云服务器均可。
以Linux服务器为例,先确认Python版本:
python3 --version
建议使用Python 3.9及以上。
创建虚拟环境并安装依赖:
python3 -m venv discord-bot-env
source discord-bot-env/bin/activate
pip install discord.py openai
如果使用其他大模型服务,把openai替换成对应的SDK即可。
把Discord Token和大模型API Key写入环境变量,不要硬编码在代码里:
export DISCORD_TOKEN="你的Discord机器人Token"
export LLM_API_KEY="你的大模型API Key"
编写机器人主程序并接入大模型
新建bot.py,写入以下代码。
注意把base_url换成你实际使用的大模型接口地址,模型名称也要按服务商文档填写:
import os
import discord
from openai import OpenAI
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
llm = OpenAI(api_key=os.getenv("LLM_API_KEY"), base_url="https://api.example.com/v1")
@client.event
async def on_ready():
print(f"已登录:{client.user}")
@client.event
async def on_message(message):
if message.author == client.user:
return
if client.user.mentioned_in(message):
prompt = message.content.replace(f"<@{client.user.id}>", "").strip()
if not prompt:
await message.reply("请在@我之后输入问题。")
return
async with message.channel.typing():
try:
resp = llm.chat.completions.create(
model="你的模型名称",
messages=[{"role": "user", "content": prompt}],
timeout=30
)
answer = resp.choices[0].message.content
except Exception as e:
answer = f"调用大模型失败:{e}"
await message.reply(answer[:2000])
client.run(os.getenv("DISCORD_TOKEN"))
保存后运行python bot.py。
如果终端输出“已登录:你的机器人名称”,说明Discord连接成功。
到频道里@机器人并提问,能收到回复即表示大模型Discord机器人配置完成。
常见报错与避坑提醒
机器人不回复消息:先检查Message Content Intent是否开启,再确认机器人是否拥有Read Message History和Send Messages权限。
修改Intent后需要重启程序。
401或403错误:Discord Token错误或已失效,回到开发者后台重新生成Token并更新环境变量。
大模型API返回401则检查API Key和base_url是否匹配。
回复超时或截断:Discord单条消息上限2000字符,代码中做了截断处理。
如果大模型响应慢,可适当调大timeout,但不要无限等待。
Token泄露风险:不要把Token提交到Git仓库或公开粘贴。
一旦泄露,立即在开发者后台Reset Token并更新部署环境。
验证配置是否生效
用三个检查点确认:终端打印已登录信息;
频道内@机器人后出现“正在输入”状态;
收到不超过2000字符的回复。
如果回复内容为空,检查大模型接口返回结构和模型名称是否正确。
稳定运行后,可用systemd或宝塔的进程守护功能让机器人后台常驻,避免终端关闭后掉线。