【问题标题】:When i try to create a role it gives me an error (discord.js)当我尝试创建一个角色时,它给了我一个错误(discord.js)
【发布时间】:2023-04-06 20:50:01
【问题描述】:

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

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。你是怎么定义的?

标签: discord.js


【解决方案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中告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2018-12-12
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多