У меня в коде есть функция pay, отправляющая деньги участнику сервера. Чтобы подтвердить платёж необходимо нажать на соответствующую реакцию, которая заранее ставится ботом. Реализована проверка на то, добавил ли эту реакцию автор или другой человек, и соответственно на реакцию. Но есть одна проблема, если, допустим, отправить 2 команды pay, и нажать на реакцию на одном из сообщений - код автоматически сработает и на втором. Можно ли как-то это исправить?
@commands.command()
async def pay(self, ctx, member: discord.Member, amount: int):
if member == ctx.author:
await ctx.send(f'***```Ошибка - перевод самому себе запрещён!```***')
return
else:
pass
confirm = await ctx.send(
embed=discord.Embed(
title=f'{ctx.author.name}, Вы точно хотите перевести деньги {member} в количестве {amount} $ ?',
timestamp=ctx.message.created_at)
)
message_id = confirm.id
accept = '✅'
decline = '❌'
await confirm.add_reaction(accept)
await confirm.add_reaction(decline)
valid_reactions = ['✅', '❌']
def check(reaction, user):
return user == ctx.author and str(reaction.emoji) in valid_reactions
reaction, user = await self.bot.wait_for('reaction_add', timeout=60.0, check=check)
if str(reaction.emoji) == accept:
# тут рабочий код
return await ctx.send(f'***```Успешно!```***')
# так как реакции всего 2, если код выше ничего не возвращает, идём дальше
await ctx.send(f'***```Перевод отменён!```***')