diff options
Diffstat (limited to 'src/main/java/files')
-rw-r--r-- | src/main/java/files/Anime.java | 86 | ||||
-rw-r--r-- | src/main/java/files/Bot.java | 94 | ||||
-rw-r--r-- | src/main/java/files/MyKeyboard.java | 71 | ||||
-rw-r--r-- | src/main/java/files/Parse.java (renamed from src/main/java/files/Parser.java) | 107 | ||||
-rw-r--r-- | src/main/java/files/UserCallbackQuery.java | 150 | ||||
-rw-r--r-- | src/main/java/files/UserMessage.java | 73 |
6 files changed, 371 insertions, 210 deletions
diff --git a/src/main/java/files/Anime.java b/src/main/java/files/Anime.java index 1b039ed..4f60149 100644 --- a/src/main/java/files/Anime.java +++ b/src/main/java/files/Anime.java @@ -1,24 +1,29 @@ package files; -import org.jsoup.Jsoup; -import org.jsoup.nodes.Element; - -import java.io.IOException; - public class Anime { private final String name; - private String description; + private final String description; private final String[] genres; private final String year; - private final String series; + private String series; private final String rating; public final String image; private final String url; - private static Anime[] list; - private static byte indexOfAnime = 0; - private static String searchedAnime; - private static byte searchedAnimeSize; - private static boolean isSearchingAnAnime; + public static Anime[] list; + public static byte indexOfAnime = 0; + public static String searchedAnime; + public static byte searchedAnimeSize; + public static boolean isSearchingAnAnime; + + 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; + this.year = year; + this.rating = rating; + this.image = image; + this.url = url; + } public Anime(String name, String description, String[] genres, String year, String series, String rating, String image, String url) { this.name = name; @@ -31,22 +36,33 @@ public class Anime { this.url = url; } - public String getDescription() throws IOException { - if (this.description == null) { - parseDescription(); - } - return description; + public String showInfo() { + return "<b>Название:</b> " + this.name + System.lineSeparator() + + getYear() + + getSeries() + + "<b>Рейтинг:</b> " + this.rating + " / 10" + System.lineSeparator() + + "<b>Описание:</b> " + this.description; } - public void parseDescription() throws IOException { - Element descriptionTemp = Parser.getPage(this.url).select("div[class=fdesc clr full-text clearfix]").first(); - this.description = Jsoup.parse(String.valueOf(descriptionTemp)).text(); + 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; } - public String showInfo() { - return "Имя: " + this.name + System.lineSeparator() + - "Серий: " + this.series + System.lineSeparator() + - "Рейтинг: " + this.rating; + public String getName() { + return name; + } + + public String getYear() { + return (year != null) ? ("<b>Год выхода:</b> " + this.year + System.lineSeparator()) : ""; + } + + public String getSeries() { + return (series != null) ? ("<b>Всего серий:</b> " + this.series + System.lineSeparator()) : ""; } public String getImage() { @@ -54,11 +70,7 @@ public class Anime { } public String getUrl() { - return url; - } - - public static byte getIndexOfAnime() { - return indexOfAnime; + return this.url; } public static void setIndexOfAnime(byte indexOfAnime) { @@ -73,18 +85,10 @@ public class Anime { indexOfAnime++; } - public static String getSearchedAnime() { - return searchedAnime; - } - public static void setSearchedAnime(String searchedAnime) { Anime.searchedAnime = searchedAnime.replace(' ', '+'); } - public static boolean getIsSearchingAnAnime() { - return isSearchingAnAnime; - } - public static void setIsSearchingAnAnime(boolean isSearchingAnAnime) { Anime.isSearchingAnAnime = isSearchingAnAnime; } @@ -93,14 +97,6 @@ public class Anime { Anime.searchedAnimeSize = searchedAnimeSize; } - public static byte getSearchedAnimeSize() { - return Anime.searchedAnimeSize; - } - - public static Anime[] getList() { - return list; - } - 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 dcbb64a..c1cff05 100644 --- a/src/main/java/files/Bot.java +++ b/src/main/java/files/Bot.java @@ -3,90 +3,92 @@ package files; import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.UpdatesListener; import com.pengrad.telegrambot.model.CallbackQuery; -import com.pengrad.telegrambot.model.Update; +import com.pengrad.telegrambot.model.request.ParseMode; import com.pengrad.telegrambot.request.SendMessage; import com.pengrad.telegrambot.request.SendPhoto; -import com.pengrad.telegrambot.request.SendVideo; -import com.pengrad.telegrambot.response.SendResponse; -import java.io.FileInputStream; -import java.io.IOException; +import java.io.*; import java.util.Properties; +// TODO: 7/25/21 Добавить поиск Аниме OVA, аниме по жанру, Дорамы, случайное аниме + public class Bot { - public static void main(String[] args) throws IOException { - // Loading properties - Properties properties = new Properties(); - properties.load(new FileInputStream("app.properties")); - // Creating telegram bot - TelegramBot telegramBot = new TelegramBot(properties.getProperty("TELEGRAM_TOKEN")); + 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); - // Setting updates listener telegramBot.setUpdatesListener(updates -> { updates.forEach(update -> { if (UserCallbackQuery.checkIfNotNull(update.callbackQuery())) { - UserCallbackQuery.setInformation(update.callbackQuery()); - UserCallbackQuery.execute(telegramBot); - } else if (UserMessage.checkIfNotNull(update.message())) { - UserMessage.setInformation(update.message()); - UserMessage.execute(telegramBot, update); + try { + UserCallbackQuery.execute(update.callbackQuery()); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (UserMessage.checkIfNotNull(update.message())) { + try { + UserMessage.execute(update.message()); + } catch (IOException e) { + e.printStackTrace(); + } } }); return UpdatesListener.CONFIRMED_UPDATES_ALL; }); } - public static void showAnimeAtMainMenu(TelegramBot telegramBot, Update update, byte index, String url, String typeOfAnime) { + public static Properties loadProperties(File file) { + Properties properties = new Properties(); + try (FileInputStream fis = new FileInputStream(file)) { + properties.load(fis); + } catch (IOException e) { + e.printStackTrace(); + } + return properties; + } + + public static void sendAnimeAtMainMenu(String url, String typeOfAnime) { Anime[] anime = new Anime[28]; + byte index = Anime.indexOfAnime; try { - anime = Parser.getAnimeAtMainMenu(url); + anime = Parse.getAnimeAtMainMenu(url, typeOfAnime); } catch (IOException e) { e.printStackTrace(); } Anime.setList(anime); - telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); + telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); } - public static void showAnimeAtMainMenuByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index, String typeOfAnime, Anime[] list) { - telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), list[index].getImage()).caption(list[index].showInfo()).replyMarkup(MyKeyboard.getCarousel(typeOfAnime))); + public static void sendAnimeAtMainMenuByCallBackQuery(String typeOfAnime) { + 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))); } - public static void showSearchedAnime(TelegramBot telegramBot, Update update, byte index, String searchedAnime) throws IOException { - byte animeAtSearchSize = Parser.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime); + public static void sendSearchedAnime(byte index, String searchedAnime) throws IOException { + byte animeAtSearchSize = Parse.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime); if (animeAtSearchSize > 0) { - Anime[] anime = new Anime[Parser.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime)]; + Anime[] anime = new Anime[Parse.getAnimeAtSearchSize("https://animego.org/search/all?q=" + searchedAnime)]; try { - anime = Parser.getAnimeAtSearch("https://animego.org/search/all?q=" + searchedAnime); + anime = Parse.getAnimeAtSearch("https://animego.org/search/all?q=" + searchedAnime); } catch (IOException e) { e.printStackTrace(); } Anime.setSearchedAnimeSize(animeAtSearchSize); Anime.setList(anime); - telegramBot.execute(new SendPhoto(update.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); + telegramBot.execute(new SendPhoto(UserMessage.chatId, anime[index].getImage()).caption(anime[index].showInfo()).parseMode(ParseMode.HTML).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); } else { - telegramBot.execute(new SendMessage(update.message().chat().id(), "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!")); + telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я не смог найти аниме с таким названием...\nДавай поищем другое аниме!")); Anime.setIsSearchingAnAnime(true); } } - public static void showSearchedAnimeByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index, Anime[] list) { - telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), list[index].getImage()).caption(list[index].showInfo()).replyMarkup(MyKeyboard.getCarousel("SearchedAnime"))); - } - - public static void showRecentlyAddedAnime(TelegramBot telegramBot, Update update, byte index) throws IOException { - showAnimeAtMainMenu(telegramBot, update, index, "https://anime.anidub.life/anime/anime_ongoing/", "RecentlyAddedAnime"); - } - - public static void showRecentlyAddedAnimeByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index) { - showAnimeAtMainMenuByCallBackQuery(telegramBot, callbackQuery, index,"RecentlyAddedAnime", Anime.getList()); - } - - public static void showRecentlyReleasedAnime(TelegramBot telegramBot, Update update, byte index) throws IOException { - showAnimeAtMainMenu(telegramBot, update, index, "https://animego.org/anime?sort=a.startDate&direction=desc", "RecentlyReleasedAnime"); - } - - public static void showRecentlyReleasedAnimeByCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index) { - showAnimeAtMainMenuByCallBackQuery(telegramBot, callbackQuery, index,"RecentlyReleasedAnime", Anime.getList()); + 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/MyKeyboard.java b/src/main/java/files/MyKeyboard.java index 8beb6e2..6212542 100644 --- a/src/main/java/files/MyKeyboard.java +++ b/src/main/java/files/MyKeyboard.java @@ -4,22 +4,81 @@ import com.pengrad.telegrambot.model.request.Keyboard; import com.pengrad.telegrambot.model.request.InlineKeyboardButton; import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup; import com.pengrad.telegrambot.model.request.ReplyKeyboardMarkup; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.IOException; +import java.util.ArrayList; public class MyKeyboard { public static Keyboard getMain() { return new ReplyKeyboardMarkup( new String[]{"Поиск аниме"}, - new String[]{"Недавно добавленные аниме"}, - new String[]{"Новинки аниме"}, - new String[]{"Случайное аниме"}) + new String[]{"Онгоинги"}, + new String[]{"Аниме сериалы"}, + new String[]{"Аниме фильмы"}) .oneTimeKeyboard(true) .resizeKeyboard(true) .selective(true); } public static Keyboard getCarousel(String typeOfAnime) { - return new InlineKeyboardMarkup( - new InlineKeyboardButton("<").callbackData("previous" + typeOfAnime), - new InlineKeyboardButton(">").callbackData("next" + typeOfAnime)); + InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); + + inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Смотреть / Скачать").callbackData("watchOrDownload")); + inlineKeyboardMarkup.addRow(new InlineKeyboardButton("Пред.").callbackData("previous" + typeOfAnime), new InlineKeyboardButton("След.").callbackData("next" + typeOfAnime)); + + return inlineKeyboardMarkup; + } + + public static Keyboard getDub() { + return new InlineKeyboardMarkup(new InlineKeyboardButton("Anidub").callbackData("anidub")); + } + + public static Keyboard getAnidub() throws IOException { + 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"); + ArrayList<String> series = new ArrayList<>(); + ArrayList<String> seriesUrls = new ArrayList<>(); + + for (Element seriesTemp : seriesList) { + series.add(Jsoup.parse(String.valueOf(seriesTemp)).text()); + } + + for (Element seriesTemp : seriesList) { + String text = seriesTemp.toString(); + int start = text.indexOf("=\"") + 2; + int end = text.indexOf("\" "); + char[] dst = new char[end - start]; + text.getChars(start, end, dst, 0); + seriesUrls.add(String.valueOf(dst)); + } + + InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); + for (int i = 0; i < series.size(); i++) { + if (i+2 < series.size()) { + 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()) { + inlineKeyboardMarkup.addRow( + new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)), + new InlineKeyboardButton(series.get(i+1)).url(seriesUrls.get(i+1)) + ); + i++; + } else { + inlineKeyboardMarkup.addRow( + new InlineKeyboardButton(series.get(i)).url(seriesUrls.get(i)) + ); + } + } + + return inlineKeyboardMarkup; } } diff --git a/src/main/java/files/Parser.java b/src/main/java/files/Parse.java index 6433297..031e91e 100644 --- a/src/main/java/files/Parser.java +++ b/src/main/java/files/Parse.java @@ -1,6 +1,5 @@ package files; -import com.pengrad.telegrambot.request.SendVideo; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -10,19 +9,23 @@ import java.io.IOException; import java.net.URL; import java.util.ArrayList; -public class Parser { +public class Parse { public static Document getPage(String url) throws IOException { return Jsoup.parse(new URL(url), 3000); } - public static Anime[] getAnimeAtMainMenu(String page) throws IOException { - Element animeList = Parser.getPage(page).select("div[id=dle-content]").first(); + public static Anime[] getAnimeAtMainMenu(String page, String typeOfAnime) throws IOException { + Element animeList = Parse.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=description d-none d-sm-block]"); -// Elements yearsTemp = animeList.select("span[class=anime-year mb-2]").select("a"); + Elements descriptionsTemp = animeList.select("div[class=th-tip-text]"); + Elements yearsTemp = null; + if (!typeOfAnime.equals("Ongoing")) yearsTemp = animeList.select("div[class=th-tip-meta fx-row fx-middle fx-start]"); // Elements genresTemp = animeList.select("span[class=anime-genre d-none d-sm-inline]").select("a[class=mb-2 text-link-gray text-underline]"); - Elements seriesTemp = animeList.select("div[class=th-title]"); + Elements seriesTemp = null; + if (!typeOfAnime.equals("AnimeFilms")) { + 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]"); @@ -31,41 +34,50 @@ public class Parser { ArrayList<String> names = new ArrayList<>(); for (Element name : namesTemp) { - 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)); + if (!typeOfAnime.equals("AnimeFilms")) { + 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> descriptions = new ArrayList<>(); + for (Element description : descriptionsTemp) { + descriptions.add(Jsoup.parse(String.valueOf(description)).text()); + } -// ArrayList<String> years = new ArrayList<>(); -// for (Element year : yearsTemp) { -// years.add(Jsoup.parse(String.valueOf(year)).text()); -// } + ArrayList<String> years = new ArrayList<>(); + if (!typeOfAnime.equals("Ongoing")) { + for (Element year : yearsTemp) { + Element yearTemp = year.child(0); + years.add(Jsoup.parse(String.valueOf(yearTemp)).text()); + } + } ArrayList<String> series = new ArrayList<>(); - for (Element oneSeries : seriesTemp) { - String text = oneSeries.toString(); - int start = text.indexOf("из ") + 3; - if (start == 2) start = text.indexOf("ИЗ ") + 3; - int end = text.indexOf("]"); - if (start == 2) { - start = text.indexOf("[") + 1; - end = text.indexOf(" по") + 1; - } - char[] dst = new char[end - start]; - text.getChars(start, end, dst, 0); - if (String.valueOf(dst).equals("ххх")) { - start = text.indexOf("[") + 1; - end = text.indexOf(" из") - 1; + if (!typeOfAnime.equals("AnimeFilms")) { + for (Element oneSeries : seriesTemp) { + String text = oneSeries.toString(); + int start = text.indexOf("из ") + 3; + if (start == 2) start = text.indexOf("ИЗ ") + 3; + int end = text.indexOf("]"); + if (start == 2) { + start = text.indexOf("[") + 1; + end = text.indexOf(" по") + 1; + } + char[] dst = new char[end - start]; + text.getChars(start, end, dst, 0); + if (String.valueOf(dst).equals("ххх")) { + start = text.indexOf("[") + 1; + end = text.indexOf(" из") - 1; + } + series.add(String.valueOf(dst)); } - series.add(String.valueOf(dst)); } ArrayList<String> ratings = new ArrayList<>(); @@ -78,9 +90,16 @@ public class Parser { 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); - images.add("https://anime.anidub.life/" + String.valueOf(dst)); + 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<>(); @@ -95,14 +114,20 @@ public class Parser { Anime[] anime = new Anime[countOfAnime]; for (int i = 0; i < countOfAnime; i++) { - anime[i] = new Anime(names.get(i), null, null, null, series.get(i), ratings.get(i), images.get(i), urls.get(i)); + if (typeOfAnime.equals("AnimeFilms")) { + anime[i] = new Anime(names.get(i), descriptions.get(i), null, years.get(i), ratings.get(i), images.get(i), urls.get(i)); + } else if (typeOfAnime.equals("Ongoing")) { + anime[i] = new Anime(names.get(i), descriptions.get(i), null, null, series.get(i), ratings.get(i), images.get(i), urls.get(i)); + } else { + anime[i] = new Anime(names.get(i), descriptions.get(i), null, years.get(i), series.get(i), ratings.get(i), images.get(i), urls.get(i)); + } } return anime; } public static Anime[] getAnimeAtSearch(String page) throws IOException { - Element animeList = Parser.getPage(page).select("div[class=animes-grid position-relative]").first(); + Element animeList = Parse.getPage(page).select("div[class=animes-grid position-relative]").first(); assert animeList != null; Elements namesTemp = animeList.select("div[class=h5 font-weight-normal mb-2 card-title text-truncate]").select("a"); Elements descriptionsTemp = animeList.select("div[class=anime-small-description read-more-container]"); @@ -166,7 +191,7 @@ public class Parser { } ArrayList<String> urls = new ArrayList<>(); - for (Element url :urlsTemp) { + for (Element url : urlsTemp) { String text = url.toString(); int start = text.indexOf("=\"") + 2; int end = text.indexOf("\" title") - 1; @@ -184,7 +209,7 @@ public class Parser { } public static byte getAnimeAtSearchSize(String page) throws IOException { - Element animeList = Parser.getPage(page).select("div[class=animes-grid position-relative]").first(); + Element animeList = Parse.getPage(page).select("div[class=animes-grid position-relative]").first(); assert animeList != null; if (animeList == null) return 0; diff --git a/src/main/java/files/UserCallbackQuery.java b/src/main/java/files/UserCallbackQuery.java index 7a297a8..553f6fd 100644 --- a/src/main/java/files/UserCallbackQuery.java +++ b/src/main/java/files/UserCallbackQuery.java @@ -2,81 +2,131 @@ 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.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; public class UserCallbackQuery extends com.pengrad.telegrambot.model.CallbackQuery { - private static CallbackQuery callbackQuery; - private static String data; - private static User user; - private static int messageId; - private static long chatId; + public static CallbackQuery callbackQuery; + 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 execute(TelegramBot telegramBot) { - if (data.equals("previousRecentlyAddedAnime")) { - if (Anime.getIndexOfAnime() == 0) { - Anime.setIndexOfAnime((byte) 19); - } else { - Anime.decreaseIndexOfAnime(); + public static void execute(CallbackQuery callbackQuery) throws IOException { + UserCallbackQuery.setInformation(callbackQuery); + + Bot.log.write(UserCallbackQuery.getInformation()); + Bot.log.flush(); + + switch (data) { + case "previousOngoing" -> { + if (Anime.indexOfAnime == 0) { + Anime.setIndexOfAnime((byte) 27); + } else { + Anime.decreaseIndexOfAnime(); + } + Bot.sendAnimeAtMainMenuByCallBackQuery("Ongoing"); } - Bot.showRecentlyAddedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); - } - if (data.equals("nextRecentlyAddedAnime")) { - if (Anime.getIndexOfAnime() == 19) { - Anime.setIndexOfAnime((byte) 0); - } else { - Anime.increaseIndexOfAnime(); + case "nextOngoing" -> { + if (Anime.indexOfAnime == 27) { + Anime.setIndexOfAnime((byte) 0); + } else { + Anime.increaseIndexOfAnime(); + } + Bot.sendAnimeAtMainMenuByCallBackQuery("Ongoing"); } - Bot.showRecentlyAddedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); - } - - if (data.equals("previousRecentlyReleasedAnime")) { - if (Anime.getIndexOfAnime() == 0) { - Anime.setIndexOfAnime((byte) 19); - } else { - Anime.decreaseIndexOfAnime(); + case "previousAnimeSerials" -> { + if (Anime.indexOfAnime == 0) { + Anime.setIndexOfAnime((byte) 27); + } else { + Anime.decreaseIndexOfAnime(); + } + Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeSerials"); } - Bot.showRecentlyReleasedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); - } - if (data.equals("nextRecentlyReleasedAnime")) { - if (Anime.getIndexOfAnime() == 19) { - Anime.setIndexOfAnime((byte) 0); - } else { - Anime.increaseIndexOfAnime(); + case "nextAnimeSerials" -> { + if (Anime.indexOfAnime == 27) { + Anime.setIndexOfAnime((byte) 0); + } else { + Anime.increaseIndexOfAnime(); + } + Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeSerials"); } - Bot.showRecentlyReleasedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); - } - - if (data.equals("previousSearchedAnime")) { - if (Anime.getIndexOfAnime() == 0) { - Anime.setIndexOfAnime((byte) (Anime.getSearchedAnimeSize() - 1)); - } else { - Anime.decreaseIndexOfAnime(); + case "previousAnimeFilms" -> { + if (Anime.indexOfAnime == 0) { + Anime.setIndexOfAnime((byte) 27); + } else { + Anime.decreaseIndexOfAnime(); + } + Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeFilms"); } - Bot.showSearchedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime(), Anime.getList()); - } - if (data.equals("nextSearchedAnime")) { - if (Anime.getIndexOfAnime() == Anime.getSearchedAnimeSize() - 1) { - Anime.setIndexOfAnime((byte) 0); - } else { - Anime.increaseIndexOfAnime(); + case "nextAnimeFilms" -> { + if (Anime.indexOfAnime == 27) { + Anime.setIndexOfAnime((byte) 0); + } else { + Anime.increaseIndexOfAnime(); + } + Bot.sendAnimeAtMainMenuByCallBackQuery("AnimeFilms"); + } + case "previousSearchedAnime" -> { + if (Anime.indexOfAnime == 0) { + Anime.setIndexOfAnime((byte) (Anime.searchedAnimeSize - 1)); + } else { + Anime.decreaseIndexOfAnime(); + } + Bot.sendSearchedAnimeByCallBackQuery(callbackQuery, Anime.indexOfAnime, Anime.list); + } + case "nextSearchedAnime" -> { + if (Anime.indexOfAnime == Anime.searchedAnimeSize - 1) { + Anime.setIndexOfAnime((byte) 0); + } else { + Anime.increaseIndexOfAnime(); + } + 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())); } - Bot.showSearchedAnimeByCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime(), Anime.getList()); } DeleteMessage deleteMessage = new DeleteMessage(chatId, messageId); - telegramBot.execute(deleteMessage); + Bot.telegramBot.execute(deleteMessage); } } diff --git a/src/main/java/files/UserMessage.java b/src/main/java/files/UserMessage.java index 14addf1..0670295 100644 --- a/src/main/java/files/UserMessage.java +++ b/src/main/java/files/UserMessage.java @@ -1,68 +1,97 @@ package files; -import com.pengrad.telegrambot.TelegramBot; import com.pengrad.telegrambot.model.Message; -import com.pengrad.telegrambot.model.Update; +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; 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; 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(TelegramBot telegramBot, Update update) { + public static void execute(Message message) throws IOException { + UserMessage.setInformation(message); + + Bot.log.write(UserMessage.getInformation()); + Bot.log.flush(); + switch (UserMessage.text) { - case "Поиск аниме": +// case "Поиск аниме": +// Anime.setIndexOfAnime((byte) 0); +// Anime.setIsSearchingAnAnime(true); +// telegramBot.execute(new SendMessage(UserMessage.chatId, "Введи название аниме, которое хочешь найти...")); +// break; + case "Онгоинги": Anime.setIndexOfAnime((byte) 0); - Anime.setIsSearchingAnAnime(true); - telegramBot.execute(new SendMessage(UserMessage.chatId, "Введи название аниме, которое хочешь найти...")); + Anime.setIsSearchingAnAnime(false); + Bot.sendAnimeAtMainMenu("https://online.anidub.com/anime/anime_ongoing/", "Ongoing"); break; - case "Недавно добавленные аниме": + case "Аниме сериалы": Anime.setIndexOfAnime((byte) 0); Anime.setIsSearchingAnAnime(false); - try { - Bot.showRecentlyAddedAnime(telegramBot, update, Anime.getIndexOfAnime()); - } catch (IOException e) { - e.printStackTrace(); - } + Bot.sendAnimeAtMainMenu("https://online.anidub.com/anime/full/", "AnimeSerials"); break; - case "Новинки аниме": + case "Аниме фильмы": Anime.setIndexOfAnime((byte) 0); Anime.setIsSearchingAnAnime(false); - try { - Bot.showRecentlyReleasedAnime(telegramBot, update, Anime.getIndexOfAnime()); - } catch (IOException e) { - e.printStackTrace(); - } + Bot.sendAnimeAtMainMenu("https://anime.anidub.life/anime_movie/", "AnimeFilms"); break; case "/start": // DataBase.saveUser(update); Anime.setIsSearchingAnAnime(false); - telegramBot.execute(new SendMessage(UserMessage.chatId, ("Приветики, меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(MyKeyboard.getMain())); + Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, ("Приветики, меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(MyKeyboard.getMain())); break; default: - if (Anime.getIsSearchingAnAnime()) { + if (Anime.isSearchingAnAnime) { Anime.setSearchedAnime(UserMessage.text); Anime.setIsSearchingAnAnime(false); try { - Bot.showSearchedAnime(telegramBot, update, Anime.getIndexOfAnime(), Anime.getSearchedAnime()); + Bot.sendSearchedAnime(Anime.indexOfAnime, Anime.searchedAnime); } catch (IOException e) { e.printStackTrace(); } } else { - telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(MyKeyboard.getMain())); + Bot.telegramBot.execute(new SendMessage(UserMessage.chatId, "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(MyKeyboard.getMain())); } break; } |