discord.py中按用户名判断消息作者并自动删除反应功能失效
问题原因及解决方法
你的判断条件永远不成立,因为reaction.message.author返回的是User/Member对象,不是字符串格式的「用户名#标签」。直接拿对象和字符串'sample#0000'做比较,结果必然是False,所以清除反应的逻辑根本没被触发。
正确的判断方式
有几种可行的写法:
1. 分别匹配用户名和标签(适合带#标签的旧账户)
@client.event async def on_reaction_add(reaction, user): author = reaction.message.author if author.name == 'sample' and author.discriminator == '0000': await reaction.message.clear_reactions()
2. 把用户对象转成字符串比较
@client.event async def on_reaction_add(reaction, user): if str(reaction.message.author) == 'sample#0000': await reaction.message.clear_reactions()
3. 用用户ID判断(最可靠,ID不会随用户名变更)
先获取目标用户的ID(右键用户头像可复制),替换成对应数字:
@client.event async def on_reaction_add(reaction, user): if reaction.message.author.id == 123456789012345678: # 替换成目标用户的ID await reaction.message.clear_reactions()
额外提醒
如果你的机器人用的是discord.py v2.x及以上版本,要确保已经开启message_content意图,否则可能无法正常获取消息相关属性。
内容的提问来源于stack exchange,提问作者Loodelin
相关产品推荐
相关产品推荐

