当我在公会中创建一个斜杠命令后,试图设置它的权限时,我一直得到401: Unauthorized
。
我使用ApplicationCommandManager创建斜线命令(它工作,没有问题)。一旦它被创建,我试图设置该斜线命令的权限,它一直给我401: Unauthorized
。我相当困惑,因为我给予机器人令牌,应用程序id,公会id,和权限(所有的东西都有正确的格式)。另外,当我添加机器人时,我在作用域中添加了bot
和applications.commands
,所以它必须有权限设置命令。我是否缺少了特定的作用域?
我的代码现在看起来像这样:
//Client is given through a function variable here and is indeed a discord Client.
const { ApplicationCommandPermissionType } = require("discord.js");
let Guild = Client.guilds.cache.get(GuildId);
let RoleManager = Guild.roles;
let ApplicationCommandManager = Guild.commands;
let ApplicationCommandPermissionsManager = Client.application.commands.permissions; //I tried getting the ApplicationCommandPermissionsManager through ApplicationCommandManager.permissions but I have the same outcome.
ApplicationCommandManager.create(SlashData).then((application)=>{
console.log(`Created Slash Command`);
ApplicationCommandPermissionsManager.set({command:application.id,guild:application.guildId,token:`BOT TOKEN REMOVED FOR PRIVACY`,permissions:[{id:RoleManager.everyone.id,type:ApplicationCommandPermissionType.Role,permission:false}]});
});
我可以向您保证,正如我在控制台日志中看到的Created Slash Command
一样,确实创建了斜杠命令。当它尝试设置应用程序权限时,我一直收到错误。我尝试为每个斜杠命令将@everyone的权限设置为false。
1条答案
按热度按时间lp0sw83n1#
确保bot具有足够高的角色,可以管理权限,即确保其在角色编辑器中列出的角色高于其试图编辑权限的角色。