【问题标题】:Discord bot with permission ADMINISTRATOR lacks of permission MANAGE_CHANNELDiscord bot 具有权限 ADMINISTRATOR 缺乏权限 MANAGE_CHANNEL
【发布时间】:2019-10-24 09:12:50
【问题描述】:

当我使用 OAUTH2 URL GENERATOR 创建加入 URL 时,我授予我的机器人“管理员”权限。我无法提供任何其他权限,因为 ADMINISTRATOR 应该授予机器人所有权限。

加入我的机器人后,应检查是否存在窗帘通道,如果不存在则创建它。有问题。我收到以下错误:

[JDA MainWS-ReadThread] ERROR net.dv8tion.jda.core.JDA - One of the             
EventListeners had an uncaught exception
net.dv8tion.jda.core.exceptions.InsufficientPermissionException: Cannot 
perform action due to a lack of Permission. Missing permission: MANAGE_CHANNEL
at net.dv8tion.jda.core.managers.GuildController.checkPermission(GuildController.java:2247)
at net.dv8tion.jda.core.managers.GuildController.createTextChannel(GuildController.java:1762)
at listeners.selfJoinListener.onGuildJoin(selfJoinListener.java:156)
at net.dv8tion.jda.core.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:513)
at net.dv8tion.jda.core.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:84)
at net.dv8tion.jda.core.handle.GuildSetupNode.completeSetup(GuildSetupNode.java:381)
at net.dv8tion.jda.core.handle.GuildSetupNode.handleMemberChunk(GuildSetupNode.java:284)
at net.dv8tion.jda.core.handle.GuildSetupNode.ensureMembers(GuildSetupNode.java:410)
at net.dv8tion.jda.core.handle.GuildSetupNode.handleCreate(GuildSetupNode.java:243)
at net.dv8tion.jda.core.handle.GuildSetupController.onCreate(GuildSetupController.java:185)
at net.dv8tion.jda.core.handle.GuildCreateHandler.handleInternally(GuildCreateHandler.java:40)
at net.dv8tion.jda.core.handle.SocketHandler.handle(SocketHandler.java:37)
at net.dv8tion.jda.core.requests.WebSocketClient.onDispatch(WebSocketClient.java:868)
at net.dv8tion.jda.core.requests.WebSocketClient.onEvent(WebSocketClient.java:766)
at net.dv8tion.jda.core.requests.WebSocketClient.handleEvent(WebSocketClient.java:745)
at net.dv8tion.jda.core.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:903)
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:368)
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:270)
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:990)
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:749)
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)

这似乎是一个错误,因为正如我已经说过的,权限 ADMINISTRATOR 应该允许机器人基本上做所有事情(除了一些角色层次结构和服务器所有者的东西)。

有人知道如何解决这个问题吗?

//编辑1: 好的,我通过 OAuth2 向机器人授予了除 ADMINISTRATOR 之外的所有权限,但结果基本相同。该机器人只是没有应有的权限。我对 OAuth2 和 url 生成器的工作原理有错误的理解吗?

【问题讨论】:

    标签: java discord discord-jda


    【解决方案1】:

    机器人的权限是通过 Discord 管理的角色添加的。不幸的是,这个角色是在 触发加入事件之后添加的,因此权限尚未准备好。 There is an open issue about this on GitHub.

    您必须监听GuildMemberRoleAddEvent,而不是监听加入事件。 该角色应具有应用程序的名称,并且 isManaged() 返回 true。

    更新: Discord 已解决上述问题,现在应该可以正常工作。加入公会时会显示上述角色,而不是稍后添加。

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 1970-01-01
      • 2020-09-29
      • 2021-01-12
      • 2019-08-14
      • 2019-11-23
      • 1970-01-01
      • 2015-06-22
      • 2021-12-18
      相关资源
      最近更新 更多