在 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】:

好的,我相信我明白你在说什么。

如果我理解得很好,您想创建一个命令,为成员添加角色并从他那里删除您选择的不同角色。

如果是这样,我们可以简单地创建一个接受两个参数的函数(例如,将它们称为 xy),然后我们可以简单地添加和删除这些角色。

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 中创建 case 语句

在 discord.js 和 bot.on('guildMemberAdd', async newMember => 中创建欢迎消息正在创建错误

如何在 index.js [机器人的启动文件] 中创建一个 discord.js 命令,该命令在发送包含“hi”的消息时删除该消息

在discord.js中创建使用相同命令的用户列表

如何在 C# 中创建索引从 1 开始的一维数组

我不断收到关于 discord.js 中 .position 的错误