You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启动Discord.py机器人遭遇Intents错误,寻求解决方案

Discord.py Intents问题排查与修复

问题说明

三个多月未编码,启动Discord.py机器人时遭遇Intents相关错误,无法正常运行机器人。错误核心为Discord网关要求显式声明所需的Intents权限,当前代码未配置相关参数,且未在开发者门户启用特权Intents。

代码问题分析

当前机器人初始化代码未指定intents参数,Discord.py v1.5+版本默认仅启用基础Intents,无法获取消息内容、成员列表等敏感数据,触发权限错误。此外代码缺少os模块导入,会导致TOKEN读取失败。

修复步骤

1. 在Discord开发者门户启用特权Intents

打开Discord开发者门户,进入你的机器人应用页面,切换到「Bot」标签页,在「Privileged Gateway Intents」区域,开启「Server Members Intent」和「Message Content Intent」开关并保存设置。

2. 修改机器人代码

补充缺失的导入

添加os和discord模块的导入:

import os
import discord

配置Intents并初始化Bot

修改Bot初始化代码,添加Intents配置:

# 创建Intents实例,启用所需权限
intents = discord.Intents.default()
intents.message_content = True  # 启用消息内容读取权限(处理命令必备)
intents.members = True  # 若需要成员相关功能,启用此权限

client = commands.Bot(command_prefix='!',
                      case_insensitive=True,
                      owner_ids=(Id place holder1, id placeholder2),
                      intents=intents)  # 传入Intents参数

完整修正后的代码

import os
import discord
import datetime
import traceback
import math
from datetime import datetime
from discord.ext.commands.cooldowns import BucketType
from discord.ext.commands import CommandOnCooldown, errors, clean_content, guild_only
from discord.ext import commands, tasks
from random import choice, randint
from colorama import Fore
import keep_alive
from discord.ext.commands import has_permissions, MissingPermissions, CheckFailure

keep_alive.keep_alive()

# 配置Intents
intents = discord.Intents.default()
intents.message_content = True
intents.members = True

client = commands.Bot(command_prefix='!',
                      case_insensitive=True,
                      owner_ids=(Id place holder1, id placeholder2),
                      intents=intents)
client.remove_command("help")
dev_ids = [id placeholder3]

def date(target, clock=True):
    """ Clock format using datetime.strftime() """
    if not clock:
        return target.strftime("%d %B %Y")
    return target.strftime("%d %B %Y, %H:%M")

def traceback_maker(err, advance: bool = True):
    _traceback = ''.join(traceback.format_tb(err.__traceback__))
    error = ('```py\n{1}{0}: {2}\n```').format(type(err).__name__, _traceback, err)
    return error if advance else f"{type(err).__name__}: {err}"

@client.command()
async def test(ctx):
    await ctx.send("OMG!!! THIS IS A TEST !!!")

TOKEN = os.environ.get("TOKEN")

if TOKEN:
    print('Get real')
else:
    print("Looks like you're not the owner dumb dumb")

client.run(TOKEN)

关键说明

  • message_content Intents是处理文本命令的必要权限,必须在开发者门户和代码中都启用
  • 若机器人不需要成员相关功能(如欢迎新成员),可移除intents.members = True,但仍需保证message_content启用
  • 确保开发者门户中机器人的特权Intents开关已开启,否则代码配置也无法生效

内容的提问来源于stack exchange,提问作者Oreo Senpai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:10:23