Discord.js V13:劈开命令重复 [英] Discord.js v13: Slash commands are duplicated

查看:19
本文介绍了Discord.js V13:劈开命令重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这看起来像是某个错误,或者我不知道,但我确信这是可以修复的。我所有的劈开命令都是重复的,第一个是命令的最新版本,第二个是一些过时的命令。

我假设和劈开命令注册有关,所以是这样的:

const guild = await client.guilds.cache
            .get("836212492769165363")

        guild.commands.set(arrayOfSlashCommands).then((cmd) => {
          const getRoles = (commandName) => {
            const permissions = arrayOfSlashCommands.find(x => x.name === commandName).userPermissions;

            if(!permissions) return null;
            return guild.roles.cache.filter(x => x.permissions.has(permissions) && !x.managed)
          }

          const fullPermissions = cmd.reduce((accumulator, x) => {
            const roles = getRoles(x.name);
            if(!roles) return accumulator;

            const permissions = roles.reduce((a, v) => {
              return [
                ...a,
                {
                  id: v.id, 
                  type: 'ROLE',
                  permission: true,
                },
              ]
            }, [])
            return [
              ...accumulator,
              {
                id: x.id,
                permissions,
              }
            ]
          }, [])
          guild.commands.permissions.set({ fullPermissions }).catch((e) => console.log(e))
        })

推荐答案

尝试使用此代码重新启动您的机器人:

client.application.commands.set([])

或者,如果您有行会,您可以这样做:

guild.commands.set([])

可能需要一些时间才能完成,但可以正常工作。它将清除所有劈开命令,这样您就可以将它们放回原处,而不需要复制。在我看来,您同时拥有Guild命令应用程序命令

这篇关于Discord.js V13:劈开命令重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆