主要步骤概览
- 在 Discord Developer Portal 创建应用(Application)
- 在应用中创建 Bot(Bot User)
- 开启必要的权限与 Privileged Intents(特别是 Message Content Intent)
- 生成邀请链接并把 Bot 邀请进你的服务器
- 获取 Bot Token 并妥善保存(放到环境变量)
- (可选)在服务器/频道设置权限,确认 Bot 可以读取消息历史与附件
- 用 Python 运行最小测试脚本,确认能接收到消息并处理附件
详细步骤
- 创建应用(Application)
- 打开:https://discord.com/developers/applications
- 点击 "New Application",填名称(例如:MyForwarderBot),点击创建。
- 在应用中创建 Bot
- 左侧选择 "Bot" 标签页。
- 点击 "Add Bot" → "Yes, do it"。
- 这会创建一个 Bot 用户;你可以修改头像、名字等。
- 开启 Privileged Gateway Intents(非常重要)
- 在 Bot 页面往下找到 "Privileged Gateway Intents" 部分:
- 打开 "Message Content Intent"(允许读取 message.content)。(你需要开启它才能通过 SDK/库读取普通消息文本)
- 若你需要成员列表或 presence,也可按需打开 "Server Members Intent" 或 "Presence Intent"。
- 注意:如果你的 Bot 要加入 100+ 服务器,启用某些特权 intents 可能需要经过 Discord 的审核/验证。
- 获取 Bot Token(千万别泄露)
- 在 Bot 页面中,点击 "Reset Token" 或 "Copy" 获取 Bot 的 token(例如 "Bot XXXXXXXXX...")。把它存到安全地方(本地 .env 或服务器环境变量)。
- 如果 token 泄露,立即在同一页面重置(Regenerate)。
- 生成邀请链接并邀请 Bot 到你的服务器
- 在左侧选 "OAuth2" → "URL Generator"。
- Scopes: 勾选 "bot" (如需 slash commands 也勾 "applications.commands")。
- Bot Permissions: 在这里勾选所需权限(建议至少勾选):
- View Channels (Read/View Channels)
- Read Message History
- Send Messages
- Embed Links
- Attach Files (如需上传)
- Manage Messages(可选)
- 页面底部会生成一个邀请链接(URL)。
- 复制该 URL,在浏览器打开并选择要把 Bot 添加到的服务器(你必须拥有该服务器的管理权限或有邀请权限)。
说明:不要手动猜 permissions 的整数值 --- 用 OAuth2 页面勾选更安全。也可用手动构造:
但推荐用页面生成器以避免权限错误。
- 在目标服务器确认 Bot 权限
- 在服务器的角色设置中,确认 Bot 的角色拥有"View Channels"与"Read Message History"权限;在频道覆盖权限中也要允许读取消息。
- 若 Bot 无法读取 message.content,要检查是否已在开发者面板开启 Message Content Intent 并且你的代码在使用相应的 intents(见下例)。
- 获取频道 ID(如需按频道过滤)
- 在 Discord 客户端设置 → 高级 → 打开 "开发者模式"。
- 右键频道或消息 → 选择 "Copy ID" 得到 channel id(用于脚本过滤/配置)。
- 安全与生产建议
- 切勿把 token 写入代码库。用环境变量或秘密管理工具(.env 文件在部署时放到服务器,且不要提交到 git)。
- 如果 token 泄露,立即在开发者面板重置。
- 在生产环境启用适当的日志、错误重试和速率限制处理(Discord API 和 企业微信 API 都有限流)。
- 如果 Bot 要加入很多服务器(100+),注意 Discord 的验证/审核要求。
常见问题与解决
- 读不到 message.content:确认你在开发者页面开启了 Message Content Intent,并在代码里把 intents.message_content = True。
- 403 或权限错误:确认 Bot 在服务器的角色/频道中有"View Channel"和"Read Message History"的权限,以及你在 OAuth2 页面勾选了正确权限。
- 邀请失败(没有权限):邀请者必须在目标服务器有"管理服务器"或相应权限。