仅具有特定角色的命令
Command only with certain role
首先:我对编码完全陌生,我所知道的只是在 Youtube Tuts 上阅读或观看。
我正在尝试为我的 Discord 服务器制作一个机器人。他工作起来就像 "If-you-get-10-points-you-get-a-new-role" 一样。
我昨天开始的,现在已经卡住了。
这是我的代码
const Discord = require('discord.js')
const fs = require('fs')
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'))
const prefix = '+';
var client = new Discord.Client()
client.on('ready', () => {
console.log(`Logged in as ${client.user.username}...`)
})
client.on('message', (message) => {
const user = message.mentions.users.first();
if (!message.content.startsWith(prefix)) return;
if (message.content.startsWith(prefix + 'padawan')) {
if (user) {
const member = message.guild.member(user);
if (member) {
member.addRole('517122270158782485').then(() => {
message.channel.send(` ${user}, wurde zum Padawan befördert`);
}).catch(err => {
message.channel.send(`${user}, ist bereits ein Padawan`);
console.error(err);
});
} else {
message.reply('Der User gehört nicht zu diesem Server');
}
} else {
message.reply('Bitte erwähne wer zum Padawan erhoben werden soll');
}
}
});
client.login(config.token);
代码有效……有点。我可以在我的 Discord 服务器上分配角色 "Padawan"。
已经担任该角色的人的部分还没有工作,但这不是我的问题。
我的问题是,我无法让机器人首先检查消息的作者是否具有名为 "Master" 的角色。
我试过这样的事情:
if (message.member.roles.has('517326538157326336').then(() => {
^
TypeError: message.member.roles.has(...).then is not a function
if(message.author.role.has('517326538157326336'))
^
TypeError: Cannot read property 'has' of undefined
我真的不明白为什么这不起作用。
感谢您的帮助
您可以使用 GuildMember.roles.has(id)
。请注意 Map.has()
returns 是 Boolean
,而不是 Promise
.
if (message.member.roles.has('0123456789')) // it has that role
else // it doesn't
首先:我对编码完全陌生,我所知道的只是在 Youtube Tuts 上阅读或观看。
我正在尝试为我的 Discord 服务器制作一个机器人。他工作起来就像 "If-you-get-10-points-you-get-a-new-role" 一样。
我昨天开始的,现在已经卡住了。
这是我的代码
const Discord = require('discord.js')
const fs = require('fs')
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'))
const prefix = '+';
var client = new Discord.Client()
client.on('ready', () => {
console.log(`Logged in as ${client.user.username}...`)
})
client.on('message', (message) => {
const user = message.mentions.users.first();
if (!message.content.startsWith(prefix)) return;
if (message.content.startsWith(prefix + 'padawan')) {
if (user) {
const member = message.guild.member(user);
if (member) {
member.addRole('517122270158782485').then(() => {
message.channel.send(` ${user}, wurde zum Padawan befördert`);
}).catch(err => {
message.channel.send(`${user}, ist bereits ein Padawan`);
console.error(err);
});
} else {
message.reply('Der User gehört nicht zu diesem Server');
}
} else {
message.reply('Bitte erwähne wer zum Padawan erhoben werden soll');
}
}
});
client.login(config.token);
代码有效……有点。我可以在我的 Discord 服务器上分配角色 "Padawan"。
已经担任该角色的人的部分还没有工作,但这不是我的问题。
我的问题是,我无法让机器人首先检查消息的作者是否具有名为 "Master" 的角色。
我试过这样的事情:
if (message.member.roles.has('517326538157326336').then(() => {
^
TypeError: message.member.roles.has(...).then is not a function
if(message.author.role.has('517326538157326336'))
^
TypeError: Cannot read property 'has' of undefined
我真的不明白为什么这不起作用。
感谢您的帮助
您可以使用 GuildMember.roles.has(id)
。请注意 Map.has()
returns 是 Boolean
,而不是 Promise
.
if (message.member.roles.has('0123456789')) // it has that role
else // it doesn't