Как сохранить это работает? - PullRequest
0 голосов
/ 06 марта 2020

Итак, я пытаюсь собрать бота для разногласий в java, но всякий раз, когда команда выполняется дважды, она не работает во второй раз. Я знаю, что должна быть незначительная ошибка, или я делаю что-то не так. Например: когда введено ! Spotify , действие происходит только при первой загрузке бота и при повторном вводе любого ! Spotify , ! Minecraft , ! Origin ничего не происходит и ошибок нет.

public class FileEvent extends ListenerAdapter {

public void onGuildMessageReceived(GuildMessageReceivedEvent event) {



    /*All the paths are here*/
    String SPOTIFY_PATH = "enter path here";
    String MINECRAFT_PATH = "enter path here";
    String ORIGIN_PATH = "enter path here";

    /*All the file objects are here*/
    File Minecraft = new File(MINECRAFT_PATH);
    File Spotify = new File(SPOTIFY_PATH);
    File Origin = new File(ORIGIN_PATH);

    String message = event.getMessage().getContentRaw();

    if (message.equalsIgnoreCase("!spotify")) {
        Scanner ss = null;
        try {
            ss = new Scanner(Spotify);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String data_spotify = ss.nextLine().trim();

        event.getAuthor().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("sup")).queue();
        ss.close();

        FileDelete.delete(data_spotify.trim(), SPOTIFY_PATH);
    }

    if (message.equalsIgnoreCase("!minecraft")) {
        Scanner sm = null;
        try {
            sm = new Scanner(Minecraft);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String data_minecraft = sm.nextLine().trim();


        event.getAuthor().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("sup")).queue();
        sm.close();

        FileDelete.delete(data_minecraft.trim(), MINECRAFT_PATH);
    }

    if (message.equalsIgnoreCase("!origin")) {
        Scanner sn = null;
        try {
            sn = new Scanner(Origin);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        String data_origin = sn.nextLine().trim();


        event.getAuthor().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("sup")).queue();
        sn.close();

        FileDelete.delete(data_origin.trim(), ORIGIN_PATH);
    }


}

}

1 Ответ

0 голосов
/ 19 марта 2020

Я собираюсь быть честным, я не знаю, где ваш код работает неправильно, но я уверен, что вы не должны связывать вместе много команд. Обработку всей команды можно сделать намного проще с помощью JDA-Utilities .

. Если вы хотите создать новую команду, вам следует
1. Создать новый java класс
2. Сделайте вновь созданный класс расширением класса Command следующим образом:

   public class ExampleCommand extends Command { /* code here */ }
Создать конструктор и установить нужные свойства для команды. Переопределить метод выполнения:
   @Override
   protected void execute(CommandEvent event) { /* code for the command here */ }
Добавьте команду к своему клиенту / jda.
   client.addCommands(new ExampleCommand());

Вы можете найти полный пример бота разногласий (JDA + JDA Utilities) здесь , который легко читается и измени.

...