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

Discord Client初始化缺intents参数报错,机器人无法上线如何解决?

解决Discord机器人的Intents错误与在线状态问题

问题核心

你遇到两个关键问题:

  • Client.__init__() missing 1 required keyword-only argument: 'intents':Discord.py 2.0+版本强制要求指定Intents(意图),用来管控机器人可接收的事件与数据权限。
  • 机器人无法显示在线:代码错误地将client.run(token)放在on_ready事件函数内部,而on_ready是机器人启动成功后才会触发的回调,这导致启动命令永远无法执行,机器人根本未启动。

修复方案

1. 正确配置Intents

创建Intents对象并启用必要权限,基础功能可先启用默认意图,若需要读取消息内容需额外开启对应权限:

# 创建默认意图对象
intents = discord.Intents.default()
# 开启读取消息内容的权限(需在Discord开发者后台同步开启该权限)
intents.message_content = True
# 用配置好的intents初始化Client
client = discord.Client(intents=intents)

注意:message_content权限需要在Discord开发者平台的机器人页面,找到「Privileged Gateway Intents」板块,开启「Message Content Intent」开关,否则机器人无法读取消息内容。

2. 修正client.run()的位置

client.run(token)是启动机器人的核心命令,必须放在事件函数定义之后、run_flea函数的末尾,不能嵌套在on_ready内部。

完整修复代码

# imports
import discord  # importing discord
import responses  # importing responses.py file

async def send_message(message, user_message, is_private):
    try:
        response = responses.response_handle(user_message)
        await message.author.send(response) if is_private else await message.channel.send(response)
    except Exception as e:
        print(e)

def run_flea():
    token = 'my token'
    # 配置Intents
    intents = discord.Intents.default()
    intents.message_content = True  # 按需开启,需同步开发者后台设置
    client = discord.Client(intents=intents)

    @client.event
    async def on_ready():
        print(f'{client.user} is now running')

    # 启动机器人的命令放在最后
    client.run(token)

额外检查项

  • 确认机器人token输入正确,无拼写错误或泄露。
  • 已在Discord开发者后台将机器人设置为「Public」,且已通过正确的邀请链接将机器人添加到目标服务器(邀请链接需包含bot权限)。
  • 查看控制台输出,排查是否有token无效、权限不足等其他报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:22:06