Wait_For_Reaction () несколько смайликов - PullRequest
0 голосов
/ 18 апреля 2019

Я ищу команду, в которой, если message.author помечает пользователя, бот дважды отреагирует на сообщение, а затем будет ждать, когда помеченный пользователь выберет ту или иную реакцию. Прямо сейчас все работает, кроме случаев, когда пользователь реагирует на тот или иной смайлик, он ничего не делает. Когда они реагируют на оба смайлика, он отправляет сообщение для reaction.

if message.content.lower().startswith('!marry'):
    user = message.mentions[0]
    if message.author == user:
        await client.send_message(message.channel, "{} you can't marry yourself dummy ?".format(message.author.mention))             
    else:
        if get_spouse(message.author) != "No One":
            await client.send_message(message.channel, "{}, you're already married to {} ?".format(message.author.mention, get_spouse(message.author)))
        else:
            if (get_spouse(user)) != "No One":
                await client.send_message(message.channel, "{} is already married. Get your own spouse. ?".format(user.mention))
            else:
                marriagemsg = await client.send_message(message.channel, "{} *has proposed to* {} ?".format(message.author.mention, user.mention))
                await client.add_reaction(marriagemsg, "✅")
                await client.add_reaction(marriagemsg, "❌")
                while True:
                    reaction = await client.wait_for_reaction(emoji="✅", message=marriagemsg, 
                                        check=lambda reaction, user: user == message.mentions[0])
                    reaction2 = await client.wait_for_reaction(emoji="❌", message=marriagemsg, 
                                        check=lambda reaction, user: user == message.mentions[0])
                    if reaction:
                        await client.send_message(message.channel, "{} **is now married to** {} ??".format(message.author.mention, reaction.user.mention))
                        add_spouse(message.author, user.name)
                        add_spouse(reaction.user, message.author.name)
                    else:
                        if reaction2:
                            await client.send_message(message.channel, "{} **rejects** {}**'s proposal** ✋?".format(reaction2.user.mention, message.author.mention)) 

1 Ответ

2 голосов
/ 18 апреля 2019

Множественная проверка wait_for_reaction, которую вы используете, вызывает это.Бот будет ждать, пока пользователь отреагирует с помощью ✅ на marriagemsg, и только затем проверяет, реагирует ли пользователь с помощью ❌.

Вместо использования нескольких проверок wait_for_reaction, просто используйте одну и заполните свои смайлики в списке,Вы также можете использовать elif вместо else: if.

if message.content.lower().startswith('!marry'):
    user = message.mentions[0]
    if message.author == user:
        await client.send_message(message.channel, "{} you can't marry yourself dummy ?".format(message.author.mention))             
    else:
        if get_spouse(message.author) != "No One":
            await client.send_message(message.channel, "{}, you're already married to {} ?".format(message.author.mention, get_spouse(message.author)))
        else:
            if (get_spouse(user)) != "No One":
                await client.send_message(message.channel, "{} is already married. Get your own spouse. ?".format(user.mention))
            else:
                marriagemsg = await client.send_message(message.channel, "{} *has proposed to* {} ?".format(message.author.mention, user.mention))
                await client.add_reaction(marriagemsg, "✅")
                await client.add_reaction(marriagemsg, "❌")
                answer = await client.wait_for_reaction(emoji=["✅", "❌"], message=marriagemsg, 
                                        check=lambda reaction, user: user == message.mentions[0])

                if answer.reaction.emoji == "✅":
                    await client.send_message(message.channel, "{} **is now married to** {} ??".format(message.author.mention, answer.user.mention))
                    add_spouse(message.author, user.name)
                    add_spouse(answer.user, message.author.name)
                elif answer.reaction.emoji == "❌":
                    await client.send_message(message.channel, "{} **rejects** {}**'s proposal** ✋?".format(answer.user.mention, message.author.mention))
...