如何获取@everyone 角色ID?

Posted

技术标签:

【中文标题】如何获取@everyone 角色ID?【英文标题】:How to get @everyone role ID? 【发布时间】:2019-08-17 09:54:39 【问题描述】:

我需要获取@everyone 角色 ID 来为服务器成员创建私人聊天(我将限制除了这 2 个用户之外的其他用户阅读和发送消息)。怎么样?

我试着打字

\@Admin

以获取 Admin 的角色 ID 为例。 但后来我输入了

\@everyone

它会创建一条常规消息,提及服务器上的每个人(例如在聊天中输入@everyone)。没有身份证。

我如何获得@everyone 角色 ID?

【问题讨论】:

【参考方案1】:

everyone 角色的 ID 是公会 ID。 如果您尝试将<@&123123> 替换为您的公会ID,它将几乎标记每个人


更新:2020 年 4 月 10 日

现在提到大家,您只需发送字符串@everyone:message.channel.send("@everyone");


要获得所有人角色的 ID,您需要拥有 guild,您可以在以下活动中获得该 ID:messageguildCreate 等。 从那里:<something>.guild.roles.everyone,然后您应该能够使用<something>.guild.roles.everyone.id 获取 ID。

如果您在某个活动中无权访问公会,则可以通过其 ID 获取公会,例如: client.guilds.cache.get('guildID').roles.everyone.id,如果您知道它将在缓存中。如果你想安全,你可以这样做:

client.guilds.fetch('guildID').then(guild =>  
    let id = guild.roles.everyone.id;
    // do something with id

或等待:

let guild = await client.guilds.fetch('guildID');
let id = guild.roles.everyone.id;

【讨论】:

这样创建@@everyone 问题不是“如何提及每个人”。这是“如何获得每个人的角色 ID”。它并没有真正回答(我认为?) @JackRed 我现在用更多选项更新了我的答案 :) @André 是的,谢谢。然而它并没有真正的帮助。您提到的“guildID”与每个人的角色 ID 相同(这就是 Discord 的工作方式)。如果您激活开发模式并在服务器图标上右键单击 > 复制 ID,您将拥有与进入角色设置并复制每个人角色 ID 时相同的 ID。这也可以在写的时候检查,这将翻译成提到每个人的角色(并不完全有效,与其他角色相比,可能是因为它是一个特殊角色+@here的存在)跨度> 我的评论的 TL;DR 是,如果你有 GuildID,那么你就有了每个人的角色 ID,因为它是相同的【参考方案2】:

Discord.js

V12

guild 类有一个roles 属性,即RoleManager。 这位经理拥有everyone的财产:

公会的@everyone角色

你可以通过角色类的id属性来获取它的id:

client.on('message', (msg) => 
  console.log(msg.guild.roles.everyone.id);
);

V11

在 V11 中,guild 类具有 defaultRole 属性。

所以代码略有不同:

client.on('message', (msg) => 
  console.log(msg.guild.defaultRole.id);
);

不和谐

在 Discord 方面,激活开发选项后,您几乎可以右键单击所有内容以获取它的 ID。例如进入服务器设置,在角色中并右键单击一个角色,您应该有一个copy ID 选项。

【讨论】:

【参考方案3】:

需要获得@everyone 角色吗?

<guild>.roles.everyone

它将获得一个角色对象。您可以在Role Class 中查看

【讨论】:

以上是关于如何获取@everyone 角色ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure 角色中以编程方式获取订阅 ID?

如何获取用户在 MVC 5 中注册的角色的 ID

按 ID 获取 Discord 角色

如何获取所有角色及其相关权限

Discord.js v12 如何获取对特定消息做出反应的人的 id?

在jsp页面中如何获取到当前登录用户的角色id