javascript - arguments.shift() 不是函数,Discord.js
问题描述
我正在尝试为某人制作一个不和谐的机器人,并且有一个我被卡住的命令,就是那个giverole
。特别arguments.shift
是它的一部分。
这是我的代码:
client.on('message', message => {
if (message.content.startsWith(`${prefix}giverole`)) {
if (!message.member.hasPermission("ADMINISTRATOR")) {
message.channel.send("Vous n'avez pas la permission d'utiliser cette commande.")
return;
}
const targetUser = message.mentions.users.first()
if (!targetUser) {
message.reply('Please specify someone to give a role to.')
return
}
arguments.shift()
const roleName = arguments.join(' ')
const { guild } = message
const role = guild.roles.cache.find((role) => {
return role.name === roleName
})
if (!role) {
message.reply(`There is no role with the name "${roleName}"`)
return
}
const member = guild.members.cache.get(targetUser.id)
member.roles.add(role)
message.reply(`that user now has the "${roleName}" role`)
}
}
我收到这个错误:
TypeError: arguments.shift is not a function
错误可能是参数没有在任何地方传递,但我不知道将它放在哪里。
解决方案
似乎您从未定义过arguments
(无论如何,这对于变量名来说都不是明智的选择,因为普通函数中有一个arguments 对象)。
您可以提及角色并使用message.mentions.roles
. 这样您就不必切碎和清理它们message.content
。
client.on('message', async (message) => {
if (message.content.startsWith(`${prefix}giverole`)) {
if (!message.member.hasPermission('ADMINISTRATOR')) {
return message.channel.send(
"Vous n'avez pas la permission d'utiliser cette commande.",
);
}
const user = message.mentions.users.first();
const member = message.guild.member(user);
const role = message.mentions.roles.first();
if (!member) {
return message.reply('Please mention someone to give a role to.');
}
if (!role) {
return message.reply(`Please mention a role to add to ${member}.`);
}
try {
await member.roles.add(role);
message.reply(`${member} now has the "${role}" role`);
} catch (error) {
console.log(error);
message.reply(`Role "${role}" is not added to ${member}.\n_${error}_`);
}
}
});
PS:确保将您的机器人角色拖到服务器设置中的所有其他角色之上,并授予它Manage Roles
避免的权限DiscordAPIError: Missing Permissions
。
推荐阅读
- css - Bootstrap 4如何在容器流体内垂直对齐
- react-native - 仅使平面列表标题的一部分具有粘性
- android - CollapsingToolbarLayout中如何改变materialToolbar的颜色?
- filesystems - macFuse 需要 Mac OS 11+ 上的恢复模式
- react-native - 为什么 Metro Bundler 声称 app.json 不存在?
- python - Python,我希望用户输入文本文件
- html - “标记”类型上不存在属性“_popup”
' - xml - 这个带有 PI(处理指令)的 XML 有什么问题?
- pentaho - pentaho 依次执行多个sql脚本
- mysql - 使用多个 OR 运算符的 MySQL 查询建议