Задать вопрос
@askalidov

Как сделать проверку нажатия реакции, сравнивая айдишник сообщения?

У меня в коде есть функция 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'***```Перевод отменён!```***')
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы