You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:54:59