获取函数中的信息以在另一个函数DISCORD.PY中使用

2024-04-25 02:29:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码有点问题,我没有找到任何解决方案

我为我的discord bot编写了一个代码:

@client.event
async def on_message(message):
        if message.content.startswith("!init"):
                if message.content.split()[1] == 'règles':
                        id_channel = 893442599019511829
                        embed = discord.Embed(title = 'Création bot', description = "par Archi's modo")
                        embed.add_field(name="Règlement de la LSPD", value="En cliquant sur l'icône ✅ vous reconnaissez avoir blablabla,...")
                        mess = await client.get_channel(id_channel).send(embed=embed)
                        await mess.add_reaction('✅')

@client.event
async def on_raw_reaction_add(payload):
    id_channel = 893442599019511829
    id_message = ?????
    role_a_donner =  "zabloublou"
    message_id = payload.message_id
    member = payload.member
    if message_id == id_message:
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
 
        if payload.emoji.name == '✅': 
            role = discord.utils.get(guild.roles, name=str(role_a_donner))
        else:
            role = discord.utils.get(guild.role, name=payload.emoji.name)
 
        if role is not None:
            if member is not None:
                await member.add_roles(role)
                channel = client.get_channel(id_channel)
                await channel.send(member.mention)

我不知道如何获取机器人发送的消息的id,以便在我的函数中使用它

有人能帮我吗


1条回答
网友
1楼 · 发布于 2024-04-25 02:29:50

你应该考虑使用^ {CD1>}来代替这种用法。你的方法主要用于反应角色。 下面是从discord.py docs for wait_for抓取的等待反应示例:

@client.event
async def on_message(message):
    if message.content.startswith('$thumb'):
        channel = message.channel
        await channel.send('Send me that 👍 reaction, mate')

        def check(reaction, user):
            return user == message.author and str(reaction.emoji) == '👍'

        try:
            reaction, user = await client.wait_for('reaction_add', timeout=60.0, check=check)
        except asyncio.TimeoutError:
            await channel.send('👎')
        else:
            await channel.send('👍')

相关问题 更多 >