如何在 discord.py 中检查标记用户的 ID

How to check id of a tagged user in discord.py

嘿,所以我正在制作一个不和谐的机器人,它的前缀是“doge” 里面有一个命令叫做“doge roast” 但由于我没有经验,我只是使用

if message.content.startswith("doge roast") : print("<the roast>")

这不是正确的方法,但即使在用户被标记时仍然有效...

但现在我想过滤掉一些东西......比如如果有人标记我而不是烤我而不是打印其他东西

我尝试搜索,但很多人使用了 ctx,但我不明白如何在我的程序中实现它

我想要一种方法,不仅可以找出我的用户 ID,还可以找出所有标记的用户的用户 ID,如果有人也发布了使用该命令的屏幕截图或如何使用这些命令的步骤。

因此,如果您使用的是 on_message,您可以尝试这样的操作:

if message.content.startswith("doge roast"):
    if message.content.split(" ")[2].replace('<@','').replace('>','').replace('!','') == "YOUR ID":
        await message.channel.send("You can't roast this person!")
    else:
        await message.channel.send("<The roast>")

以上代码首先会检查您是否在使用 doge roast 命令。然后它将检查提及,并去除其中的所有字符,将提及变成用户 ID。这将允许它检查它是否试图烤你。如果他们提到的人的 userid 是你的,那么它会回复说“你不能烤这个人”。如果不是你,它会回复烤肉。

您可以通过阅读this tutorial

找到您的用户ID

获得用户 ID 后,将“您的 ID”替换为该 ID。

说明

您可以使用 mentions 属性.

访问 discord.Message 中的提及

列表存储在 mentions 属性 中,因此您可以使用 message.mentions[0].

访问标记的 discord.Member

代码

if message.content.startswith("doge roast"):
    if message.mentions[0].id == YOUR_ID:
        print("something else")
    else:
        print("<the roast>")

注意:如果使用 discord.ext.commands.Bot,您可以将 YOUR_ID 替换为 bot.owner_id

参考

Message.mentions

Member.id