你好,所以我在JDA中制作了一个机器人,我刚刚做了一个ban命令,但是它并不禁止任何代码 我提到了用户,还提出了一个理由,并给出了用户ID,仍然没有任何作用
localDateTime.atZone(ZoneId.of("Europe/Paris")).toOffsetDateTime();
请帮助我已经坚持了一段时间。
答案 0 :(得分:0)
就像Minn提到的那样,您没有正确地从ListenerAdapter重写该方法。名称和参数列表必须匹配。
此外,您正在检查整个消息是否等于{PREFIX}ban
,但您的ban命令的结构类似于{PREFIX}ban (user)
,因此您的代码始终在此行停止:
if(msg.equalsIgnoreCase(Bot.PREFIX + "ban"))
因为正确使用命令永远都不是。
这应该可以工作(我将msg检查更改为从equals开始,我已将方法名称更改为具有正确参数的方法ListenerAdapter
,然后我保留了您的用法通过拆分msg
字符串并将其放入列表来确定args:
public class Ban extends ListenerAdapter {
@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent e) {
String msg = e.getMessage().getContentRaw();
if (msg.startsWith(Bot.PREFIX + "ban")) {
TextChannel channel = e.getChannel();
Member member = e.getMember();
List<Member> mentionedMembers = e.getMessage().getMentionedMembers();
List<String> args = Arrays.asList(msg.split(" "));
if (mentionedMembers.isEmpty() || args.size() < 2) {
channel.sendMessage("Missing Arguments").queue();
return;
}
Member target = mentionedMembers.get(0);
String reason = String.join(" ", args.subList(1, args.size()));
if (!member.hasPermission(Permission.BAN_MEMBERS) && !member.canInteract(target)) {
channel.sendMessage("You dont have pmerission to run this command").queue();
return;
}
target.ban(1)
.reason(String.format("Ban by: %#s, with reason: %s", e.getAuthor(), reason)).queue();
}
}
}