如何正确解析我的 Discord 机器人中的标记用户?
How can I properly parse for a tagged user in my Discord bot?
我正在将个人资料卡添加到我的 Discord 机器人中,但我遇到了一个问题。当有人键入 !profile @user
时,我不确定如何正确解析 @user,以便机器人知道要查找哪个个人资料卡。
我首先解析 message.content,然后删除消息内容的前 9 个字符(始终为 !profile
),但消息内容的其余部分 returns user_id 看起来 <@289583108183948460>
而不是用户的区分。我试过使用 re.sub 删除特殊字符(@、> 和 <),如下所示:
a = str(message.content[9:])
removeSpecialChars = re.sub("[!@#$%^&*()[]{};:,./<>?\|`~-=_+]", " ", a)
print(removeSpecialChars)
但是当我只想要数字时,奇怪的字符仍然存在,所以我可以很容易地在数据库中搜索它。我确信有更好的方法可以做到这一点,但我想不通。
discord.py 的消息对象包含一个 Message.mentions
属性,因此您可以遍历 Member
的列表。以下是 async and rewrite.
的文档列表
有了这个,你可以简单地迭代提及:
for member in ctx.message.mentions:
# do stuff with member
你真正想要的
discord.py 允许您从带有 type hinting 的消息中获取 discord.Member
对象。只需将以下内容添加到命令
@bot.command()
async def profile(ctx, member: discord.Member=None):
member = member or ctx.message.author
我正在将个人资料卡添加到我的 Discord 机器人中,但我遇到了一个问题。当有人键入 !profile @user
时,我不确定如何正确解析 @user,以便机器人知道要查找哪个个人资料卡。
我首先解析 message.content,然后删除消息内容的前 9 个字符(始终为 !profile
),但消息内容的其余部分 returns user_id 看起来 <@289583108183948460>
而不是用户的区分。我试过使用 re.sub 删除特殊字符(@、> 和 <),如下所示:
a = str(message.content[9:])
removeSpecialChars = re.sub("[!@#$%^&*()[]{};:,./<>?\|`~-=_+]", " ", a)
print(removeSpecialChars)
但是当我只想要数字时,奇怪的字符仍然存在,所以我可以很容易地在数据库中搜索它。我确信有更好的方法可以做到这一点,但我想不通。
discord.py 的消息对象包含一个 Message.mentions
属性,因此您可以遍历 Member
的列表。以下是 async and rewrite.
有了这个,你可以简单地迭代提及:
for member in ctx.message.mentions:
# do stuff with member
你真正想要的
discord.py 允许您从带有 type hinting 的消息中获取 discord.Member
对象。只需将以下内容添加到命令
@bot.command()
async def profile(ctx, member: discord.Member=None):
member = member or ctx.message.author