Discord.py在用户对消息做出反应后发送消息
我试图让我的discord机器人在特定消息中添加反应后立即发送消息 这是我的代码: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
@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,看起来好像什么都没有发生(我发布了一份打印声明来检查我的终端)。我也尝试过不同的频道,我发现