Discord Bot 角色提及

Som*_*ame 6 python discord discord.py

我正在为我的服务器制作简单的 Discord 机器人,因为一个机器人的一部分不起作用。但是,该机器人需要从一个角色标记人员(假设该角色是“主持人”)。我希望它从主持人角色中标记每个人,就像@Moderator。这是我的代码(我使用的是 Python 3.6):

if message.content.startswith('!startbot'):
    msg = '@Moderator, (some message after this)'.format(message)
Run Code Online (Sandbox Code Playgroud)

但是,“@Moderator”实际上并没有从主持人角色中标记任何人。它只是像所有其他消息一样的空白文本。但是,当我作为来自 Discord 服务器类型 @Moderator 的真实人物时,它会带来红色(我设置的)并标记为主持人。

有人可以帮我解决这个问题吗?

小智 22

Discord 中的角色提及是这样触发的:

<@&ROLE_ID>
Run Code Online (Sandbox Code Playgroud)

其中 ROLE_ID 是您要提及的角色的 ID。获取版主角色的 ID,相应地将其添加到字符串中,机器人将像您从 Discord 客户端一样提及该角色。

此方法也适用于 Webhook。


pkq*_*xdd 6

假设您正在使用当前的稳定版本discord.py

根据文档,角色对象有一个名为 的方法mention。所以你需要做的就是

msg = '{} ...'.format(role.mention) 
Run Code Online (Sandbox Code Playgroud)

要获取角色对象,您可能需要迭代服务器的可用角色并找到您正在寻找的角色对象


Des*_*taq 5

在嵌入中提及需要特殊格式。最简单的方法是查阅下表:

类型 结构 例子
用户 <@USER_ID> <@80351110224678912>
用户(昵称) <@!USER_ID> <@!80351110224678912>
渠道 <#CHANNEL_ID> <#103735883630395392>
角色 <@&ROLE_ID> <@&165511591545143296>
自定义表情符号 <:NAME:ID> <:mmLol:216154654256398347>
自定义表情符号(动画) <:a:NAME:ID> <a:b1nzy:392938283556143104>

取自Discord 文档