Как заставить моего бота отвечать только на реакцию на конкретное сообщение? | discord.py

Я пытаюсь реализовать бота для друга, в котором команда info будет отображать информацию о пользователе на одной встраиваемой странице, а следующая будет отображать любые символы, которыми владеет пользователь (прочтите через gspread).

mx = await ctx.send(embed=contents[0])   
  await mx.add_reaction("◀")
  await mx.add_reaction("▶")

  def check(reaction, user):
    return user == ctx.author and str(reaction.emoji) in ["◀", "▶"]

  while True:
    try:
      reaction, user = await client.wait_for("reaction_add", timeout=20, check=check)
      if str(reaction.emoji) == "▶" and cur_page != pages:
        cur_page += 1
        await mx.edit(embed=contents[cur_page - 1])
        await mx.remove_reaction(reaction, user)
      elif str(reaction.emoji) == "◀" and cur_page > 1:
        cur_page -= 1
        await mx.edit(embed=contents[cur_page - 1])
        await mx.remove_reaction(reaction, user)
      else:
        await mx.remove_reaction(reaction, user)
    except asyncio.TimeoutError:
      await mx.clear_reaction("◀")
      await mx.clear_reaction("▶")
      break 

Проблема в том, что всякий раз, когда пользователь отправляет более одной информационной команды при реакции, это приводит к редактированию всех его сообщений, которые все еще активны, а не только того, на которое они реагируют. Я также пробовал:

def check(reaction, user):
    return user == ctx.author and str(reaction.emoji) in ["◀", "▶"]
    mx == reaction.message

Но это не устранило проблему. Я также попробовал сбросить .json и заменить mx.id самым последним сообщением пользователя, но это вернуло ту же проблему. Любая помощь будет оценена по достоинству!

См. также:  Проверка даты на основе массива Laravel after_or_equal несколько дат?
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Joey

    mx == reaction.message также должен быть частью оператора возврата.

    Фиксированный код:

    def check(reaction, user):
        return user == ctx.author and str(reaction.emoji) in ["◀", "▶"] and mx == reaction.message
    

    Вы настоящий спасатель, большое вам спасибо! person Joey; 01.12.2020

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: