我已经写了一个命令。当您执行此命令时,漫游器会将消息发送到特定通道。他对此消息添加了反应(顺便说一下)。到目前为止。但是现在,当有人单击此响应时,我希望该机器人做出响应。在这种情况下,他应该将消息发送到特定频道。但这是行不通的。也没有错误代码,这意味着它可以工作,只有他不发送消息。
@bot.command()
async def buy(ctx, choice):
channel = bot.get_channel(705836078082424914)
user = ctx.message.author
vcrole1 = get(user.guild.roles, id=703562188224331777)
messagechannel = ctx.message.channel.id
if ctx.message.channel.id == 705146663135871106:
if choice == '1':
if any(role.id == 703562188224331777 for role in ctx.message.author.roles):
await user.remove_roles(vcrole1)
await ctx.send(
"not important message")
messtag1 = await channel.send('not important')
await messtag1.delete(delay=None)
embed = discord.Embed(color=0xe02522, title='not important title', description=
'not important description')
embed.set_footer(text='not important text')
embed.timestamp = datetime.datetime.utcnow()
mess1 = await channel.send(embed=embed)
await mess1.add_reaction('<a:check:674039577882918931>')
def check(reaction, user):
return reaction.message == mess1 and str(reaction.emoji) == '<a:check:674039577882918931>'
await bot.wait_for('reaction_add', check=check)
channeldone = bot.get_channel(705836078082424914)
await channeldone.send('test')
没有错误消息。
答案 0 :(得分:0)
您的reaction.message == mess1
条件似乎正在返回False
,对于这种情况的发生原因,我无法缩小范围,但是如果这样做,我会对其进行编辑。
克服此问题的一种方法是评估消息的ID:
return reaction.message.id == mess1.id and str(reaction.emoji) == '<a:check:674039577882918931>'
当机器人做出反应时,这将评估为True
,因此,我建议添加另一个条件来检查用户是否做出了反应,如果那是您希望用户执行的操作:
return .... and user == ctx.author
参考: