使用 JDA 更改成员的昵称

Posted

技术标签:

【中文标题】使用 JDA 更改成员的昵称【英文标题】:Changing a member's nickname with JDA 【发布时间】:2022-01-23 17:52:01 【问题描述】:

我正在尝试更改某人的昵称,但我不断收到此错误:net.dv8tion.jda.api.exceptions.HierarchyException: Can't modify a member with higher or equal highest role than yourself!

这是我的代码:

Member m = e.getMember();
m.modifyNickname(rank.getDisplayName() + " | " + p.getName()).queue();

【问题讨论】:

没关系!这是因为我拥有服务器。 【参考方案1】:

在第一种情况下,每当机器人尝试修改:

昵称 角色

或尝试:

踢 禁止 超时

一个用户,Discord 将检查用户是否被允许这样做。 Discord 会检查该机器人是否具有更高的角色,然后是它试图影响的用户具有的最高角色。

在 JDA 中,应该有一个用于此的工具。 PermissionUtil.canInteract(会员,会员)。然而,据我所知。这是 JDA 内部的东西,不应使用。

在您的情况下,您要么在机器人之上,要么是所有者。 (谁永远是最高的,永远有管理员)

【讨论】:

以上是关于使用 JDA 更改成员的昵称的主要内容,如果未能解决你的问题,请参考以下文章

如何通过命令更改昵称?

如何更改 Discord 机器人昵称?

更改昵称时,昵称命令不会用任何内容替换 UserMention

(Discord api) 使用 python 请求更改服务器上的昵称

使用 JDA 向成员添加权限

更改用户昵称的命令 Discord