简体   繁体   中英

JS Discord Bot Get Role

I'm trying to get a role without using messages, like:

     const Discord = require('discord.js');
     const Bot = new Discord.Client();
     const Role = Discord.roles.find('name,'Exemple')

     Role.delete()

Is this possible to do that?

顺便说一下,不推荐使用 Discord.JS 中的Collection#find("key", "value")这种方式,您应该使用Collection#find(Obj => Obj.key == "value")代替。

Yes you can but you will need to have the guild id you want to get the role from. Also, you should put that part in the ready event.

const discord = require("discord.js");
const client = new discord.Client();

client.on("ready", () => {
    console.log("Bot online!");
    const guild = client.guilds.get("The_server_id");
    const role = guild.roles.find("name", "Your_role_name");

    console.log(`Found the role ${role.name}`);
})

I tried with the posted solution but client.guilds.get was not recognized as a function:

UnhandledPromiseRejectionWarning: TypeError: client.guilds.get is not a function at Client.

Checking the content of client.guilds I found 'cache' object:

GuildManager {
  cacheType: [Function: Collection],
  cache: Collection [Map] {
    '<discord server id>' => Guild {
      members: [GuildMemberManager],
      channels: [GuildChannelManager],
      (...)
     }
  }
}

The solution was:

const Discord = require('discord.js');
const client = new Discord.Client();

client.once('ready', () => {
    const myGuild = client.guilds.cache.get('<discord server id>');
    const myRole = myGuild.roles.cache.find(role => role.name === '<role name>');
    console.log(`Found the role ${myRole.name}`);
});

Guild doesn't work unless you have it set up on the server. People keep suggesting this but you have to already have infrastructure set up in your discord server.

const role = guild.roles.cache.get('role_id');

这似乎适用于最新的 API 版本。

To get an specific role i use this code. Replace SERVER_ID with your server id and ROLE_NAME with the name of the role

const guild = client.guilds.cache.get("SERVER_ID");
const role = guild.roles.cache.find((r) => r.name === "ROLE_NAME");

console.log(`Found the role ${role.name}`);
console.log(`Found the role ${role.id}`);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM