Javascript arguments.shift()不是函数Discord.js

Javascript arguments.shift()不是函数Discord.js,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我正试图为某人制作一个不和谐的机器人,我一直在使用这个命令,giveroleone。尤其是参数.shift是其中的一部分 这是我的密码: client.on('message',message=>{ if(message.content.startsWith(`${prefix}giverole`){ 如果(!message.member.hasPermission(“管理员”)){ message.channel.send(“您的许可使用人的命令。”) 返回; } const targetUs

我正试图为某人制作一个不和谐的机器人,我一直在使用这个命令,
giverole
one。尤其是
参数.shift
是其中的一部分

这是我的密码:

client.on('message',message=>{
if(message.content.startsWith(`${prefix}giverole`){
如果(!message.member.hasPermission(“管理员”)){
message.channel.send(“您的许可使用人的命令。”)
返回;
}
const targetUser=message.indications.users.first()
如果(!targetUser){
message.reply('请指定要授予角色的人')
返回
}
参数shift()
常量roleName=arguments.join(“”)
const{guild}=消息
const role=guild.roles.cache.find((角色)=>{
return role.name==roleName
})
如果(!角色){
message.reply(`没有名为“${roleName}”的角色`
返回
}
const member=guild.members.cache.get(targetUser.id)
member.roles.add(角色)
reply(`该用户现在拥有“${roleName}”角色`)
}
}
我收到这个错误:

TypeError: arguments.shift is not a function

错误可能是参数没有传递到任何地方,但我不知道放在哪里。

您必须像这样定义
参数:

client.on('message',message=>{
让参数=message.content.substring(前缀.length).split(“”);
//代码的其余部分
})

您必须这样定义
参数

client.on('message',message=>{
让参数=message.content.substring(前缀.length).split(“”);
//代码的其余部分
})

您似乎从未定义过
参数(对于变量名来说,这并不是一个明智的选择,因为在正常函数中存在一个参数)

与从消息中获取自定义参数并按其名称搜索角色不同,您可以提及角色并通过使用
message.indications.roles
获取它们。这样,您也不必切碎和清理
message.content

client.on('message',异步(message)=>{
if(message.content.startsWith(`${prefix}giverole`){
如果(!message.member.hasPermission('ADMINISTRATOR')){
返回message.channel.send(
“你可以使用你的命令。”,
);
}
const user=message.indications.users.first();
const member=message.guild.member(用户);
const role=message.indications.roles.first();
如果(!成员){
返回消息。回复('请提及要扮演角色的人');
}
如果(!角色){
return message.reply(`请提及要添加到${member}的角色,`);
}
试一试{
等待成员.角色.添加(角色);
reply(`${member}现在有了“${role}”角色`);
}捕获(错误){
console.log(错误);
message.reply(`Role“${Role}”未添加到${member}.\n_${error}`);
}
}
});


PS:请确保将您的bot角色拖到服务器设置中所有其他角色之上,并为其授予
管理角色
权限,以避免
不一致错误:缺少权限

似乎您从未定义
参数
(无论如何,对于变量名来说,这不是一个明智的选择,因为在正常函数中有一个变量名)

与从消息中获取自定义参数并按其名称搜索角色不同,您可以提及角色并通过使用
message.indications.roles
获取它们。这样,您也不必切碎和清理
message.content

client.on('message',异步(message)=>{
if(message.content.startsWith(`${prefix}giverole`){
如果(!message.member.hasPermission('ADMINISTRATOR')){
返回message.channel.send(
“你可以使用你的命令。”,
);
}
const user=message.indications.users.first();
const member=message.guild.member(用户);
const role=message.indications.roles.first();
如果(!成员){
返回消息。回复('请提及要扮演角色的人');
}
如果(!角色){
return message.reply(`请提及要添加到${member}的角色,`);
}
试一试{
等待成员.角色.添加(角色);
reply(`${member}现在有了“${role}”角色`);
}捕获(错误){
console.log(错误);
message.reply(`Role“${Role}”未添加到${member}.\n_${error}`);
}
}
});


PS:请确保将您的bot角色拖到服务器设置中所有其他角色之上,并为其授予
管理角色
权限,以避免
不一致错误:缺少权限

从技术上讲,它可以工作,但不能将所有角色分开,我只想要:``角色`,但我得到:``某人角色``好的,您可以访问不同的pa吗rts是通过索引来实现的吗?比如参数[0]等等。它在技术上是可行的,但它并不能将所有的参数都分开,我只想要:``role``但我得到:````@someone role``那么你通过索引来访问不同的部分吗?比如参数[0]等等。嘿,Zariaa_uu两个人试图帮你回答下面的问题。你有机会去看看吗?他们说得通吗?如果答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经(足够)了帮助。也看到了吗?是的,很抱歉之前没有这么做,但我不在城里,没有上网。嘿,Zariaa_uu两个人试图帮你回答下面的问题。你有机会检查一下吗?它们有意义吗?如果答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就知道你得到了(足够的)帮助。也看到了吗?是的,很抱歉之前没有这么做,但我不在城里,没有上网。