Discordpy 从字符串中提及用户

Posted

技术标签:

【中文标题】Discordpy 从字符串中提及用户【英文标题】:Discordpy mention user from string 【发布时间】:2021-10-16 09:54:52 【问题描述】:

如何从用户字符串列表中添加@提及?我想通知那些选定的用户。

sample_text: @user#tag

这将是纯文本,无法提及。尝试遍历成员并将其保存为对象,但只返回机器人。

示例代码:

async def on_message(self, message):
(...)
            embed = discord.Embed(title=c.LFG_OVER, description="Party:", color=c.COLOUR_BANANA)
            embed.set_author(name=f"message.author.display_name", url="", icon_url=f"message.author.avatar_url")
            embed.set_thumbnail(url=c.LFG_TY)

            embed.add_field(name="_", value=f"This is text: list1[0]\nThis is text: list1[1]\nThis is text: list2[0]\nThis is text: list2[1]", inline=True)
            embed.add_field(name="_", value=f"This is text: list3[0]\nThis is text: dps[1]\nThis is text: list3[2]\nThis is text: list3[3]", inline=True)

            await message.channel.send(embed=embed)

【问题讨论】:

您需要他们的用户 ID。 【参考方案1】:

使用discord.utils.get,您可以从他们的姓名和# 中获取成员对象,然后使用member.mention 提及他们:

#members is your list of members (format is name#1111)
for str_member in members:
    member = discord.utils.get(message.guild.members, name=str_member[:-5], discriminator=str_member[-4:]) 
    #using member.mention you can mention the person now, or save the mention in a list or whatever you want to do

【讨论】:

执行message.guild.members 只会返回机器人本身。 [<Member id=0000000000 name='Name' discriminator='1068' bot=True nick=None guild=<Guild id=0000000000 name='Name' shard_id=None chunked=False member_count=30>>] 您是否启用了成员意图,如this 回答中所述?

以上是关于Discordpy 从字符串中提及用户的主要内容,如果未能解决你的问题,请参考以下文章

如果猜测错误,将用户与频道断开连接 DiscordPy

Discordpy 欢迎机器人

Discordpy Mod 日志命令

Twitter API 获得提及

有没有办法在不加入公会的情况下从提及中获取用户的 ID?

从 discord.py 中的提及中获取用户 ID