跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Discord 机器人创建与配置完整指南

详细记录了在 Discord 开发者门户创建应用、配置 Bot 用户及网关意图的全过程。重点涵盖了 Token 的安全管理、OAuth2 邀请链接生成以及服务器权限设置。通过 Python 脚本接入并验证消息接收功能,确保 Bot 能正常处理文本与附件,同时规避了常见的 403 权限错误与限流风险。

佛系玩家发布于 2026/3/29更新于 2026/10/2483 浏览

概述

在 Discord 上部署一个 Bot 并不复杂,但涉及到的权限和意图(Intents)设置容易踩坑。本文将带你从开发者后台开始,一步步完成应用的创建、Bot 用户的配置、Token 管理以及最终的代码接入测试。

1. 创建应用与 Bot 用户

首先访问 Discord 开发者门户。点击 New Application,输入名称(例如 MyForwarderBot),确认创建。

进入应用详情页后,选择左侧的 Bot 标签页:

  • 点击 Add Bot 并确认 Yes, do it。
  • 此时 Bot 用户已生成,你可以修改头像、用户名等信息。

2. 关键配置:网关意图与 Token

这一步至关重要,直接决定 Bot 能否收到消息。

开启 Privileged Gateway Intents

在 Bot 页面往下滚动,找到 Privileged Gateway Intents 区域:

  • 务必打开 Message Content Intent。如果不启用,SDK 将无法读取普通消息文本。
  • 若需获取成员列表或在线状态,按需开启 Server Members Intent 或 Presence Intent。

注意:如果你的 Bot 计划加入超过 100 个服务器,部分特权意图可能需要通过 Discord 的审核验证。

获取并保护 Token

在 Bot 页面中,点击 Reset Token 或 Copy 获取 Bot Token(格式类似 Bot XXXXXXXXX...)。

  • 安全提示:切勿将 Token 硬编码到代码库中。建议使用环境变量或 .env 文件管理,并确保该文件未被提交至 Git。
  • 如果怀疑 Token 泄露,立即在同一页面点击 Regenerate 重置。

3. 邀请链接与服务器权限

要让 Bot 进入你的服务器,需要生成 OAuth2 邀请链接。

  1. 在左侧菜单选择 OAuth2 → URL Generator。
  2. Scopes:勾选 bot(如需支持斜杠命令 /,同时勾选 applications.commands)。
  3. Bot Permissions:勾选所需权限,建议至少包含:
    • View Channels (查看频道)
    • Read Message History (读取历史消息)
    • Send Messages (发送消息)
    • Embed Links (嵌入链接)
    • Attach Files (上传附件)
  4. 复制底部生成的 URL,在浏览器打开并选择目标服务器进行授权。

服务器端检查:

  • 进入服务器角色设置,确保 Bot 的角色拥有 View Channels 和 Read Message History 权限。
  • 在特定频道的权限覆盖中,也要确认允许读取消息。

4. 代码接入示例

准备好环境后,我们可以用 Python 快速验证连接。这里以 discord.py 为例,展示如何接收消息并处理附件。

import discord
from dotenv import load_dotenv
import os

# 加载环境变量中的 Token
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')

intents = discord.Intents.default()
intents.message_content = True  # 必须开启此意图才能读取内容

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'Bot {client.user} 已上线!')

@client.event
async def on_message(message):
    # 忽略 Bot 自己的消息
    if message.author == client.user:
        return
    
    # 简单响应逻辑
    if message.content.startswith('!hello'):
        await message.channel.send('Hello there!')
    
    # 如果有附件,打印文件名
    if message.attachments:
        for attachment in message.attachments:
            print(f'收到附件:{attachment.filename}')

if __name__ == '__main__':
    client.run(TOKEN)

运行脚本后,观察控制台输出。如果看到 Bot ... 已上线!,说明连接成功。尝试在 Discord 发送消息,检查是否触发相应事件。

5. 常见问题排查

  • 读不到 message.content:双重检查开发者面板是否开启了 Message Content Intent,且代码中 intents.message_content = True 已生效。
  • 403 权限错误:确认 Bot 在服务器的角色/频道中有 View Channel 和 Read Message History 权限,且 OAuth2 页面勾选了正确权限。
  • API 限流:生产环境中请做好日志记录、错误重试和速率限制处理,避免频繁请求导致 Discord API 暂时封禁。
  • 邀请失败:发起邀请的用户必须在目标服务器拥有'管理服务器'或相应的邀请权限。

目录

  1. 概述
  2. 1. 创建应用与 Bot 用户
  3. 2. 关键配置:网关意图与 Token
  4. 开启 Privileged Gateway Intents
  5. 获取并保护 Token
  6. 3. 邀请链接与服务器权限
  7. 4. 代码接入示例
  8. 加载环境变量中的 Token
  9. 5. 常见问题排查

更多推荐文章

查看全部
  • 为什么 Java Lambda 和匿名内部类不能修改外部变量?final 与等效 final 解析
  • FlowMiner:基于流关联挖掘的加密流量分类模型
  • Spatial Joy 2025 全球 AR&AI 赛事:资源、玩法与避坑指南
  • 哈希表原理与 C++ 实战实现
  • 机器人产业发展:政策、技术与市场三位一体驱动
  • GLM-4.5 深度技术解析:智谱 AI 全能开源基座模型
  • AI 时代产品经理核心技能与未来发展趋势
  • OpenClaw v2026.3.8 全平台部署教程
  • Linux 系统编程:线程互斥原理与实战
  • DeepSeek-R1 技术解析:训练流程与架构设计详解
  • WebMCP:浏览器原生 AI 交互新范式
  • 网络安全从业人员画像调研:年龄、地域与职业特质分析
  • 用 Selenium 写一个淘宝购物车定时结算脚本
  • Java 网络编程与网络通信基础
  • Java 线程与锁:JLS 第 17 章核心机制解析
  • Python 深度学习:TensorFlow 核心概念与实战指南
  • Whisper.cpp 语音识别快速上手指南
  • B-树原理及 Java 模拟实现详解
  • 前端大数据导出优化:解决 Chrome 内存崩溃的实战方案
  • 通义万相 2.1 API 调用指南:Python 实现图像与文本生成

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online