首页 > 解决方案 > 如何将 ID 更改为 Ping(PyCharm,Python 3.9)

问题描述

我已经发出了这个狙击命令(来自 Stackoverflow 问题),但是当机器人回答时,标题显示已删除消息的作者的 ID,而不是 ping 或名称。我该如何改变它?

代码:

snipe_message_content = None
snipe_message_author = None
snipe_message_id = None

@bot.event
async def on_message_delete(message):

    global snipe_message_content
    global snipe_message_author
    global snipe_message_id

    snipe_message_content = message.content
    snipe_message_author = message.author.id
    snipe_message_id = message.id
    await asyncio.sleep(60)

    if message.id == snipe_message_id:
        snipe_message_author = None
        snipe_message_content = None
        snipe_message_id = None

@bot.command()
async def snipe(message):
    if snipe_message_content is None:
        await message.channel.send("Theres nothing to snipe.")
    else:
        embed = discord.Embed(description=f"{snipe_message_content}")
        embed.set_footer(text=f"Asked by {message.author.name}#{message.author.discriminator}", icon_url=message.author.avatar_url)
        embed.set_author(name=f"<@{snipe_message_author}>")
        await message.channel.send(embed=embed)
        return

标签: pythondiscord.pypython-3.9

解决方案


不幸的是,您无法在author嵌入部分中 ping 用户。但是,您可以说出他们的名字,这就是我们要做的。

作者姓名

获取作者姓名就像将snipe_message_author = message.author.id(获取 ID)更改为snipe_message_author = message.author.name.

显示作者姓名

要以良好的格式显示作者姓名,请从显示姓名的位置删除“<@ >”。

代码

@client.event
async def on_message_delete(message):

    global snipe_message_content
    global snipe_message_author
    global snipe_message_id

    snipe_message_content = message.content
    snipe_message_author = message.author.name
    snipe_message_id = message.id
    await asyncio.sleep(60)

    if message.id == snipe_message_id:
        snipe_message_author = None
        snipe_message_content = None
        snipe_message_id = None

@client.command()
async def snipe(message):
    if snipe_message_content is None:
        await message.channel.send("Theres nothing to snipe.")
    else:
        embed = discord.Embed(description=f"{snipe_message_content}")
        embed.set_footer(text=f"Asked by {message.author.name}#{message.author.discriminator}", icon_url=message.author.avatar_url)
        embed.set_author(name=f"{snipe_message_author}")
        await message.channel.send(embed=embed)
        return

输出

在此处输入图像描述

编辑

不小心泄露了我的不和谐名称和鉴别器,将鉴别器更改为随机整数。代码仍然有效。


推荐阅读