Discord bot无法仅响应指定用户特定消息问题求助
问题排查与修复方案
- 核心错误1:
startswith是字符串内置方法,需要传入匹配前缀作为参数调用,你当前代码错误将方法对象直接与字符串'Yo'做相等判断,该判断永远返回False,触发条件实际永远不会生效。 - 核心错误2:如果你实际运行的代码中
#await message.channel.send(message.content)这行的注释被移除,那么所有非机器人自身发送的消息都会被原样转发,就会出现“无论发送什么内容bot都响应”的现象。 - 附加校验点:确认你填写的用户ID和你要匹配的目标用户ID完全一致,且discord.py版本中
message.author.id返回的是整数类型,避免字符串和整数比较不匹配的问题。
修复后的完整代码如下:
@client.event async def on_message(message): # 过滤机器人自身发送的消息 if message.author == client.user: return # 正确的触发条件写法:校验用户ID+消息前缀匹配 if message.author.id == 103001222035981612 and message.content.startswith('Yo'): await message.channel.send(f'Hello {message.author.name}') # 不需要原样转发所有消息就保持这行注释即可 # await message.channel.send(message.content) client.run(TOKEN)
内容的提问来源于stack exchange,提问作者Abel
相关产品推荐
相关产品推荐

