#Discord JDA # clear / purge command. Почему мой код, очищающий предыдущие сообщения, не работает должным образом?

Я новичок в Discord JDA API, и я застрял в этой проблеме. Всякий раз, когда я запускаю этот фрагмент кода для команды очистки, бот показывает только сообщение error1. Даже когда я сопровождаю! Purge числом вроде! Purge 23, бот не отвечает. Что я делаю неправильно? Я застрял в этом целую вечность ????. Любая помощь будет оценена по достоинству!

public void onMessageReceived(MessageReceivedEvent event) {
    String[] args = event.getMessage().getContentRaw().split("//s+");
    if(args[0].equalsIgnoreCase(Bot.prefix + "purge")) {
        if (args.length < 2) {
            EmbedBuilder error1 = new EmbedBuilder();
            error1.setColor(Color.RED);
            error1.setTitle("❌ Specify # of messages to delete!");
            error1.setDescription("Usage: " + Bot.prefix + "purge [# of messages]");
            event.getChannel().sendTyping().queue();
            event.getChannel().sendMessage(error1.build()).queue(m -> 
            m.delete().queueAfter(5, TimeUnit.SECONDS));
        }
        
        else if(Integer.parseInt(args[1]) > 100 || Integer.parseInt(args[1]) < 1) {
            EmbedBuilder error2 = new EmbedBuilder();
            error2.setColor(Color.RED);
            error2.setTitle("❌ Only 1-100 messages can be deleted!");
            error2.setDescription("Usage: " + Bot.prefix + "clear [1-100]");
            event.getChannel().sendMessage(error2.build()).queue(m -> 
            m.delete().queueAfter(5, TimeUnit.SECONDS));
        }
        
        else if(Integer.parseInt(args[1]) < 100 && Integer.parseInt(args[1]) > 1){
            int values = Integer.parseInt(args[1]);
            event.getMessage().delete();
            List<Message> messages = event.getChannel().getHistory().retrievePast(values).complete();
            event.getTextChannel().deleteMessages(messages).queue();
            event.getChannel().sendMessage("✅ " + args[1].toString() + " messages 
            deleted!").queue(m -> 
            m.delete().queueAfter(5, TimeUnit.SECONDS));
        }
    }
}

}


person Rex _T    schedule 08.03.2021    source источник


Ответы (1)


Ваше разделенное регулярное выражение неверно. Вы сделали "//s+", но должны делать "\\s+".

person Minn    schedule 09.03.2021
comment
Спасибо! Эти мелкие детали довольно легко упустить. Я собирался уйти из JDA навсегда, но ты. - person Rex _T; 09.03.2021