用Python开发Discord机器人:提及消息代码缩进错误求助
排查Discord机器人代码的缩进错误问题
问题描述
我正在用Python开发Discord机器人,尝试实现提及消息功能,编写了如下代码:
@client.event async def ze_message(msg): bot = f'<@{client.user.id}>' if message.content == bot: await message.channel.send("If you need any help type .help")
运行后出现错误:
if message.content == bot: IndentationError: unexpected indent
错误原因及修复方案
- 缩进不规范:Python对缩进要求严格,
if语句的缩进级别必须和上方的变量定义保持一致,你这里的if缩进过多,导致语法报错。 - 事件函数名错误:Discord.py的消息监听事件固定函数名为
on_message,而非ze_message,否则客户端无法识别该事件。 - 参数名不匹配:函数定义的参数是
msg,但代码中使用了message,会触发NameError,需要统一参数名。 - 代码块逻辑缺失:
if语句后没有对应的缩进代码块,原本的await语句需要嵌套在if块内,才能实现“被提及才发送提示”的逻辑。
修正后的代码:
@client.event async def on_message(message): bot_mention = f'<@{client.user.id}>' if message.content == bot_mention: await message.channel.send("If you need any help type .help") # 必须添加该行,否则默认命令处理会被覆盖 await client.process_commands(message)
内容的提问来源于stack exchange,提问作者ccxlv
相关产品推荐
相关产品推荐

