JS Discord 机器人获取角色
JS Discord Bot Get Role
我想在不使用消息的情况下获得一个角色,例如:
const Discord = require('discord.js');
const Bot = new Discord.Client();
const Role = Discord.roles.find('name,'Exemple')
Role.delete()
这样可以吗?
是的,你可以,但你需要有你想从中获得角色的公会 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}`);
})
除非您在服务器上设置公会,否则公会无法使用。人们一直建议这样做,但您必须已经在您的 discord 服务器中设置了基础设施。
顺便说一句,Discord.JS 中 Collection#find("key", "value")
的使用方式已被弃用,
您应该改用 Collection#find(Obj => Obj.key == "value")
。
我尝试使用已发布的解决方案,但 client.guilds.get
未被识别为函数:
UnhandledPromiseRejectionWarning: TypeError: client.guilds.get is not a function at Client.
检查 client.guilds
的内容我发现 'cache' 对象:
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}`);
});
const role = guild.roles.cache.get('role_id');
这似乎适用于最新的 API 版本。
为了获得特定角色,我使用此代码。
将 SERVER_ID 替换为您的服务器 ID,将 ROLE_NAME 替换为角色名称
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}`);
我想在不使用消息的情况下获得一个角色,例如:
const Discord = require('discord.js');
const Bot = new Discord.Client();
const Role = Discord.roles.find('name,'Exemple')
Role.delete()
这样可以吗?
是的,你可以,但你需要有你想从中获得角色的公会 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}`);
})
除非您在服务器上设置公会,否则公会无法使用。人们一直建议这样做,但您必须已经在您的 discord 服务器中设置了基础设施。
顺便说一句,Discord.JS 中 Collection#find("key", "value")
的使用方式已被弃用,
您应该改用 Collection#find(Obj => Obj.key == "value")
。
我尝试使用已发布的解决方案,但 client.guilds.get
未被识别为函数:
UnhandledPromiseRejectionWarning: TypeError: client.guilds.get is not a function at Client.
检查 client.guilds
的内容我发现 'cache' 对象:
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}`);
});
const role = guild.roles.cache.get('role_id');
这似乎适用于最新的 API 版本。
为了获得特定角色,我使用此代码。 将 SERVER_ID 替换为您的服务器 ID,将 ROLE_NAME 替换为角色名称
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}`);