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.User; import com.pengrad.telegrambot.model.request.InlineKeyboardButton; import com.pengrad.telegrambot.model.request.InlineKeyboardMarkup; import com.pengrad.telegrambot.model.request.Keyboard; import com.pengrad.telegrambot.model.request.ReplyKeyboardMarkup; import com.pengrad.telegrambot.request.DeleteMessage; import com.pengrad.telegrambot.request.SendMessage; import com.pengrad.telegrambot.request.SendPhoto; import com.pengrad.telegrambot.response.BaseResponse; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; 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")); telegramBot.setUpdatesListener(updates -> { updates.forEach(update -> { if (update.callbackQuery() != null) { CallbackQuery callbackQuery = update.callbackQuery(); String data = callbackQuery.data(); User user = callbackQuery.from(); int messageId = callbackQuery.message().messageId(); long chatId = callbackQuery.message().chat().id(); if (data.equals("previousRecentlyAddedAnime")) { if (Anime.getIndexOfAnime() == 0) { Anime.setIndexOfAnime((byte) 19); } else { Anime.decreaseIndexOfAnime(); } Bot.showRecentlyAddedAnimeCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); } if (data.equals("nextRecentlyAddedAnime")) { if (Anime.getIndexOfAnime() == 19) { Anime.setIndexOfAnime((byte) 0); } else { Anime.increaseIndexOfAnime(); } Bot.showRecentlyAddedAnimeCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); } if (data.equals("previousRecentlyReleasedAnime")) { if (Anime.getIndexOfAnime() == 0) { Anime.setIndexOfAnime((byte) 19); } else { Anime.decreaseIndexOfAnime(); } Bot.showRecentlyReleasedAnimeCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); } if (data.equals("nextRecentlyReleasedAnime")) { if (Anime.getIndexOfAnime() == 19) { Anime.setIndexOfAnime((byte) 0); } else { Anime.increaseIndexOfAnime(); } Bot.showRecentlyReleasedAnimeCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfAnime()); } DeleteMessage deleteMessage = new DeleteMessage(chatId, messageId); BaseResponse response = telegramBot.execute(deleteMessage); } else if (update.message() != null && update.message().text().equals("Недавно добавленные аниме")) { Anime.setIndexOfAnime((byte) 0); Bot.showRecentlyAddedAnime(telegramBot, update, Anime.getIndexOfAnime()); } else if (update.message() != null && update.message().text().equals("Новинки аниме")) { Anime.setIndexOfAnime((byte) 0); Bot.showRecentlyReleasedAnime(telegramBot, update, Anime.getIndexOfAnime()); } else if (update.message() != null && update.message().text().equals("/start")) { // DataBase.saveUser(update); telegramBot.execute(new SendMessage(update.message().chat().id(), ("Приветики " + update.message().from().firstName() + ", меня звать AniMarfo!\nЯ помогу тебе найти аниме, скачать его или же смотреть прямо тут.")).replyMarkup(getMainKeyboard())); } else if (update.message() != null) { telegramBot.execute(new SendMessage(update.message().chat().id(), "Прости, но я тебя не понимаю...\nВоспользуйся командами на твоей клавлиатуре!").replyMarkup(getMainKeyboard())); } }); return UpdatesListener.CONFIRMED_UPDATES_ALL; }); } public static Keyboard getMainKeyboard() { return new ReplyKeyboardMarkup( new String[]{"Поиск аниме"}, new String[]{"Недавно добавленные аниме"}, new String[]{"Новинки аниме"}, new String[]{"Случайное аниме"}) .oneTimeKeyboard(true) .resizeKeyboard(true) .selective(true); } public static Keyboard getCarouselKeyboard(String typeOfAnime) { return new InlineKeyboardMarkup( new InlineKeyboardButton("<").callbackData("previous" + typeOfAnime), new InlineKeyboardButton(">").callbackData("next" + typeOfAnime)); } public static void showRecentlyAddedAnime(TelegramBot telegramBot, Update update, byte index) { Anime[] anime = new Anime[20]; try { anime = Parser.getAnimeAtMainMenu("https://animego.org/anime?sort=a.createdAt&direction=desc"); } catch (IOException e) { e.printStackTrace(); } telegramBot.execute(new SendPhoto(update.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(Bot.getCarouselKeyboard("RecentlyAddedAnime"))); } public static void showRecentlyAddedAnimeCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index) { Anime[] anime = new Anime[20]; try { anime = Parser.getAnimeAtMainMenu("https://animego.org/anime?sort=a.createdAt&direction=desc"); } catch (IOException e) { e.printStackTrace(); } telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(Bot.getCarouselKeyboard("RecentlyAddedAnime"))); } public static void showRecentlyReleasedAnime(TelegramBot telegramBot, Update update, byte index) { Anime[] anime = new Anime[20]; try { anime = Parser.getAnimeAtMainMenu("https://animego.org/anime?sort=a.startDate&direction=desc"); } catch (IOException e) { e.printStackTrace(); } telegramBot.execute(new SendPhoto(update.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(Bot.getCarouselKeyboard("RecentlyReleasedAnime"))); } public static void showRecentlyReleasedAnimeCallBackQuery(TelegramBot telegramBot, CallbackQuery callbackQuery, byte index) { Anime[] anime = new Anime[20]; try { anime = Parser.getAnimeAtMainMenu("https://animego.org/anime?sort=a.startDate&direction=desc"); } catch (IOException e) { e.printStackTrace(); } telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(Bot.getCarouselKeyboard("RecentlyReleasedAnime"))); } }