Discord机器人初始化报错:BotBase.__init__缺失必填参数'intents'
解决方案
问题原因
Discord.py 2.0及以上版本强制要求传入intents参数,这是Discord官方的权限管控机制,用来限定机器人能接收的事件类型与数据范围,避免不必要的资源占用和权限滥用。
修复步骤
配置Intents参数
先在代码里初始化并配置intents,最简单的方式是用默认模板,再按需开启额外权限:import discord from discord.ext import commands # 初始化默认权限集合 intents = discord.Intents.default() # 若要处理消息类命令,必须开启消息内容权限 intents.message_content = True注意:除了代码里开启
message_content,还得去Discord开发者后台的Bot选项卡,找到「Privileged Gateway Intents」栏目,手动打开「Message Content Intent」开关,否则机器人收不到消息内容。修改Bot初始化代码
把原来的bot = commands.Bot(command_prefix='<')改成:bot = commands.Bot(command_prefix='<', intents=intents)
完整修复后的代码
import discord from discord.ext import commands intents = discord.Intents.default() intents.message_content = True bot = commands.Bot(command_prefix='<', intents=intents) @bot.event async def on_ready(): print("bot is running now!!!") bot.run("TOKEN")
额外提示
- 如果你的机器人不需要处理消息内容,可以不用开启
message_content,但涉及消息触发的命令必须开启该权限。 - 其他特殊需求(比如获取成员列表、服务器事件)可以在
intents里开启对应字段,比如intents.members = True,同时也要在开发者后台开启对应特权权限。
内容的提问来源于stack exchange,提问作者أحمد هباد
相关产品推荐
相关产品推荐

