【问题标题】:Command only with certain role [duplicate]仅具有特定角色的命令[重复]
【发布时间】:2019-04-30 11:05:24
【问题描述】:

首先:我对编码完全陌生,我所知道的只是在 Youtube Tuts 上阅读或观看。

我正在尝试为我的 Discord 服务器制作一个机器人。他的工作方式就像“如果你得到 10 分,你得到一个新角色”。

我昨天开始了,我已经卡住了。

这是我的代码

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”。
已经拥有该角色的人的部分还不起作用,但这不是我的问题。

我的问题是,我无法让机器人首先检查消息的作者是否具有称为“主人”的角色。

我尝试过这样的事情:

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

我真的不明白为什么这不起作用。

感谢您的帮助

【问题讨论】:

  • 首先,Java != JavaScript

标签: javascript discord.js


【解决方案1】:

您可以使用GuildMember.roles.has(id)。请注意,Map.has() 返回的是 Boolean,而不是 Promise

if (message.member.roles.has('0123456789')) // it has that role
else // it doesn't

【讨论】:

  • 感谢您的帮助。我的代码现在看起来像这样。 if(command === "padawan") { let Master = message.guild.roles.find("name", "Master"); if(message.member.roles.has(Master.id)) { if (user) {
猜你喜欢
  • 2018-11-03
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2021-01-19
相关资源
最近更新 更多