-3
votes

Si l'utilisateur réagit avec 😃, je souhaite que le bot modifie le message

quelque chose comme ça.

@client.event
async def on_reaction_add(reaction, user):
    a = await client.say("React to see help")
    if reaction.emoji == "😃":
        await client.edit_message(a, "Moderator commands")


1 commentaires

Veuillez éditer votre question afin que nous comprenions que vous utilisez discord.py pour créer un bot de discorde. En outre, fournissez un exemple de code de travail


3 Réponses :


1
votes

Vous devez envoyer un message lorsque le bot est disponible en ligne, puis surveiller ce message pour de nouvelles réactions. Le moyen le plus simple de faire est avec une boucle de fond à l'aide de Client.wait_for code> , au lieu de la On_reaction_Add code> événement. La fonction réaction_check code> est de faciliter la recherche des bonnes réactions.

from collections.abc import Sequence
from discord import Client

grin = "\N{GRINNING FACE}"

def make_sequence(seq):
    if seq is None:
        return ()
    if isinstance(seq, Sequence) and not isinstance(seq, str):
        return seq
    else:
        return (seq,)

def reaction_check(message=None, emoji=None, author=None, ignore_bot=True):
    message = make_sequence(message)
    message = tuple(m.id for m in message)
    emoji = make_sequence(emoji)
    author = make_sequence(author)
    def check(reaction, user):
        if ignore_bot and user.bot:
            return False
        if message and reaction.message.id not in message:
            return False
        if emoji and reaction.emoji not in emoji:
            return False
        if author and user not in author:
            return False
        return True
    return check

client = Client()

async def background_loop():
    await client.wait_until_ready()
    channel = client.get_channel(int(*SOME CHANNEL ID*))
    msg = await channel.send("React to see help")
    await msg.add_reaction(grin)
    while not client.is_closed:
        res = await client.wait_for('reaction_add', check=reaction_check(message=msg, emoji=grin))
        if res:  # not None
            await msg.edit(content="Moderator commands")

client.loop.create_task(background_loop())
client.run("TOKEN")


0 commentaires

0
votes

ou vous pouvez utiliser l'emballage discord_interactive_help , qui vous permet de Affichez une bande de pages et laissez votre utilisateur interagir avec ce manuel à travers des réactions .

Disclaimer: je suis l'auteur de discord_interactive_help .


0 commentaires

0
votes

Vous devriez être capable de détecter la réaction avec votre code actuel, votre problème serait votre modification.

channel = a.channel
msg_id = a.id

if reaction.emoji == "😃":
    msg = await channel.fetch_message(msg_id)
    await msg.edit(content = content)


0 commentaires