在 discord.js 中创建一个用于从数组中查找和终止角色的 for 循环
Posted
技术标签:
【中文标题】在 discord.js 中创建一个用于从数组中查找和终止角色的 for 循环【英文标题】:Creating a for loop for finding and terminating roles from an array in discord.js 【发布时间】:2021-06-26 11:01:44 【问题描述】:当我使用命令 .red 时,它从角色 ID 数组中为 perp 提供一个角色,即这里的 xarr,现在我想获取它的值以创建一个 for 循环来检查 ID 并删除角色,以便用户只剩下一个角色。
我的主要目标是让一个机器人使用命令 .x 赋予角色 x,然后命令 .y 赋予角色 y 从用户中删除 x 和其他,同时对其他命令 .z、角色 z 和其他执行此操作分别是变量
这是我到目前为止想出的
const Discord = require ('discord.js');
const client = new Discord.Client();
client.on('ready', () =>
console.log(`Logged in as $client.user.tag!`);
);
client.on('message', (message) =>
const xarr = ["774301199067250738","826413888157384724"];
if(message.content.startsWith("test"))
message.reply('test')
if(message.content.startsWith(".red"))
try
message.member.roles.add(xarr[0])
for( let x;
x < message.member.roles.cache.size;
x++ )
console.log(xarr[x])
if (message.member.roles.cache.has(xarr[x])) message.member.roles.remove(xarr[x])
catch(e)
message.reply(e)
else
if(message.content.startsWith(".p"))
message.member.roles.add(xarr[1])
for( let x;
x < message.member.roles.cache.size;
x++ )
console.log(xarr[x])
if (message.member.roles.cache.has(xarr[x])) message.member.roles.remove(xarr[x])
)
我不知道如何为这种情况创建适当的 for 循环。
还有其他方法可以实现我的目标吗?
【问题讨论】:
如果我理解正确,您希望遍历所有具有角色 x 的用户并从中删除角色。对吗? 我想删除角色 x 并分配 y 然后分配 z 删除 y 等等,考虑到我们可以通过命令来完成 【参考方案1】:好的,我相信我明白你在说什么。
如果我理解得很好,您想创建一个命令,为成员添加角色并从他那里删除您选择的不同角色。
如果是这样,我们可以简单地创建一个接受两个参数的函数(例如,将它们称为 x
和 y
),然后我们可以简单地添加和删除这些角色。
const addAndRemoveRoles = (x /* the role we'd like to add */, y /* the role we'd like to remove */) =>
const member = message
if (!member.roles.cache.has(x)) member.roles.add(x)
if (members.roles.cache.has(y)) member.roles.remove(y)
// Testing this with the command '.x' that would give the member the x role and remove the y role
if (message.content.startsWith('.x')
const xRole = message.guild.roles.cache.get('...')
const yRole = message.guild.roles.cache.get('...')
addAndRemoveRoles(xRole, yRole) // Calling our function with the roles
【讨论】:
正确,我正在尝试实现类似的目标虽然我想将它与多个角色一起使用,例如:角色 x、y 和 z,让我们说更多abc 用户在其中指定的命令之后必须只有一个角色,在这种情况下该函数将如何工作? 在这种情况下,您可能希望接受一组角色 ID 作为参数,并创建一个.forEach()
迭代器来遍历它们并执行您希望对每个角色执行的操作的 ID。以上是关于在 discord.js 中创建一个用于从数组中查找和终止角色的 for 循环的主要内容,如果未能解决你的问题,请参考以下文章
在 discord.js 和 bot.on('guildMemberAdd', async newMember => 中创建欢迎消息正在创建错误
如何在 index.js [机器人的启动文件] 中创建一个 discord.js 命令,该命令在发送包含“hi”的消息时删除该消息