在交互中添加对消息的反应
Add a reaction to a message in an interaction
我的 nextcord 机器人中有一个轮询命令。我想添加反应,但是当我尝试命令时,它给了我这个: https://imgur.com/a/p6s3yy5
。我该如何解决?
顺便说一句,这是我的命令:
@nextcord.slash_command(name="yes-no-poll", description="Crée un sondage à deux options", guild_ids=[server])
async def yesno(self, ctx: nextcord.Interaction, poll):
embed = nextcord.Embed(title=poll, color=nextcord.Color.blue())
vote = await ctx.response.send_message(embed=embed)
await vote.add_reaction("<:yes:914969003645091900>")
await vote.add_reaction("<:no:914969105482809355>")
请避免post将您的错误作为图片处理。请将它们直接粘贴到 post.
说明
至于手头的代码,InteractionResponse.send_message()
总是returnsNone
,不像abc.Messageable.send()
,returns一个nextcord.Message
。
当您尝试在 NoneType
上调用 add_reaction
时,这当然会引发异常。
要解决此问题,您可以在 Interaction.channel
中搜索包含与您刚刚发送的相同嵌入内容的消息,然后添加回应。
代码
@nextcord.slash_command(name="yes-no-poll", description="Crée un sondage à deux options", guild_ids=[703732969160048731])
async def yesno(self, ctx: nextcord.Interaction, poll):
embed = nextcord.Embed(title=poll, colour=nextcord.Colour.blue())
await ctx.response.send_message(embed=embed)
# Loop through channel history and pull the message that matches (should be first)
message: nextcord.Message
async for message in ctx.channel.history():
if not message.embeds:
continue
if message.embeds[0].title == embed.title and message.embeds[0].colour == embed.colour:
vote = message
break
else:
# something broke
return
await vote.add_reaction("<:yes:914969003645091900>")
await vote.add_reaction("<:no:914969105482809355>")
我的 nextcord 机器人中有一个轮询命令。我想添加反应,但是当我尝试命令时,它给了我这个: https://imgur.com/a/p6s3yy5
。我该如何解决?
顺便说一句,这是我的命令:
@nextcord.slash_command(name="yes-no-poll", description="Crée un sondage à deux options", guild_ids=[server])
async def yesno(self, ctx: nextcord.Interaction, poll):
embed = nextcord.Embed(title=poll, color=nextcord.Color.blue())
vote = await ctx.response.send_message(embed=embed)
await vote.add_reaction("<:yes:914969003645091900>")
await vote.add_reaction("<:no:914969105482809355>")
请避免post将您的错误作为图片处理。请将它们直接粘贴到 post.
说明
至于手头的代码,InteractionResponse.send_message()
总是returnsNone
,不像abc.Messageable.send()
,returns一个nextcord.Message
。
当您尝试在 NoneType
上调用 add_reaction
时,这当然会引发异常。
要解决此问题,您可以在 Interaction.channel
中搜索包含与您刚刚发送的相同嵌入内容的消息,然后添加回应。
代码
@nextcord.slash_command(name="yes-no-poll", description="Crée un sondage à deux options", guild_ids=[703732969160048731])
async def yesno(self, ctx: nextcord.Interaction, poll):
embed = nextcord.Embed(title=poll, colour=nextcord.Colour.blue())
await ctx.response.send_message(embed=embed)
# Loop through channel history and pull the message that matches (should be first)
message: nextcord.Message
async for message in ctx.channel.history():
if not message.embeds:
continue
if message.embeds[0].title == embed.title and message.embeds[0].colour == embed.colour:
vote = message
break
else:
# something broke
return
await vote.add_reaction("<:yes:914969003645091900>")
await vote.add_reaction("<:no:914969105482809355>")