Редактировать реакцию, редактировать только самую последнюю команду в discord.py - PullRequest
2 голосов
/ 06 августа 2020

По большей части это нормально, но как мне сделать так, чтобы он редактировал только последнее сообщение, отправленное пользователем? Если кто-то наберет одну и ту же команду дважды, а затем отреагирует на 2-е сообщение, он отредактирует оба сообщения, пока он находится в 60-секундном окне до истечения времени ожидания. Вот код:

        px = await ctx.send(embed=e)
        for name in reactions:
            emoji = get(ctx.guild.emojis, name=name)
            try: await px.add_reaction(emoji or name)
            except: return


        def check(reaction, user):
            return user == ctx.author and str(reaction.emoji) in reactions

        while True:
            try:
                reaction, user = await self.bot.wait_for("reaction_add", timeout=60, check=check)
                if str(reaction.emoji) == "right":
                    p += 1
                    # doing the command again but + 1 page
                    await px.edit(embed=e)
                elif str(reaction.emoji) == "left":
                    p -= 1
                    # doing the command again but - 1 page
                    await px.edit(embed=e)
                else:
                    await px.remove_reaction(reaction, user)
            except asyncio.TimeoutError:
                break

Я хочу, чтобы он редактировал только последнее использование команды этим пользователем. Спасибо.

1 Ответ

2 голосов
/ 06 августа 2020

На моем телефоне так сложно набрать. Но в контрольном добавлении

px.id == reaction.message.id

Px должен быть объект сообщения с идентификатором

. Это гарантирует, что при щелчке реакции на встраивании правильный обработчик получит ее. Вы сказали, что хотите, чтобы с этим справился только последний ... это не совсем так. Но любые реакции на последнее будут обрабатываться для последних, а любые реакции на более ранние будут обрабатываться более ранними обработчиками. Если в этом есть смысл.

...