#python #python-3.x #discord.py #discord.py-rewrite
#python #python-3.x #discord.py #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 с самым последним сообщением пользователя, но это вернуло ту же проблему. Любая помощь будет оценена!
Ответ №1:
mx == reaction.message
также должно быть частью инструкции return .
Исправлен код:
def check(reaction, user):
return user == ctx.author and str(reaction.emoji) in ["◀", "▶"] and mx == reaction.message
Комментарии:
1. Вы — абсолютный спаситель, большое вам спасибо!