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

Discord Bot报错:Client.__init__缺少必填关键字参数'intents'求助

Discord机器人报错:TypeError: Client.__init__() missing 1 required keyword-only argument: 'intents' 解决方法

问题原因

这是因为discord.py(你导入的discord库)在v2.0版本后强制要求声明网关意图(Intents)。Discord官方为提升平台安全性和性能,要求所有机器人必须明确指定需要接收的事件类型,旧版本的discord.py不需要显式配置这一参数,所以你的代码之前能正常运行,库更新后就触发了这个错误。

修复方案

1. 修改代码添加Intents配置

需要在实例化discord.Client前创建并配置Intents对象,开启机器人所需的权限,具体修改后的代码如下:

import discord
import os
from dotenv import load_dotenv
from neuralintents import GenericAssistant


chatbot = GenericAssistant('intents.json')
chatbot.train_model()
chatbot.save_model()

# 新增:配置机器人需要的网关意图
intents = discord.Intents.default()
intents.message_content = True  # 必须开启,否则机器人无法读取消息内容

# 实例化Client时传入intents参数
client = discord.Client(intents=intents)

load_dotenv()
TOKEN = os.getenv('TOKEN')
# 建议移除硬编码的TOKEN,直接使用环境变量,避免泄露
# TOKEN = "my token"

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith("!"):
        # 修正切片逻辑:[1:]才能获取!之后的完整命令,之前的[2:]会丢失第一个字符
        response = chatbot.request(message.content[1:])
        await message.channel.send(response)

client.run(TOKEN)

2. 在Discord开发者后台开启对应权限

除了代码修改,你还需要手动在Discord开发者平台操作:

  • 找到你的机器人应用,进入"Bot"页面
  • 下滑到"Privileged Gateway Intents"区域
  • 开启"Message Content Intent"开关并保存设置

额外提示

  • 不要硬编码机器人TOKEN,始终使用环境变量管理,避免TOKEN泄露导致机器人被滥用
  • 原代码中message.content[2:]存在逻辑错误,若输入!hello,[2:]会得到ello,改用[1:]才能获取!之后的完整命令内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:40:23