JS Discord Bot获得角色

时间:2018-01-17 11:43:44

标签: javascript bots discord discord.js

我试图在不使用消息的情况下获得角色,例如:

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

     Role.delete()

这可能吗?

5 个答案:

答案 0 :(得分:3)

我尝试使用发布的解决方案,但是client.guilds.get被识别为一个函数:

UnhandledPromiseRejectionWarning:TypeError:client.guilds.get不是Client上的函数。

检查client.guilds的内容时,我发现了“缓存”对象:

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

解决方案是:

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}`);
});

答案 1 :(得分:2)

是的,你可以,但你需要拥有你想从中获得角色的公会ID。此外,您应该将该部分放在ready事件中。

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}`);
})

答案 2 :(得分:0)

除非在服务器上进行了设置,否则行会不会起作用。人们一直在建议这样做,但是您必须已经在不和谐的服务器中建立了基础结构。

答案 3 :(得分:0)

在Discord.JS中使用Collection#find("key", "value")的方式已被弃用, 您应该改用Collection#find(Obj => Obj.key == "value")

答案 4 :(得分:0)

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

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