Я впервые задаю вопрос здесь, так что я могу запутаться в некоторых областях.
Итак, у меня есть бот-робот, и я хотел, чтобы эта команда имела 3 реакции, чтобы человек мог сказать, что делать. Здесь речь идет о сборе денег, повышении дохода или увеличении максимальной мощности их «компании».
После прочтения документации API у меня сначала было 3 функции проверки для проверки каждой реакции, например, этой:
(stuff)
message = await ctx.send(embed=embed)
await message.add_reaction("1️⃣")
await message.add_reaction("2️⃣")
await message.add_reaction("3️⃣")
def check1(reaction, user):
return user == ctx.message.author and str(reaction.emoji) == "1️⃣"
try:
reaction, user = await client.wait_for("reaction_add", timeout = 30.0, check = check1)
except asyncio.TimeoutError:
print("Timeout")
else:
(code to collect money)
Но потом я понял, что он будет проверять их по одному, поэтому вам придется подождать, пока 1-й тайм-аут, прежде чем он проверит 2-й. Поэтому, подумав, я придумал следующее:
(stuff)
message = await ctx.send(embed=embed)
await message.add_reaction("1️⃣")
await message.add_reaction("2️⃣")
await message.add_reaction("3️⃣")
def check(reaction, user):
return user == ctx.message.author and user != "Robofriend#7565" and str(reaction.emoji) == "1️⃣" or "2️⃣" or "3️⃣"
try:
reaction, user = await client.wait_for("reaction_add", timeout = 30.0, check = check)
except asyncio.TimeoutError:
print("Timeout")
else:
if str(reaction.emoji) == "1️⃣":
(code to collect money)
Я был удивлен, обнаружив, что здесь уже было дано ответное сообщение при переполнении стека так же, как я, но по какой-то причине у моего есть проблема. Когда я запускаю команду, проверка немедленно возвращает True, потому что она проверяет свою собственную реакцию ... Я знаю это, потому что я проверила, заставив распечатать пользователя на функции проверки.
Любая помощь приветствуется!