Discord.js 赋予角色的命令
Discord.js command that gives a role
所以我正在尝试创建一个命令,您可以在其中键入 $test
,它会为您提供一个 "Test" 角色。这是我当前的代码,但我不断收到错误消息:"Cannot read property 'addRole' of undefined"
const Discord = require("discord.js");
const { send } = require("process");
const { clear } = require("console");
const client = new Discord.Client();
var prefix = "$";
client.login("token");
//TEST COMMAND
client.on("message", message => {
if (message.content.startsWith(prefix + "test")) {
message.channel.send("You have been given `Need to be tested` role! You will be tested shortly!")
client.channels.get("701547440310059059").send(` please test ${message.author}!`)
const member = message.mentions.members.first();
let testRole = message.guild.roles.find(role => role.id == "609021049375293460")
member.addRole(testRole)
}})
client.on('ready',()=>{
console.log(`[READY] Logged in as ${client.user.tag}! ID: ${client.user.id}`);
let statuses = [
" status "
]
setInterval(function(){
let status = statuses[Math.floor(Math.random() * statuses.length)];
client.user.setActivity(status, {type:"WATCHING"})
}, 3000) //Seconds to Random
});
请告诉我如何轻松地做到这一点。
在discord.jsv12中,GuildMember没有功能.addRole
,需要使用GuildMemberRoleManager's.add
,从服务器获取角色时还需要添加 .cache
,如下所示:
const member = message.mentions.members.first();
let testRole = message.guild.roles.cache.find(role => role.id == "609021049375293460")
member.roles.add(testRole)
好的,您遇到错误 Cannot read property 'addRole' of undefined
。
这意味着成员变量未定义,这可能是您没有提及成员造成的。
在这一行中,你输入了const member = message.mentions.members.first();
,这意味着当你运行这个命令时,你必须提到要添加角色的人。
希望对您有所帮助。
在最新版本的discord.js中你可以试试下面的代码:
// Where '799617378904178698' is your role id
message.guild.roles.fetch('799617378904178698')
.then(role => {
console.log(`The role color is: ${role.color}`);
console.log(`The role name is: ${role.name}`);
let member = message.mentions.members.first();
member.roles.add(role).catch(console.error);
})
.catch(console.error);
在您尝试添加某些 角色时有效。你应该这样称呼它:
(prefix)commandName @member
找到另一种解决方案,以防您想将任何角色赋予任何用户(机器人除外)
main.js(或 index.js 无论你有什么):
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '+';
const fs = require("fs");
client.commands = new Discord.Collection()
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.once('ready', () => {
console.log('Bot is online');
});
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
console.log(args);
const command = args.shift().toLowerCase();
if (command == 'giveany') {
const role = args[1].slice(3, args[1].length - 1);
client.commands.get('giveany').execute(message, args, role);
}
});
client.login('token');
giveany.js :
module.exports = {
name: 'giveany',
description: 'adds any role to a member',
execute(message, args, role) {
console.log(role);
message.guild.roles.fetch(role)
.then(r => {
console.log(`The role color is: ${r.color}`);
console.log(`The role name is: ${r.name}`);
let member = message.mentions.members.first();
if (member != undefined) {
console.log('member=' + member);
member.roles.add(r).catch(console.error);
} else {
message.channel.send('You cannot give a role to a user that is either bot or undefined');
}
}).catch( (error) => {
console.error(error);
message.channel.send('Could not find given role: ' + args[1]);
});
}
}
呼叫:+giveany @Username @Role
所以我正在尝试创建一个命令,您可以在其中键入 $test
,它会为您提供一个 "Test" 角色。这是我当前的代码,但我不断收到错误消息:"Cannot read property 'addRole' of undefined"
const Discord = require("discord.js");
const { send } = require("process");
const { clear } = require("console");
const client = new Discord.Client();
var prefix = "$";
client.login("token");
//TEST COMMAND
client.on("message", message => {
if (message.content.startsWith(prefix + "test")) {
message.channel.send("You have been given `Need to be tested` role! You will be tested shortly!")
client.channels.get("701547440310059059").send(` please test ${message.author}!`)
const member = message.mentions.members.first();
let testRole = message.guild.roles.find(role => role.id == "609021049375293460")
member.addRole(testRole)
}})
client.on('ready',()=>{
console.log(`[READY] Logged in as ${client.user.tag}! ID: ${client.user.id}`);
let statuses = [
" status "
]
setInterval(function(){
let status = statuses[Math.floor(Math.random() * statuses.length)];
client.user.setActivity(status, {type:"WATCHING"})
}, 3000) //Seconds to Random
});
请告诉我如何轻松地做到这一点。
在discord.jsv12中,GuildMember没有功能.addRole
,需要使用GuildMemberRoleManager's.add
,从服务器获取角色时还需要添加 .cache
,如下所示:
const member = message.mentions.members.first();
let testRole = message.guild.roles.cache.find(role => role.id == "609021049375293460")
member.roles.add(testRole)
好的,您遇到错误 Cannot read property 'addRole' of undefined
。
这意味着成员变量未定义,这可能是您没有提及成员造成的。
在这一行中,你输入了const member = message.mentions.members.first();
,这意味着当你运行这个命令时,你必须提到要添加角色的人。
希望对您有所帮助。
在最新版本的discord.js中你可以试试下面的代码:
// Where '799617378904178698' is your role id
message.guild.roles.fetch('799617378904178698')
.then(role => {
console.log(`The role color is: ${role.color}`);
console.log(`The role name is: ${role.name}`);
let member = message.mentions.members.first();
member.roles.add(role).catch(console.error);
})
.catch(console.error);
在您尝试添加某些 角色时有效。你应该这样称呼它:
(prefix)commandName @member
找到另一种解决方案,以防您想将任何角色赋予任何用户(机器人除外)
main.js(或 index.js 无论你有什么):
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '+';
const fs = require("fs");
client.commands = new Discord.Collection()
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
client.once('ready', () => {
console.log('Bot is online');
});
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
console.log(args);
const command = args.shift().toLowerCase();
if (command == 'giveany') {
const role = args[1].slice(3, args[1].length - 1);
client.commands.get('giveany').execute(message, args, role);
}
});
client.login('token');
giveany.js :
module.exports = {
name: 'giveany',
description: 'adds any role to a member',
execute(message, args, role) {
console.log(role);
message.guild.roles.fetch(role)
.then(r => {
console.log(`The role color is: ${r.color}`);
console.log(`The role name is: ${r.name}`);
let member = message.mentions.members.first();
if (member != undefined) {
console.log('member=' + member);
member.roles.add(r).catch(console.error);
} else {
message.channel.send('You cannot give a role to a user that is either bot or undefined');
}
}).catch( (error) => {
console.error(error);
message.channel.send('Could not find given role: ' + args[1]);
});
}
}
呼叫:+giveany @Username @Role