我试图在不使用消息的情况下获得角色,例如:
const Discord = require('discord.js');
const Bot = new Discord.Client();
const Role = Discord.roles.find('name,'Exemple')
Role.delete()
这可能吗?
答案 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 版本。