我正在尝试让我的不和谐机器人在对特定消息添加反应后立即发送消息。
这是我的代码:
@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 == '?':
await channel.send('OK')
我不确定我做错了什么,当我对消息做出反应时,没有任何反应。 提前致谢。
L.
答案 0 :(得分:2)
我觉得你的代码有点乱。您必须使用 create table
才能使其正常工作。
看看下面的代码:
payload
我们做了什么?
@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")
答案 1 :(得分:1)
请注意,on_raw_reaction_add()
event reference 只接受一个参数 payload
。 payload
参数是一个 RawReactionActionEvent
object,它具有解决此问题的几个关键属性:message_id
和 emoji
。
message_id
对象的 RawReactionActionEvent
属性可以与目标消息 ID 进行比较。 RawReactionActionEvent.emoji
是一个 PartialEmoji
对象,它有一个属性 name
,它返回自定义表情符号的名称或默认表情符号的 unicode 表示。这可以与目标表情符号进行比较,无论是复制粘贴的表情符号还是表情符号的 Unicode 表示。
最后,Client
objects 有一个方法 fetch_channel
,它将目标频道 ID 作为其唯一参数并返回一个 GuildChannel
对象,该对象具有我们都知道的 send()
方法了解并热爱。
@client.event
async def on_raw_reaction_add(payload):
message_id = 830439131083046952
channel_id = 830438815595364372
if payload.message_id == message_id and payload.emoji.name == "?": # OR paylod.emoji.name == u"\U0001F44D"
channel = await client.fetch_channel(channel_id)
await channel.send("OK")