Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Discord.js中添加角色_Javascript_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript 在Discord.js中添加角色

Javascript 在Discord.js中添加角色,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我是JS的新手,我试图让我的机器人给特定的成员一个特定的角色 如果你能帮我,请帮我 守则: bot.on(“消息”(msg)=>{ 如果((msg.content==“!give”,角色,成员)) var role=msg.guild.roles.cache.find((r)=>{ 返回r.name==“convidado astolfofo”; }); var member=msg.indications.members.first(); member.roles.add(角色); 控制台日志

我是JS的新手,我试图让我的机器人给特定的成员一个特定的角色

如果你能帮我,请帮我

守则:

bot.on(“消息”(msg)=>{
如果((msg.content==“!give”,角色,成员))
var role=msg.guild.roles.cache.find((r)=>{
返回r.name==“convidado astolfofo”;
});
var member=msg.indications.members.first();
member.roles.add(角色);
控制台日志(成员);
console.log(角色);
});
我遇到的错误是:

(node:2364) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied roles is not a Role, Snowflake or Array or Collection of Roles or Snowflakes.

您似乎不正确地使用了
return
。试试这个:

bot.on(“消息”(msg)=>{
如果((msg.content==“!give”,角色,成员))
var role=msg.guild.roles.cache.find(r=>r.id==“”);
var member=msg.indications.members.first();
member.roles.add(角色);
console.log(member.username);
console.log(role.name);
});

我还更改了您的
console.log
语句,因为您的控制台可能会收到对象垃圾邮件

您的代码有几个错误。我不确定你想用
如果((msg.content==“!give”,role,member))
做什么--可能是检查消息是否以
开头!给出
,如果有角色和成员——但在JavaScript中不会这样工作。一旦定义了这些变量,就需要单独检查它们

如果您检查
msg.content==”!give“
,但您也希望该成员提及某个成员,则该结果永远不会为真。如果整个消息只是
!给出
,没有提到用户。如果有提到的用户,
msg.content
将超过
!给出
。尝试检查
消息.content
是否以
“!give”
开头

接下来,如果在if语句后面不使用大括号,则只有下一行在该语句中。因此,请尝试检查该命令是否为
!给出
,如果是,则搜索角色,但以下检查添加角色位置的行不在此语句中。这意味着,它会在每个传入的消息上运行。试着用大括号

检查权限并发送回复,让用户知道是否有遗漏,这也是一个好主意

查看下面的工作示例,我添加了一些注释以使其更易于理解:

bot.on('message',异步(msg)=>{
if(msg.content.startsWith(“!give”)){
//检查邮件作者是否具有添加角色的权限
如果(!msg.member.hasPermission('MANAGE_ROLES')){
return msg.reply('您需要'MANAGE_ROLES'权限才能添加角色');
}
//检查bot是否具有添加角色的权限
如果(!msg.guild.me.hasPermission('MANAGE_ROLES')){
return msg.reply('我没有'MANAGE_ROLES'添加角色的权限');
}
//检查是否有提及的成员
const member=msg.indications.members.first();
//如果没有,请发送答复
如果(!成员){
return msg.reply(“别忘了提到某人!”);
}
//寻找角色
//别忘了它是区分大小写的
constrole=msg.guild.roles.cache.find((r)=>r.name=='convidado astolfofo');
//检查角色是否存在
如果(!角色){
return msg.reply(“噢,我找不到角色‘convidado astolfof’”);
}
//尝试添加一个角色
试一试{
等待成员.角色.添加(角色);
msg.reply(`Role added to${member}`);
}捕获(错误){
console.log(错误);
msg.reply('Oops,未添加角色,出现错误');
}
}
});

谢谢你,伙计!但是它不工作:((节点:3540)未经处理的PromisejectionWarning:TypeError[无效类型]:提供的角色不是角色、雪花、数组或角色或雪花的集合。同样的错误啊,要添加角色,您需要角色的id,我将编辑我的帖子。非常感谢!这太完美了。现在我明白了,哈哈。您能告诉我如何搜索任何角色吗?没有id?
TypeError: Cannot read property 'add' of undefined discord.js