diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/files/Anime.java | 57 | ||||
| -rw-r--r-- | src/main/java/files/Bot.java | 63 | ||||
| -rw-r--r-- | src/main/java/files/Database.java | 41 | ||||
| -rw-r--r-- | src/main/java/files/MyKeyboard.java | 15 | ||||
| -rw-r--r-- | src/main/java/files/Parser.java | 142 | ||||
| -rw-r--r-- | src/main/java/files/TelegramUser.java | 69 | ||||
| -rw-r--r-- | src/main/java/files/UserCallbackQuery.java | 121 | ||||
| -rw-r--r-- | src/main/java/files/UserMessage.java | 107 | 
8 files changed, 390 insertions, 225 deletions
| diff --git a/src/main/java/files/Anime.java b/src/main/java/files/Anime.java index 4f60149..f6cccff 100644 --- a/src/main/java/files/Anime.java +++ b/src/main/java/files/Anime.java @@ -3,19 +3,21 @@ package files;  public class Anime {      private final String name;      private final String description; -    private final String[] genres; +    private final String genres;      private final String year;      private String series;      private final String rating;      public final String image;      private final String url; +    public static String dub; +    public static String typeOfAnime;      public static Anime[] list;      public static byte indexOfAnime = 0;      public static String searchedAnime; -    public static byte searchedAnimeSize; -    public static boolean isSearchingAnAnime; +    public static byte size; +    public static boolean isSearching; -    public Anime(String name, String description, String[] genres, String year, String rating, String image, String url) { +    public Anime(String name, String description, String genres, String year, String rating, String image, String url) {          this.name = name;          this.description = description;          this.genres = genres; @@ -25,7 +27,7 @@ public class Anime {          this.url = url;      } -    public Anime(String name, String description, String[] genres, String year, String series, String rating, String image, String url) { +    public Anime(String name, String description, String genres, String year, String series, String rating, String image, String url) {          this.name = name;          this.description = description;          this.genres = genres; @@ -37,32 +39,35 @@ public class Anime {      }      public String showInfo() { -        return "<b>Название:</b> " + this.name + System.lineSeparator() + -                getYear() + -                getSeries() + -                "<b>Рейтинг:</b> " + this.rating + " / 10" + System.lineSeparator() + -                "<b>Описание:</b> " + this.description; -    } - -    public String showInfo(String dub) { -        return "<b>Название:</b> " + this.name + System.lineSeparator() + -                getYear() + -                getSeries() + -                "<b>Рейтинг:</b> " + this.rating + " / 10" + System.lineSeparator() + -                "<b>Озвучка:</b> " + dub + System.lineSeparator() + -                "<b>Описание:</b> " + this.description; +        return  getName() + getYear() + getGenres() + getSeries() + getRating() + getDub() + getDescription();      }      public String getName() { -        return name; +        return (name != null) ? ("<b>Название:</b> " + this.name + System.lineSeparator()) : "";      }      public String getYear() { -        return (year != null) ? ("<b>Год выхода:</b> " + this.year + System.lineSeparator()) : ""; +        return (year != null) ? ("<b>Год:</b> " + this.year + System.lineSeparator()) : ""; +    } + +    public String getGenres() { +        return (genres != null) ? ("<b>Жанр:</b> " + this.genres + System.lineSeparator()) : "";      }      public String getSeries() { -        return (series != null) ? ("<b>Всего серий:</b> " + this.series + System.lineSeparator()) : ""; +        return (series != null) ? ("<b>Серий:</b> " + this.series + System.lineSeparator()) : ""; +    } + +    public String getRating() { +        return (rating != null) ? ("<b>Рейтинг:</b> " + this.rating + System.lineSeparator()) : ""; +    } + +    public String getDub() { +        return (dub != null) ? ("<b>Озвучка:</b> " + dub + System.lineSeparator()) : ""; +    } + +    public String getDescription() { +        return (description != null) ? ("<b>Описание:</b> " + description + System.lineSeparator()) : "";      }      public String getImage() { @@ -89,14 +94,6 @@ public class Anime {          Anime.searchedAnime = searchedAnime.replace(' ', '+');      } -    public static void setIsSearchingAnAnime(boolean isSearchingAnAnime) { -        Anime.isSearchingAnAnime = isSearchingAnAnime; -    } - -    public static void setSearchedAnimeSize(byte searchedAnimeSize) { -        Anime.searchedAnimeSize = searchedAnimeSize; -    } -      public static void setList(Anime[] list) {          Anime.list = list;      } diff --git a/src/main/java/files/Bot.java b/src/main/java/files/Bot.java index c1cff05..6c7a521 100644 --- a/src/main/java/files/Bot.java +++ b/src/main/java/files/Bot.java @@ -2,35 +2,40 @@ package files;  import com.pengrad.telegrambot.TelegramBot;  import com.pengrad.telegrambot.UpdatesListener; -import com.pengrad.telegrambot.model.CallbackQuery; +import com.pengrad.telegrambot.model.User;  import com.pengrad.telegrambot.model.request.ParseMode;  import com.pengrad.telegrambot.request.SendMessage;  import com.pengrad.telegrambot.request.SendPhoto; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.text.SimpleDateFormat;  import java.util.Properties; -// TODO: 7/25/21 Добавить поиск Аниме OVA, аниме по жанру, Дорамы, случайное аниме +// TODO: 7/25/21 Добавить Аниме OVA, аниме по жанру, Дорамы, случайное аниме  public class Bot { +    public final static Properties PROPERTIES = loadProperties(new File("app.properties")); +    public final static TelegramBot TELEGRAM_BOT = new TelegramBot(PROPERTIES.getProperty("TELEGRAM_TOKEN")); +    public static TelegramUser telegramUser = new TelegramUser(); -    public static Properties properties = loadProperties(new File("app.properties")); -    public static TelegramBot telegramBot = new TelegramBot(properties.getProperty("TELEGRAM_TOKEN")); -    public static FileWriter log; - -    public static void main(String[] args) throws IOException { -        log = new FileWriter("log.txt", false); - -        telegramBot.setUpdatesListener(updates -> { +    public static void main(String[] args) { +        TELEGRAM_BOT.setUpdatesListener(updates -> {              updates.forEach(update -> { -                if (UserCallbackQuery.checkIfNotNull(update.callbackQuery())) { +                if (update.callbackQuery() != null) {                      try {                          UserCallbackQuery.execute(update.callbackQuery());                      } catch (IOException e) {                          e.printStackTrace();                      }                  } -                if (UserMessage.checkIfNotNull(update.message())) { +                if (update.message() != null) { +                    User user = update.message().from(); +                    SimpleDateFormat simpleDateFormat = new java.text.SimpleDateFormat("dd.MM.yyyy HH:mm:ss z"); +                    simpleDateFormat.setTimeZone(java.util.TimeZone.getTimeZone("GMT+5")); +                    String formattedDate = simpleDateFormat.format(new java.util.Date(update.message().date() * 1000L)); +                    telegramUser = new TelegramUser(user.id(), user.isBot(), user.firstName(), user.lastName(), user.username(), formattedDate);                      try {                          UserMessage.execute(update.message());                      } catch (IOException e) { @@ -52,43 +57,41 @@ public class Bot {          return properties;      } -    public static void sendAnimeAtMainMenu(String url, String typeOfAnime) { +    public static void sendAnime(String url) {          Anime[] anime = new Anime[28];          byte index = Anime.indexOfAnime;          try { -            anime = Parse.getAnimeAtMainMenu(url, typeOfAnime); +            anime = Parser.getAnime(url);          } catch (IOException e) {              e.printStackTrace();          }          Anime.setList(anime); -        telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); +        TELEGRAM_BOT.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel()));      } -    public static void sendAnimeAtMainMenuByCallBackQuery(String typeOfAnime) { +    public static void sendAnimeByCallBackQuery() {          Anime[] anime = Anime.list;          byte index = Anime.indexOfAnime; -        telegramBot.execute(new SendPhoto(UserCallbackQuery.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); +        TELEGRAM_BOT.execute(new SendPhoto(UserCallbackQuery.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel()));      } -    public static void sendSearchedAnime(byte index, String searchedAnime) throws IOException { -        byte animeAtSearchSize = Parse.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime); +    public static void sendSearchedAnime() throws IOException { +        String searchedAnime = Anime.searchedAnime; +        byte index = Anime.indexOfAnime; +        byte animeAtSearchSize = Parser.getSizeOfSearchedAnime("https://anime.anidub.life/?do=search&mode=advanced&subaction=search&titleonly=3&story=" + searchedAnime);          if (animeAtSearchSize > 0) { -            Anime[] anime = new Anime[Parse.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime)]; +            Anime[] anime = new Anime[animeAtSearchSize];              try { -                anime = Parse.getAnimeAtSearch("https://animego.org/search/all?q=" + searchedAnime); +                anime = Parser.getAnime("https://anime.anidub.life/?do=search&mode=advanced&subaction=search&titleonly=3&story=" + searchedAnime);              } catch (IOException e) {                  e.printStackTrace();              } -            Anime.setSearchedAnimeSize(animeAtSearchSize); +            Anime.size = animeAtSearchSize;              Anime.setList(anime); -            telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); +            TELEGRAM_BOT.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel()));          } else { -            telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!")); -            Anime.setIsSearchingAnAnime(true); +            TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!")); +            Anime.isSearching = true;          }      } - -    public static void sendSearchedAnimeByCallBackQuery(CallbackQuery callbackQuery, byte index, Anime[] list) { -        telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), list[index].getImage()).caption(list[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); -    }  } diff --git a/src/main/java/files/Database.java b/src/main/java/files/Database.java new file mode 100644 index 0000000..2d35c2d --- /dev/null +++ b/src/main/java/files/Database.java @@ -0,0 +1,41 @@ +package files; + +import com.mongodb.MongoClient; +import com.mongodb.MongoClientSettings; +import com.mongodb.MongoClientURI; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; + +import org.bson.Document; +import org.bson.codecs.configuration.CodecRegistries; +import org.bson.codecs.pojo.PojoCodecProvider; + +import static org.fusesource.jansi.Ansi.*; +import static org.fusesource.jansi.Ansi.Color.*; + +public class Database { +    private static final String MONGO_URI = Bot.PROPERTIES.getProperty("DATABASE_URL"); +    private static final MongoDatabase database = new MongoClient(new MongoClientURI(MONGO_URI)) +            .getDatabase("animarfo") +            .withCodecRegistry( +                    CodecRegistries.fromRegistries( +                    MongoClientSettings.getDefaultCodecRegistry(), +                    CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build())) +            ); + +    public static void saveUser(TelegramUser telegramUser) { +        System.out.println(ansi().fg(YELLOW).a("Trying to save user to database...")); +        MongoCollection<TelegramUser> collection = database.getCollection("users", TelegramUser.class); +        System.out.println(ansi().fg(GREEN).a("Connected to database and got collection!")); +        TelegramUser searchedTelegramUser = collection.find(Filters.eq("_id", telegramUser.getId())).first(); + +        if (searchedTelegramUser == null) { +            collection.insertOne(telegramUser); +            System.out.println(ansi().fg(GREEN).a("User is added to the database!")); +        } else { +            collection.updateOne(Filters.eq("_id", telegramUser.getId()), new Document("$set", telegramUser)); +            System.out.println(ansi().fg(GREEN).a("User is updated")); +        } +    } +} diff --git a/src/main/java/files/MyKeyboard.java b/src/main/java/files/MyKeyboard.java index 6212542..060ceb5 100644 --- a/src/main/java/files/MyKeyboard.java +++ b/src/main/java/files/MyKeyboard.java @@ -12,6 +12,8 @@ import java.io.IOException;  import java.util.ArrayList;  public class MyKeyboard { +    public static short seriesSize; +      public static Keyboard getMain() {          return new ReplyKeyboardMarkup(                  new String[]{"Поиск аниме"}, @@ -23,11 +25,11 @@ public class MyKeyboard {                  .selective(true);      } -    public static Keyboard getCarousel(String typeOfAnime) { +    public static Keyboard getCarousel() {          InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup();          inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Смотреть / Скачать").callbackData("watchOrDownload")); -        inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Пред.").callbackData("previous" + typeOfAnime), new InlineKeyboardButton("След.").callbackData("next" + typeOfAnime)); +        inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Пред.").callbackData("previous"), new InlineKeyboardButton("След.").callbackData("next"));          return inlineKeyboardMarkup;      } @@ -40,7 +42,7 @@ public class MyKeyboard {          Anime[] anime = Anime.list;          Anime thisAnime = anime[Anime.indexOfAnime]; -        Elements seriesList = Parse.getPage(thisAnime.getUrl()).select("div[class=tabs-b video-box]").next().select("span"); +        Elements seriesList = Parser.getPage(thisAnime.getUrl()).select("div[class=tabs-b video-box]").next().select("span");          ArrayList<String> series = new ArrayList<>();          ArrayList<String> seriesUrls = new ArrayList<>(); @@ -58,15 +60,16 @@ public class MyKeyboard {          }          InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); -        for (int i = 0; i < series.size(); i++) { -            if (i+2 < series.size()) { +        seriesSize = (short) series.size(); +        for (int i = 0; i < seriesSize; i++) { +            if (i+2 < seriesSize) {                  inlineKeyboardMarkup.addRow(                      new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)),                      new InlineKeyboardButton(series.get(i+1)).url(seriesUrls.get(i+1)),                      new InlineKeyboardButton(series.get(i+2)).url(seriesUrls.get(i+2))                  );                  i += 2; -            } else if (i+1 < series.size()) { +            } else if (i+1 < seriesSize) {                  inlineKeyboardMarkup.addRow(                      new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)),                      new InlineKeyboardButton(series.get(i+1)).url(seriesUrls.get(i+1)) diff --git a/src/main/java/files/Parser.java b/src/main/java/files/Parser.java new file mode 100644 index 0000000..8d06078 --- /dev/null +++ b/src/main/java/files/Parser.java @@ -0,0 +1,142 @@ +package files; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; + +public class Parser { +    public static Document getPage(String url) throws IOException { +        return Jsoup.parse(new URL(url), 5000); +    } + +    public static byte getSizeOfSearchedAnime(String page) throws IOException { +        Element animeList = Parser.getPage(page).select("div[id=dle-content]").first(); +        if (animeList == null) return 0; +        Elements anime = animeList.select("div[class=th-item]"); +        return (byte) anime.size(); +    } + +    public static Anime[] getAnime(String page) throws IOException { +        String typeOfAnime = Anime.typeOfAnime; + +        Element animeList = Parser.getPage(page).select("div[id=dle-content]").first(); +        assert animeList != null; +        Elements namesTemp = animeList.select("div[class=th-title]"); +        Elements descriptionsTemp = animeList.select("div[class=th-tip-text]"); +        Elements yearsTemp = null; +        if (typeOfAnime != null && !typeOfAnime.equals("Ongoing")) +            yearsTemp = animeList.select("div[class=th-tip-meta fx-row fx-middle fx-start]"); +        Elements genresTemp= animeList.select("ul[class=th-tip-list]"); +        Elements seriesTemp = null; +        if (typeOfAnime != null && !typeOfAnime.equals("Films")) +            seriesTemp = animeList.select("div[class=th-title]"); +        Elements ratingsTemp = animeList.select("div[class=th-rating]"); +        Elements imagesTemp = animeList.select("div[class=th-img img-resp-vert img-fit]"); +        Elements urlsTemp = animeList.select("div[class=th-itemb]").select("a[class=th-in]"); + +        byte countOfAnime = (byte) namesTemp.size(); +        Anime.size = countOfAnime; + +        ArrayList<String> names = new ArrayList<>(); +        for (Element name : namesTemp) { +            if (typeOfAnime != null && !typeOfAnime.equals("Films")) { +                String text = Jsoup.parse(String.valueOf(name)).text(); +                int start = 0; +                int end = text.indexOf(" ["); +                char[] dst = new char[end - start]; +                text.getChars(start, end, dst, 0); +                names.add(String.valueOf(dst)); +            } else { +                names.add(Jsoup.parse(String.valueOf(name)).text()); +            } +        } + +        ArrayList<String> descriptions = new ArrayList<>(); +        for (Element description : descriptionsTemp) { +            descriptions.add(Jsoup.parse(String.valueOf(description)).text()); +        } + +        ArrayList<String> years = new ArrayList<>(); +        if (typeOfAnime != null && !typeOfAnime.equals("Ongoing") && !Anime.isSearching) { +            for (Element year : yearsTemp) { +                Element yearTemp = year.child(0); +                years.add(Jsoup.parse(String.valueOf(yearTemp)).text()); +            } +        } + +        ArrayList<String> genres = new ArrayList<>(); +        for (Element oneGenres : genresTemp) { +            Element genre = oneGenres.child(2); +            String text = Jsoup.parse(String.valueOf(genre)).text(); +            int start = 6; +            int end = text.length(); +            char[] dst = new char[end - start]; +            text.getChars(start, end, dst, 0); +            genres.add(String.valueOf(dst)); +        } + +        ArrayList<String> series = new ArrayList<>(); +        if (typeOfAnime != null && !typeOfAnime.equals("Films") && !Anime.isSearching) { +            for (Element oneSeries : seriesTemp) { +                String text = oneSeries.toString(); +                int start = text.indexOf("[") + 1; +                int end = text.indexOf("]"); +                char[] dst = new char[end - start]; +                text.getChars(start, end, dst, 0); +                series.add(String.valueOf(dst)); +            } +        } + +        ArrayList<String> ratings = new ArrayList<>(); +        for (Element rating : ratingsTemp) { +            ratings.add(Jsoup.parse(String.valueOf(rating)).text()); +        } + +        ArrayList<String> images = new ArrayList<>(); +        for (Element image : imagesTemp) { +            String text = image.toString(); +            int start = text.indexOf("data-src=\"") + 11; +            int end = text.indexOf(".jpg") + 4; +            if (end == 3) { +                end = text.indexOf(".png") + 4; +            } +            char[] dst = new char[end - start]; +            text.getChars(start, end, dst, 0); +            if (!String.valueOf(dst).contains("statics")) { +                images.add("https://online.anidub.com/" + String.valueOf(dst)); +            } else { +                images.add("h" + String.valueOf(dst)); +            } +        } + +        ArrayList<String> urls = new ArrayList<>(); +        for (Element url : urlsTemp) { +            String text = url.toString(); +            int start = text.indexOf("href=\"") + 6; +            int end = text.indexOf("\">"); +            char[] dst = new char[end - start]; +            text.getChars(start, end, dst, 0); +            urls.add(String.valueOf(dst)); +        } + +        Anime[] anime = new Anime[countOfAnime]; +        for (int i = 0; i < countOfAnime; i++) { +            if (typeOfAnime != null && typeOfAnime.equals("Films")) { +                anime[i] = new Anime(names.get(i), descriptions.get(i), genres.get(i), years.get(i), ratings.get(i), images.get(i), urls.get(i)); +            } else if (typeOfAnime != null && typeOfAnime.equals("Ongoing")) { +                anime[i] = new Anime(names.get(i), descriptions.get(i), genres.get(i), null, series.get(i), ratings.get(i), images.get(i), urls.get(i)); +            } else if (typeOfAnime != null && typeOfAnime.equals("Serials")) { +                anime[i] = new Anime(names.get(i), descriptions.get(i), genres.get(i), years.get(i), series.get(i), ratings.get(i), images.get(i), urls.get(i)); +            } else if (Anime.isSearching) { +                anime[i] = new Anime(names.get(i), descriptions.get(i), genres.get(i), null, null, ratings.get(i), images.get(i), urls.get(i)); +            } +        } + +        return anime; +    } +}
\ No newline at end of file diff --git a/src/main/java/files/TelegramUser.java b/src/main/java/files/TelegramUser.java new file mode 100644 index 0000000..31e96f1 --- /dev/null +++ b/src/main/java/files/TelegramUser.java @@ -0,0 +1,69 @@ +package files; + +public class TelegramUser { +    private long id; +    private Boolean isBot; +    private String firstName; +    private String lastName; +    private String username; +    private String date; + +    public TelegramUser(long id, boolean isBot, String firstName, String lastName, String username, String date) { +        this.id = id; +        this.isBot = isBot; +        this.firstName = firstName; +        this.lastName = lastName; +        this.username = username; +        this.date = date; +    } + +    public TelegramUser() { } + +    public long getId() { +        return id; +    } + +    public void setId(long id) { +        this.id = id; +    } + +    public Boolean getIsBot() { +        return isBot; +    } + +    public void setIsBot(Boolean bot) { +        isBot = bot; +    } + +    public String getFirstName() { +        return firstName; +    } + +    public void setFirstName(String firstName) { +        this.firstName = firstName; +    } + +    public String getLastName() { +        return lastName; +    } + +    public void setLastName(String lastName) { +        this.lastName = lastName; +    } + +    public String getUsername() { +        return username; +    } + +    public void setUsername(String username) { +        this.username = username; +    } + +    public String getDate() { +        return date; +    } + +    public void setDate(String date) { +        this.date = date; +    } +} diff --git a/src/main/java/files/UserCallbackQuery.java b/src/main/java/files/UserCallbackQuery.java index 553f6fd..f385542 100644 --- a/src/main/java/files/UserCallbackQuery.java +++ b/src/main/java/files/UserCallbackQuery.java @@ -1,14 +1,12 @@  package files; -import com.pengrad.telegrambot.TelegramBot;  import com.pengrad.telegrambot.model.CallbackQuery; -import com.pengrad.telegrambot.model.Update;  import com.pengrad.telegrambot.model.User; +import com.pengrad.telegrambot.model.request.Keyboard;  import com.pengrad.telegrambot.model.request.ParseMode;  import com.pengrad.telegrambot.request.DeleteMessage;  import com.pengrad.telegrambot.request.SendMessage;  import com.pengrad.telegrambot.request.SendPhoto; -import files.entity.TelegramUser;  import java.io.IOException; @@ -17,116 +15,69 @@ public class UserCallbackQuery extends com.pengrad.telegrambot.model.CallbackQue      public static String data;      public static User user;      public static long userId; -    public static String fullName;      public static int messageId;      public static long chatId; -    public static void setInformation(CallbackQuery callbackQuery) { -        UserCallbackQuery.callbackQuery = callbackQuery; -        UserCallbackQuery.data = callbackQuery.data(); -        UserCallbackQuery.user = callbackQuery.from(); -        UserCallbackQuery.userId = callbackQuery.from().id(); -        UserCallbackQuery.fullName = callbackQuery.from().firstName() + TelegramUser.checkIfHasLastName(user); -        UserCallbackQuery.messageId = callbackQuery.message().messageId(); -        UserCallbackQuery.chatId = callbackQuery.message().chat().id(); -    } - -    public static String getInformation() { -        return "callbackQuery: " + callbackQuery + System.lineSeparator() + -                "data: " + data + System.lineSeparator() + -                "userId: " + userId + System.lineSeparator() + -                "fullName: " + fullName + System.lineSeparator() + -                "messageId: " + messageId + System.lineSeparator() + -                "chatId: " + chatId + "\n\n"; -    } - -    public static boolean checkIfNotNull(CallbackQuery callbackQuery) { -        return (callbackQuery != null); +    public static void setInformation(CallbackQuery _callbackQuery) { +        callbackQuery = _callbackQuery; +        data = _callbackQuery.data(); +        user = _callbackQuery.from(); +        userId = _callbackQuery.from().id(); +        messageId = _callbackQuery.message().messageId(); +        chatId = _callbackQuery.message().chat().id();      }      public static void execute(CallbackQuery callbackQuery) throws IOException {          UserCallbackQuery.setInformation(callbackQuery); -        Bot.log.write(UserCallbackQuery.getInformation()); -        Bot.log.flush(); -          switch (data) { -            case "previousOngoing" -> { +            case "previous" -> {                  if (Anime.indexOfAnime == 0) { -                    Anime.setIndexOfAnime((byte) 27); +                    Anime.setIndexOfAnime((byte) (Anime.size-1));                  } else {                      Anime.decreaseIndexOfAnime();                  } -                Bot.sendAnimeAtMainMenuByCallBackQuery("Ongoing"); +                Bot.sendAnimeByCallBackQuery();              } -            case "nextOngoing" -> { -                if (Anime.indexOfAnime == 27) { +            case "next" -> { +                if (Anime.indexOfAnime == Anime.size-1) {                      Anime.setIndexOfAnime((byte) 0);                  } else {                      Anime.increaseIndexOfAnime();                  } -                Bot.sendAnimeAtMainMenuByCallBackQuery("Ongoing"); -            } -            case "previousAnimeSerials" -> { -                if (Anime.indexOfAnime == 0) { -                    Anime.setIndexOfAnime((byte) 27); -                } else { -                    Anime.decreaseIndexOfAnime(); -                } -                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeSerials"); -            } -            case "nextAnimeSerials" -> { -                if (Anime.indexOfAnime == 27) { -                    Anime.setIndexOfAnime((byte) 0); -                } else { -                    Anime.increaseIndexOfAnime(); -                } -                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeSerials"); -            } -            case "previousAnimeFilms" -> { -                if (Anime.indexOfAnime == 0) { -                    Anime.setIndexOfAnime((byte) 27); -                } else { -                    Anime.decreaseIndexOfAnime(); -                } -                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeFilms"); +                Bot.sendAnimeByCallBackQuery();              } -            case "nextAnimeFilms" -> { -                if (Anime.indexOfAnime == 27) { -                    Anime.setIndexOfAnime((byte) 0); +            case "watchOrDownload" -> { +                Anime[] anime = Anime.list; +                byte index = Anime.indexOfAnime; +                Keyboard anidub = MyKeyboard.getAnidub(); +                if (MyKeyboard.seriesSize > 0) { +                    Bot.TELEGRAM_BOT.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(anidub));                  } else { -                    Anime.increaseIndexOfAnime(); +                    Bot.TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, "Прости, но я не смог найти серии для этого аниме... :("));                  } -                Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeFilms");              } -            case "previousSearchedAnime" -> { -                if (Anime.indexOfAnime == 0) { -                    Anime.setIndexOfAnime((byte) (Anime.searchedAnimeSize - 1)); -                } else { -                    Anime.decreaseIndexOfAnime(); +            case "anidub" -> { +                Anime.dub = "Anidub"; +                String url = null; +                if (Anime.typeOfAnime != null) { +                    switch (Anime.typeOfAnime) { +                        case "Ongoing" -> url = "https://anime.anidub.life/anime/anime_ongoing/"; +                        case "Serials" -> url = "https://online.anidub.com/anime/full/"; +                        case "Films" -> url = "https://anime.anidub.life/anime_movie/"; +                    }                  } -                Bot.sendSearchedAnimeByCallBackQuery(callbackQuery, Anime.indexOfAnime, Anime.list); -            } -            case "nextSearchedAnime" -> { -                if (Anime.indexOfAnime == Anime.searchedAnimeSize - 1) { -                    Anime.setIndexOfAnime((byte) 0); +                Anime.setIndexOfAnime((byte) 0); +                if (!Anime.isSearching) { +                    Bot.sendAnime(url);                  } else { -                    Anime.increaseIndexOfAnime(); +                    Bot.TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, "Введи название аниме"));                  } -                Bot.sendSearchedAnimeByCallBackQuery(callbackQuery, Anime.indexOfAnime, Anime.list); -            } -            case "watchOrDownload" -> { -                Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, "Какую озвучку выберем?").replyMarkup(MyKeyboard.getDub())); -            } -            case "anidub" -> { -                Anime[] anime = Anime.list; -                byte index = Anime.indexOfAnime; -                Anime thisAnime = anime[index]; -                Bot.telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo("Anidub")).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getAnidub())); +                Anime.typeOfAnime = null;              }          }          DeleteMessage deleteMessage = new DeleteMessage(chatId, messageId); -        Bot.telegramBot.execute(deleteMessage); +        Bot.TELEGRAM_BOT.execute(deleteMessage);      }  } diff --git a/src/main/java/files/UserMessage.java b/src/main/java/files/UserMessage.java index 0670295..2def331 100644 --- a/src/main/java/files/UserMessage.java +++ b/src/main/java/files/UserMessage.java @@ -1,99 +1,58 @@  package files;  import com.pengrad.telegrambot.model.Message; -import com.pengrad.telegrambot.model.User;  import com.pengrad.telegrambot.request.SendMessage; -import files.entity.TelegramUser;  import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.util.HashMap;  public class UserMessage {      public static Message message;      public static String text;      public static long chatId; -    private static String date; -    private static User user; -    private static long userId; -    private static String fullName; -    private static int messageId; +    private static final HashMap<String, String> animeTypes = new HashMap<>(); + +    static { +        animeTypes.put("Онгоинги", "Ongoing"); +        animeTypes.put("Аниме сериалы", "Serials"); +        animeTypes.put("Аниме фильмы", "Films"); +    }      public static void setInformation(Message message) {          UserMessage.message = message; - -        long unixSeconds = message.date(); -        Date date = new java.util.Date(unixSeconds*1000L); -        SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); - -        UserMessage.date = sdf.format(date); -        UserMessage.user = message.from(); -        UserMessage.userId = message.from().id(); -        UserMessage.fullName = message.from().firstName() + TelegramUser.checkIfHasLastName(user); -        UserMessage.messageId = message.messageId();          UserMessage.text = message.text();          UserMessage.chatId = message.chat().id();      } -    public static String getInformation() { -        return "message: " + message + System.lineSeparator() + -                "date: " + date + System.lineSeparator() + -                "text: " + text + System.lineSeparator() + -                "userId: " + userId + System.lineSeparator() + -                "fullName: " + fullName + System.lineSeparator() + -                "messageId: " + messageId + System.lineSeparator() + -                "chatId: " + chatId + "\n\n"; -    } - -    public static boolean checkIfNotNull(Message message) { -        return (message != null); -    } -      public static void execute(Message message) throws IOException {          UserMessage.setInformation(message); -        Bot.log.write(UserMessage.getInformation()); -        Bot.log.flush(); - -        switch (UserMessage.text) { -//            case "Поиск аниме": -//                Anime.setIndexOfAnime((byte) 0); -//                Anime.setIsSearchingAnAnime(true); -//                telegramBot.execute(new SendMessage(UserMessage.chatId, "Введи название аниме, которое хочешь найти...")); -//                break; -            case "Онгоинги": -                Anime.setIndexOfAnime((byte) 0); -                Anime.setIsSearchingAnAnime(false); -                Bot.sendAnimeAtMainMenu("https://online.anidub.com/anime/anime_ongoing/", "Ongoing"); -                break; -            case "Аниме сериалы": -                Anime.setIndexOfAnime((byte) 0); -                Anime.setIsSearchingAnAnime(false); -                Bot.sendAnimeAtMainMenu("https://online.anidub.com/anime/full/", "AnimeSerials"); -                break; -            case "Аниме фильмы": -                Anime.setIndexOfAnime((byte) 0); -                Anime.setIsSearchingAnAnime(false); -                Bot.sendAnimeAtMainMenu("https://anime.anidub.life/anime_movie/", "AnimeFilms"); -                break; -            case "/start": -//                DataBase.saveUser(update); -                Anime.setIsSearchingAnAnime(false); -                Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, ("Приветики, меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(MyKeyboard.getMain())); -                break; -            default: -                if (Anime.isSearchingAnAnime) { -                    Anime.setSearchedAnime(UserMessage.text); -                    Anime.setIsSearchingAnAnime(false); -                    try { -                        Bot.sendSearchedAnime(Anime.indexOfAnime, Anime.searchedAnime); -                    } catch (IOException e) { -                        e.printStackTrace(); -                    } -                } else { -                    Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(MyKeyboard.getMain())); +        if (animeTypes.get(UserMessage.text) != null || UserMessage.text.equals("Поиск аниме")) { +            if (UserMessage.text.equals("Поиск аниме")) { +                Anime.isSearching = true; +            } else { +                Anime.isSearching = false; +                Anime.typeOfAnime = animeTypes.get(UserMessage.text); +            } +            Bot.TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, "В какой озвучке будем смотреть?").replyMarkup(MyKeyboard.getDub())); +        } else if (UserMessage.text.equals("/start")) { +            Anime.isSearching = false; +            Bot.TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, ("Приветики, меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(MyKeyboard.getMain())); +        } else { +            if (Anime.isSearching && Anime.dub != null) { +                Anime.setSearchedAnime(UserMessage.text); +                try { +                    Bot.sendSearchedAnime(); +                } catch (IOException e) { +                    e.printStackTrace();                  } -                break; +                Anime.isSearching = false; +            } else { +                Anime.isSearching = false; +                Bot.TELEGRAM_BOT.execute(new SendMessage(UserMessage.chatId, "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(MyKeyboard.getMain())); +            }          } + +        Database.saveUser(Bot.telegramUser);      }  } |