summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/files/Anime.java57
-rw-r--r--src/main/java/files/Bot.java63
-rw-r--r--src/main/java/files/Database.java41
-rw-r--r--src/main/java/files/MyKeyboard.java15
-rw-r--r--src/main/java/files/Parser.java142
-rw-r--r--src/main/java/files/TelegramUser.java69
-rw-r--r--src/main/java/files/UserCallbackQuery.java121
-rw-r--r--src/main/java/files/UserMessage.java107
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);
}
}