Discord.py在用户对消息做出反应后发送消息

Discord.py在用户对消息做出反应后发送消息,discord.py,Discord.py,我试图让我的discord机器人在特定消息中添加反应后立即发送消息 这是我的代码: @client.event async def on_raw_reaction_add(message, reaction): message_id = message.message_id channel_id = 830438815595364372 if message_id == 830439131083046952: if reaction.emoji == 'Y

我试图让我的discord机器人在特定消息中添加反应后立即发送消息

这是我的代码:

@client.event
async def on_raw_reaction_add(message, reaction):
    message_id = message.message_id
    channel_id = 830438815595364372
    if message_id == 830439131083046952:
        if reaction.emoji == 'Your code seems a bit messed up to me. You have to use 
payload
to get it working.

Have a look at the following code:

@client.event
async def on_raw_reaction_add(payload):
    # channel and message IDs should be integer:
    if payload.channel_id == ChannelID and payload.message_id == MessageID:
        if str(payload.emoji) == "YourReaction": # Use a string
            channel1 = client.get_channel(MessageChannel)
            await channel1.send("Test")
@client.event
原始反应添加时的异步定义(消息、反应):
message\u id=message.message\u id
通道id=830438815595364372
如果消息_id==83043913183046952:

如果reaction.emoji=='我觉得你的代码有点乱。您必须使用
有效负载
使其工作

查看以下代码:

@client.event
原始反应添加上的异步def(有效负载):
#通道和消息ID应为整数:
如果payload.channel\u id==ChannelID和payload.message\u id==MessageID:
如果str(payload.emoji)=“YourReaction”:#使用字符串
channel1=客户端获取通道(MessageChannel)
等待通道1.发送(“测试”)
我们做了什么?

  • 使用的
    有效载荷
  • 已定义通道和消息ID
  • 定义了反应后发送消息的通道

    • 我觉得你的代码有点乱。您必须使用
      有效负载
      使其工作

      查看以下代码:

      @client.event
      原始反应添加上的异步def(有效负载):
      #通道和消息ID应为整数:
      如果payload.channel\u id==ChannelID和payload.message\u id==MessageID:
      如果str(payload.emoji)=“YourReaction”:#使用字符串
      channel1=客户端获取通道(MessageChannel)
      等待通道1.发送(“测试”)
      
      我们做了什么?

      • 使用的
        有效载荷
      • 已定义通道和消息ID
      • 定义了反应后发送消息的通道
      请注意,只接受一个参数,
      有效负载
      payload
      参数是一个,它有几个解决此问题的关键属性:and

      RawReactionActionEvent
      对象的
      message\u id
      属性可以与目标消息id进行比较。
      RawReactionActionEvent.emoji
      是一个对象,它具有一个属性,返回自定义表情符号的名称或默认表情符号的unicode表示形式。无论是粘贴的表情符号副本还是表情符号的unicode表示形式,都可以将其与目标表情符号进行比较

      最后,有一个方法,该方法将目标通道ID作为其唯一参数并返回一个对象,该对象具有我们都知道和喜欢的
      send()
      方法

      @client.event
      原始反应添加上的异步def(有效负载):
      消息_id=83043913183046952
      通道id=830438815595364372
      如果payload.message\u id==message\u id和payload.emoji.name==”请注意,只接受一个参数,
      payload
      payload
      参数是一个,它有几个解决此问题的关键属性:和

      RawReactionActionEvent
      对象的
      message\u id
      属性可以与目标消息id进行比较。
      RawReactionActionEvent.emoji
      是一个对象,它有一个属性,返回自定义emoji的名称或默认emoji的unicode表示形式。这可以与目标emoji进行比较如果是粘贴的表情符号副本或表情符号的unicode表示形式,则使用以太符

      最后,有一个方法,该方法将目标通道ID作为其唯一参数并返回一个对象,该对象具有我们都知道和喜欢的
      send()
      方法

      @client.event
      原始反应添加上的异步def(有效负载):
      消息_id=83043913183046952
      通道id=830438815595364372
      
      如果payload.message\u id==message\u id和payload.emoji.name==“您可以使用
      payload.emoji.name
      而不是
      str(payload.emoji)
      。使用
      str
      只是一个较短的版本。我想这两个都很好。我认为在大多数情况下都是这样,但对于自定义表情符号,我认为使用
      str()
      将给出表情符号的雪花,而不是表情符号的名称。你可以使用
      payload.emoji.name
      而不是
      str(payload.emoji)
      。使用
      str
      只是一个较短的版本。我想两者都可以。我想在大多数情况下都可以,但是对于自定义表情符号,我认为使用
      str()
      将给出表情符号的雪花,而不是表情符号的名称。非常感谢您的回复。我曾经尝试过有效载荷(因为我用它来选择角色),但谷歌一直让我回到用户和反应。我已经尝试过你的解决方案,但由于某种原因,我仍然没有收到频道的回复。知道可能是什么问题吗?@Jacbob Lee(忘记了标签)所以,如果我读对了,没有消息被发送到
      channel\u id
      指定的频道,但是没有出现错误?你确定机器人可以看到发送消息的频道吗?嘿@Jacob Lee,看起来好像什么都没有发生(我发布了一份打印声明来检查我的终端)。我也尝试了不同的渠道。我发现了问题。我有另一个on_raw_reaction_add(用于角色选择)函数,显然,当在它下面添加emote时,我必须为回复键入另一段代码。谢谢你的帮助和回复!谢谢你的回复。我曾经尝试过有效载荷(因为我用它来选择角色),但谷歌一直让我回到用户和反应。我已经尝试过你的解决方案,但由于某种原因,我仍然没有收到频道的回复。知道可能是什么问题吗?@Jacbob Lee(忘记了标签)所以,如果我读对了,没有消息被发送到
      channel\u id
      指定的频道,但是没有出现错误?你确定机器人可以看到发送消息的频道吗?嘿@Jacob Lee,看起来好像什么都没有发生(我发布了一份打印声明来检查我的终端)。我也尝试过不同的频道,我发现