diff options
Diffstat (limited to 'src/main/java/files')
-rw-r--r-- | src/main/java/files/Anime.java | 25 | ||||
-rw-r--r-- | src/main/java/files/Bot.java | 59 |
2 files changed, 70 insertions, 14 deletions
diff --git a/src/main/java/files/Anime.java b/src/main/java/files/Anime.java index 92aa954..6fd72b8 100644 --- a/src/main/java/files/Anime.java +++ b/src/main/java/files/Anime.java @@ -6,6 +6,7 @@ public class Anime { private final String[] genres; private final String year; private final String image; + private static byte indexOfRecentlyAddedAnime = 0; public Anime(String name, String description, String[] genres, String year, String image) { this.name = name; @@ -15,13 +16,29 @@ public class Anime { this.image = image; } - public String getImage() { - return image; - } - public String showInfo() { return "Имя: " + this.name + System.lineSeparator() + "Описание: " + this.description + System.lineSeparator() + "Год: " + this.year + System.lineSeparator(); } + + public String getImage() { + return image; + } + + public static byte getIndexOfRecentlyAddedAnime() { + return indexOfRecentlyAddedAnime; + } + + public static void setIndexOfRecentlyAddedAnime(byte number) { + indexOfRecentlyAddedAnime = number; + } + + public static void decreaseIndexOfRecentlyAddedAnime() { + indexOfRecentlyAddedAnime--; + } + + public static void increaseIndexOfRecentlyAddedAnime() { + indexOfRecentlyAddedAnime++; + } } diff --git a/src/main/java/files/Bot.java b/src/main/java/files/Bot.java index fb39ebc..59190df 100644 --- a/src/main/java/files/Bot.java +++ b/src/main/java/files/Bot.java @@ -2,20 +2,20 @@ 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 files.entity.TelegramUser; +import com.pengrad.telegrambot.response.BaseResponse; -import javax.persistence.EntityManager; import java.io.FileInputStream; import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.Properties; public class Bot { @@ -29,8 +29,36 @@ public class Bot { telegramBot.setUpdatesListener(updates -> { updates.forEach(update -> { + byte indexOfRecentlyAddedAnime = Anime.getIndexOfRecentlyAddedAnime(); + + if (update.callbackQuery() != null && update.message() != null) { + CallbackQuery callbackQuery = update.callbackQuery(); + String data = callbackQuery.data(); + User user = callbackQuery.from(); + int messageId = callbackQuery.message().messageId(); + long chatId = callbackQuery.message().chat().id(); + + System.out.println(callbackQuery.toString()); + + if (data.equals("previous")) { + Anime.decreaseIndexOfRecentlyAddedAnime(); + if (indexOfRecentlyAddedAnime == -1) Anime.setIndexOfRecentlyAddedAnime((byte) 19); + Bot.showRecentlyAddedAnimeCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfRecentlyAddedAnime()); + } + if (data.equals("next")) { + Anime.increaseIndexOfRecentlyAddedAnime(); + if (indexOfRecentlyAddedAnime == 20) Anime.setIndexOfRecentlyAddedAnime((byte) 0); + Bot.showRecentlyAddedAnimeCallBackQuery(telegramBot, callbackQuery, Anime.getIndexOfRecentlyAddedAnime()); + } + + DeleteMessage deleteMessage = new DeleteMessage(chatId, messageId); + BaseResponse response = telegramBot.execute(deleteMessage); + } DataBase.saveUser(update); - Bot.showRecentlyAddedAnime(telegramBot, update, (byte) 5); + + indexOfRecentlyAddedAnime = 0; + Anime.setIndexOfRecentlyAddedAnime((byte) 0); + Bot.showRecentlyAddedAnime(telegramBot, update, (byte) indexOfRecentlyAddedAnime); }); return UpdatesListener.CONFIRMED_UPDATES_ALL; }); @@ -39,6 +67,7 @@ public class Bot { public static Keyboard getMainKeyboard() { return new ReplyKeyboardMarkup( new String[]{"Поиск аниме"}, + new String[]{"Недавно добавленные аниме"}, new String[]{"Случайное аниме"}) .oneTimeKeyboard(true) .resizeKeyboard(true) @@ -47,17 +76,27 @@ public class Bot { public static Keyboard getCarouselKeyboard() { return new InlineKeyboardMarkup( - new InlineKeyboardButton("<-").callbackData("callback_data"), - new InlineKeyboardButton("->").callbackData("callback_data")); + new InlineKeyboardButton("<-").callbackData("previous"), + new InlineKeyboardButton("->").callbackData("next")); + } + + 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())); } - public static void showRecentlyAddedAnime(TelegramBot bot, Update update, byte index) { - Anime[] anime = new Anime[0]; + 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(); } - bot.execute(new SendPhoto(update.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(Bot.getCarouselKeyboard())); + telegramBot.execute(new SendPhoto(callbackQuery.message().chat().id(), anime[index].getImage()).caption(anime[index].showInfo()).replyMarkup(Bot.getCarouselKeyboard())); } } |