【问题标题】:Can't add role to user (UnsupportedOperationException)无法向用户添加角色 (UnsupportedOperationException)
【发布时间】:2019-11-10 11:36:09
【问题描述】:

我无法向用户添加角色。这是我的代码,如果我运行它,我会收到 UnsupportedOperationException 错误。 “cooldownroleid”是角色的ID,我要加给用户。

代码:

Role cooldownrole = event.getGuild().getRoleById(cooldownroleid);
event.getMember().getRoles().add(cooldownrole);

堆栈跟踪:

> ERROR net.dv8tion.jda.core.JDA - One of the EventListeners had an uncaught 
  exception java.lang.UnsupportedOperationException: null   
at
> java.util.Collections$UnmodifiableCollection.add(Collections.java:1055)
> ~[na:1.8.0_212]

“冷却角色”的输出

> R:cooldown(594147714510356500)

提前致谢!

【问题讨论】:

    标签: discord-jda


    【解决方案1】:

    getRoles() 返回的列表是不可修改的。这是因为角色 add 还必须通过 RestAction 转发给 discord,而 List#add 无法提供此功能。

    正确的方法取决于使用的 JDA 版本。在第 4 版中,该方法已略微重构。

    JDA v3

    GuildController controller = guild.getController();
    controller.addSingleRoleToMember(member, cooldownrole).queue();
    

    获取GuildController 并添加角色。

    JDA v4

    guild.addRoleToMember(member, cooldownrole).queue();
    

    无需在版本 4 中使用 GuildController,因为方法现在位于 Guild 接口中。

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 2020-09-02
      • 2014-05-04
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2018-09-10
      • 1970-01-01
      相关资源
      最近更新 更多