javascript - Discord.js 静音命令和创建 muterole 不起作用并给出错误
问题描述
我正在尝试创建静音命令。如果Muted
未创建角色,我希望机器人自动创建一个并覆盖每个频道权限,以便具有该角色的用户无法发送消息。
我的代码:
bot.on('message', (message) => {
const args = message.content.substring(PREFIX.length).split(' ');
switch (args[0]) {
case 'mute':
const person = message.guild.member(
message.mentions.users.first() && message.guild.members.fetch(args[1])
);
if (!person) return message.reply("Couldn't find that member!");
if (person.hasPermission('MANAGE_MESSAGES'))
return message.reply("You don't have permissions to mute members!");
const muterole = message.guild.roles.fetch(
(role) => role.name === 'Muted'
);
if (!muterole) {
muterole = message.guild.roles.create(
(name = 'Muted'),
(color = 0x000000),
Permissions('VIEW_CHANNEL')
);
message.channel.updateOverwrite(muterole, { SEND_MESSAGES: false });
}
const time = args[2];
if (!time)
return message.reply('How many time do you want him to be quiet?');
person.roles.add(muterole);
message.channel.send(`@${person.id} has been muted for ${ms(ms(time))}`);
setTimeout(function () {
person.roles.remove(muterole);
}, ms(time));
}
});
我的错误:
(node:2780) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body
user_id: Value "<@!402128830472650752>" is not snowflake.
解决方案
在这条线上:
const person = message.guild.member(
message.mentions.users.first() && message.guild.members.fetch(args[1])
);
使用message.guild.members.cache.get
代替message.guild.members.fetch
推荐阅读
- java - 如何参考页面对象模型中的元素定位元素
- node.js - i18next-http-middleware - removeLngFromUrl 是否已被删除?
- java - 从对象列表中的元素调用类中的方法
- python - 通用工业协议,Python 脚本失败
- permissions - rabbitmq set_permission 命令如何使用我们的输入
- python - 如何从 sklearn 编码/缩放管道中获取 DF?
- reactjs - 单击弹出窗口时如何保持反应模式打开?
- sql - SQL JOIN 仅当
- python - Django创建超级用户错误:AttributeError:'ProfileManager'对象没有属性'create_superuser'
- database - 从 API 中提取数据并在处理后将其存储在数据库中