【问题标题】:Trying to make an command to give roles by reactions. - discord.js试图通过反应发出命令来赋予角色。 - 不和谐.js
【发布时间】:2020-11-25 00:56:30
【问题描述】:

这是我正在做的代码,但由于某种原因,该函数不正确,因为它不明白 mention 在最后是什么。

const { Client } = require("discord.js");

module.exports = {
    name: 'cargo',
    description: 'Give a role to an user by reaction',
    execute(message, args) {
        function getRoleFromMention(mention) {
            if (!mention)
                console.log('No role was passed');
        
            if (mention.startsWith('<@&') && mention.endsWith('>')) {
                mention = mention.slice(3, -1);
        
                console.log('\x1b[34m%s\x1b[0m', mention)
                return Client.roles.cache.get(mention);
            }
        }
        const messageId = args.slice(0, 1);
        const roleEmoji = args.slice(1, 2);
        const roleMention = args.slice(2, 3);
        //const roleGive = getRoleFromMention(`${roleMention}`);
        console.log('\x1b[35m%s\x1b[0m', 'messageId:', messageId, 'roleEmoji:', roleEmoji, 'roleMention', roleMention); // show each argument
        console.log(message.author.username, ':' ,message.content); // show message and the author
        console.log(getRoleFromMention(`${roleMention}`))
        message.channel.messages.fetch(`${messageId}`).then(msg => msg.react(`${roleEmoji}`));
        //GuildMemberRoleManager.member.add(`${roleGive}`)
    }
}

这是我每次使用命令时在终端上收到的内容。

messageId: [ '740313747872153660' ] roleEmoji: [ '�' ] roleMention [ '<@&609821930123427859>' ]
Sr_Aranha : qbcargo 740313747872153660 �  <@&609821930123427859>
609821930123427859
TypeError: Cannot read property 'cache' of undefined
    at getRoleFromMention (C:\Users\srara\Desktop\JavaScript\qbomBOT\src\commands\cargo.js:15:37)
    at Object.execute (C:\Users\srara\Desktop\JavaScript\qbomBOT\src\commands\cargo.js:25:21)
    at Client.<anonymous> (C:\Users\srara\Desktop\JavaScript\qbomBOT\src\index.js:36:17)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (C:\Users\srara\Desktop\JavaScript\qbomBOT\node_modules\Discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\srara\Desktop\JavaScript\qbomBOT\node_modules\Discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\srara\Desktop\JavaScript\qbomBOT\node_modules\Discord.js\src\client\websocket\WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (C:\Users\srara\Desktop\JavaScript\qbomBOT\node_modules\Discord.js\src\client\websocket\WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (C:\Users\srara\Desktop\JavaScript\qbomBOT\node_modules\Discord.js\src\client\websocket\WebSocketShard.js:293:10)
    at WebSocket.onMessage (C:\Users\srara\Desktop\JavaScript\qbomBOT\node_modules\ws\lib\event-target.js:125:16)

【问题讨论】:

    标签: javascript discord.js


    【解决方案1】:

    客户端没有任何角色属性。你需要获得公会。

    return Client.roles.cache.get(mention);
    

    return message.guild.roles.cache.get(mention);
    

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 1970-01-01
      • 2020-12-05
      • 2020-10-07
      • 2020-07-21
      • 2020-08-03
      • 2022-01-10
      • 1970-01-01
      • 2021-11-25
      相关资源
      最近更新 更多