我试图制造一个不和谐的机器人,它可以添加/删除用户的角色,但遗憾的是,我遇到了一些权限问题。
API可以找到:https://github.com/DV8FromTheWorld/JDA/
我很想听到有人知道该怎么做。我没有发现有同样问题的人。
错误的“退出”部分如下所示:
net.dv8tion.jda.api.exceptions.HierarchyException: Can't modify a role with higher or equal highest role than yourself! Role: R:unverified(1014845515776671764)
at net.dv8tion.jda.internal.entities.GuildImpl.checkPosition(GuildImpl.java:1866)
at net.dv8tion.jda.internal.entities.GuildImpl.addRoleToMember(GuildImpl.java:1535)
at Verify.onMessageReceived(Verify.java:29)我已经查过了:
Main.java:
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.*;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.requests.GatewayIntent;
import javax.security.auth.login.LoginException;
public class Main extends ListenerAdapter {
public static Channel verifyingChannel = null;
public static Role unverified = null;
public static Role verified = null;
public static void main(String[] args) throws LoginException {
String token = "MTAxNDc5NDM3NTc5ODIwNjU2NA.GbfY1_.xBGsGKK5Ox1jzFVYwIp_cMU3kMcOvNnq2dKOQM";
JDABuilder builder = JDABuilder.createDefault(token);
builder.enableIntents(GatewayIntent.GUILD_MEMBERS, GatewayIntent.MESSAGE_CONTENT,GatewayIntent.GUILD_PRESENCES);
builder.setStatus(OnlineStatus.ONLINE);
builder.setActivity(Activity.listening("the sound of life"));
builder.setMemberCachePolicy(MemberCachePolicy.ALL);
builder.setChunkingFilter(ChunkingFilter.ALL);
builder.enableCache(CacheFlag.ROLE_TAGS);
JDA bot = builder.build().awaitReady();
bot.addEventListener(new Verify());
// don't worry about the next one, it adds some commands that just work already
bot.addEventListener(new Commander(bot));
System.out.println("Bot is online!");
}
}Verify.java
import net.dv8tion.jda.api.entities.Channel;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class Verify extends ListenerAdapter {
public Verify(){}
@Override
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
// later: implement the addRoleToMember funtion here
}
@Override
public void onMessageReceived(MessageReceivedEvent event){
// The Role Main.unverified is first set with a setup command in the Commander-Class, that part is not the problem
event.getGuild().addRoleToMember(event.getMember(),Main.unverified).queue();
}
}发布于 2022-09-18 12:12:04
因此,为了最终解决我的问题,我只需重新安排服务器上的角色。在服务器属性中,bot角色必须高于我想要应用的角色。
发布于 2022-09-02 13:29:53
简单地说,不能像错误日志中所示那样修改具有更高或同等权限的用户。
我假设您是测试机器人的服务器上的管理员。
因此,您和机器人拥有相同/平等的权限,这违背了以下事实:.
.“您不能修改具有更高或同等权限的用户,如错误日志中所示”
我建议您邀请另一个用户到服务器,并给予他较低的权限。如果这样做,机器人应该能够在没有问题的情况下修改新用户。
https://stackoverflow.com/questions/73581297
复制相似问题