【问题标题】:How do you have a Discord bot remove a user reaction to a message in discord.py?你如何让 Discord 机器人删除用户对 discord.py 中消息的反应?
【发布时间】:2019-12-28 15:58:26
【问题描述】:

我正在使用 @client.eventasync def on_raw_reaction_add(payload): 来读取 Discord 反应事件。当我的代码中的一个标志失败时,我需要能够删除用户反应。我在文档中看到有await remove(user),但我认为我没有正确使用它。有什么建议吗?

【问题讨论】:

    标签: python python-3.x discord.py discord.py-rewrite


    【解决方案1】:

    您可以使用Message.remove_reactionReaction.remove

    Reaction 对象表示对 Message 的特定表情符号反应,因此如果您拥有的 Reaction 对象不是您要删除的表情符号反应,使用 Reaction.remove 将尝试删除错误的表情符号反应.

    【讨论】:

    • 当我尝试使用从 on_raw_reaction_add 有效负载中获得的 msg id 时,它告诉我“int”没有属性“remove_reaction”,而当我使用“Message”时,它告诉我 Message 不是t 定义了我得到的,这是我将简化的代码 '@client.event async def on_raw_reaction_add(payload) 。 . . elif 禁止 == 1: await Message.remove_reaction(payload.emoji.name , payload.user_id)'
    • 消息 ID 是整数,而不是 discord.Message 对象,所以它们当然不会有 remove_reaction 方法。您需要获取discord.Message 的实例并将其定义为Message,如果您想这样称呼它。您可以使用消息 ID 执行此操作,例如通过TextChannel.fetch_message。以后在寻求帮助时,您应该提供所有相关代码和完整的回溯。
    • 谢谢,我只是在你评论的时候发现了这一点,我也收到一个错误,它说我的 int 对象没有属性 id,即 payload.user_id,还有其他方法可以抓取吗用户 ID?
    • 同样,ID 是整数。这也包括用户 ID。您已经拥有用户 ID。这就是RawReactionActionEvent.user_id 是什么..
    • 正如the documentation for Message.remove_reaction 所说,通过的member 必须代表一个成员并满足Snowflake ABC。对于表示用户 ID 的整数,情况并非如此。
    猜你喜欢
    • 2021-11-28
    • 2022-01-05
    • 2020-08-24
    • 2020-11-07
    • 1970-01-01
    • 2020-03-13
    • 2019-09-26
    • 2021-12-11
    • 2018-08-16
    相关资源
    最近更新 更多