【发布时间】:2019-02-04 20:57:20
【问题描述】:
我试图让当用户发布命令时,他们能够随意在角色之间交换。这些角色只是我为其制作的服务器的颜色。有问题的部分是“var args”部分之前的第一部分。基本上,找到用户当前所在的所有角色并在继续添加新角色之前将其删除的部分就是问题所在。
我让机器人开始添加角色。然后我知道我需要删除所有旧角色,以便新颜色(可能在层次结构中较低)可能不会出现。
下面代码的错误是“(node:181764) UnhandledPromiseRejectionWarning: ReferenceError: r is not defined。”我从 anidiotsguide 中拿走了那部分。我正在学习js。认为这个小项目很容易让我对 discord.js 有一点经验。抱歉,如果我看起来像一个完整的新手。我是。大声笑提前感谢帮助。
bot.on('message', async (message) => {
if(message.content.toLowerCase().startsWith("!colorme"))
if(message.member.roles.some(r => ["blue", "red", "yellow"].includes(r.name)))
await(message.member.removeRole(r.name));
{
var args = message.content.toLowerCase().split(" ");
console.log(args);
if(args[1] === "blue")
{
var role = message.guild.roles.find('name', 'blue');
console.log("Role found!");
message.member.addRole(role.id);
message.channel.send('Role successfully added!');
}
else if(args[1] === 'red')
{
addUserRole('red', message);
message.channel.send('Role successfully added!');
}
else if(args[1] === 'yellow')
{
addUserRole('yellow', message);
message.channel.send('Role successfully added!');
}
};
});
function addUserRole(roleName, message)
{
var role = message.guild.roles.find('name', roleName);
message.member.addRole(role.id);
return;
}
【问题讨论】:
-
message.member.roles的示例是什么样的?您的message.member.roles.some(r => ["blue", "red", "yellow"].includes(r.name))调用应该适用于字符串数组 -
我认为它也应该可以工作,但它一直告诉我 r 需要定义,但我什至不确定它需要定义为什么......试图成为的角色发现是各种颜色。我希望机器人从本质上为用户重置角色,然后应用新角色。我知道当它正在寻找它要删除的某个角色时我会如何定义它,但是这个服务器有 26 个不同的颜色角色。我只想让它查看用户当前拥有的角色,将其删除,然后添加新角色。 anidiotsguide 没有详细说明 r 对于这个用途应该是什么,所以我有点迷茫。
标签: javascript node.js bots roles discord.js