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
相关产品推荐
相关产品推荐

