当我尝试创建一个角色时,它给了我一个错误(discord.js)

Posted

技术标签:

【中文标题】当我尝试创建一个角色时,它给了我一个错误(discord.js)【英文标题】:When i try to create a role it gives me an error (discord.js) 【发布时间】:2021-05-23 08:21:26 【问题描述】:

所以我正在尝试发出使成员静音的命令。我希望我的机器人检查是否有已静音的角色名称,如果没有,则为已静音的成员创建一个角色。 这是代码:

module.exports = 
name: 'mute',
description: 'mutes a member',
execute(message, args, Discord, bot) 
    let mutedRole = message.guild.roles.cache.find(r => r.name === 'Muted')

    if(!mutedRole) 
        Guild.roles.create(
            data: 
                name: 'Muted',
                color: 'BLACK'
            
        )
    

错误是这样的:

C:\Users\ADRIAN\Desktop\ZerOne BOT\commands\mute.js:10
        Guild.roles.create(
                    ^

TypeError: 无法读取未定义的“创建”属性

【问题讨论】:

什么是Guild?它来自哪里? Discord 中的公会代表用户和频道的独立集合,在 UI 中通常被称为“服务器”。 我以为公会是一个中世纪的协会。 ???我问你的代码中有什么Guild。你是怎么定义的? 【参考方案1】:

我认为您不应该通过代码创建角色。我认为你应该在你的 Discord 服务器中创建一个角色(就像实际上只是制作一个没有代码的角色)。下载 ms 包。 (npm i ms) 然后,将此代码粘贴到:

const ms = require('ms');
module.exports = 
    name: "mute",
    description: "Mutes a member!",
    execute(message, args, Discord, bot)
        const target = message.mentions.users.first();
        if (target) 
            let mainRole = message.guild.roles.cache.find(role => role.name === 'Member');
            let muteRole = message.guild.roles.cache.find(role => role.name === 'Muted');

            let memberTarget = message.guild.members.cache.get(target.id);

            if (!args[1])
                memberTarget.roles.remove(mainRole.id);
                memberTarget.roles.add(muteRole.id);
                message.channel.send(`<@$memberTarget.user.id> has been muted.`);
                return;
            

            if (isNaN(args[1]) || !args[1] === ' ')
                message.channel.send("Please enter a real number! (If you have a space after the username and you don\'t want to set a time limit, delete the space. YOU HAVE TO.)");
                return;
            
            
            memberTarget.roles.remove(mainRole.id);
            memberTarget.roles.add(muteRole.id);
            message.channel.send(`<@$memberTarget.user.id> has been muted for $ms(ms(args[1]))`);

            setTimeout(function()
                memberTarget.roles.remove(muteRole.id);
                memberTarget.roles.add(mainRole.id);
            , ms(args[1]));
         else 
            message.channel.send("Can't find that member!");
        
    

感谢 CodeLyon 提供此代码。希望这对你有用!它甚至包括时间限制。 格式 1: !mute @User 格式 2:!mute @User 1000(1000 可以更改,只要确保它以毫秒为单位)

module.exports = 
    name: "unmute",
    description: "Unmutes a member!",
    execute(message, args, Discord, bot)
        const target = message.mentions.users.first();
        if (target) 
            let mainRole = message.guild.roles.cache.find(role => role.name === 'Member');
            let muteRole = message.guild.roles.cache.find(role => role.name === 'Muted');

            let memberTarget = message.guild.members.cache.get(target.id);

            memberTarget.roles.remove(muteRole.id);
            memberTarget.roles.add(mainRole.id);
            message.channel.send(`<@$memberTarget.user.id> has been unmuted.`);
         else 
            message.channel.send("Can't find that member!");
        
    

格式:!unmute @User

请记住,此代码仅在您具有角色 Member 和角色 Muted 时才有效。因此,在您的服务器中,将角色 Member 添加到所有人并添加角色 Muted(不是所有人)。

希望这行得通!如果有什么需要说明的,请在cmets中告诉我。

【讨论】:

以上是关于当我尝试创建一个角色时,它给了我一个错误(discord.js)的主要内容,如果未能解决你的问题,请参考以下文章

我尝试使用 passport.js 对用户进行身份验证,但它给了我一个错误**服务器响应状态为 400(错误请求)**

当我尝试运行我的 webpack-dev-server 时,它给了我以下错误,找不到该模块

如何让普罗米修斯 webflux r2dbc 在春天一起工作?当我尝试从服务运行实际 api 时,它给了我错误

我正在尝试附加 alamofire 循环并放入 sqlite db,但它给了我错误

在我通过 "npm i nodemon" 安装 nodemon 后,当我尝试通过 "nodemon server.js" 运行它时,它给了我这个错误。我该怎么办

我正在尝试通过批处理文件打开 Jmeter,但它给了我一个 Windows 错误