当我尝试创建一个角色时,它给了我一个错误(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" 运行它时,它给了我这个错误。我该怎么办