【问题标题】:How to send a message in an "async def on_raw_reaction_add" discord.py?如何在“async def on_raw_reaction_add”discord.py 中发送消息?
【发布时间】:2021-12-14 17:45:52
【问题描述】:
async def on_raw_reaction_add(self, payload: discord.RawReactionActionEvent):
      global verstuurd_id
      global game
      print(payload)
      #await message.channel.send('Er is een emoji toegevoegd')
      if payload.message_id == verstuurd_id and game == True and payload.user_id != self.user.id:
        print("Er is gereageerd")
        if payload.emoji.name =='➡':
          pass
          #await payload.channel_id.send('You answered right')
      else:
        print('Er is iets fout gegaan')

我想在 discord 频道中发送消息,但我无法在 async def on_raw_reaction_add 中发送消息。有人知道怎么做吗?

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    on_raw_reaction_add 事件中,您会收到一个discord.RawReactionActionEvent 对象。此对象没有可以为您提供通道对象的属性。但它确实有channel_id,您可以使用它来获取实际的discord.TextChannel 对象来发送您的消息。

    您还可以获得添加反应的用户的discord.Member 对象。

    您正试图在 int 上调用 send(),在这种情况下为 payload.channel_id。获取频道对象(因为您有频道 ID):

    channel = bot.get_channel(payload.channel_id)
    # Or
    channel = discord.utils.get(member.guild.text_channels, id=payload.channel_id)
    

    现在您可以通过在该对象上调用 send() 来发送消息:

     async def on_raw_reaction_add(self, payload: discord.RawReactionActionEvent):
          global verstuurd_id
          global game
          print(payload)
          if payload.message_id == verstuurd_id and game == True and payload.user_id != self.user.id:
            print("Er is gereageerd")
            if payload.emoji.name =='➡':
              channel = bot.get_channel(payload.channel_id)
              await channel.send('You answered right')
          else:
            print('Er is iets fout gegaan')
    

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 2020-10-15
      • 1970-01-01
      • 2021-03-11
      • 2021-07-08
      • 2020-10-01
      • 2022-08-06
      • 2021-10-15
      • 1970-01-01
      相关资源
      最近更新 更多