summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/files/App.java63
-rw-r--r--src/main/java/files/Bot.java63
-rw-r--r--src/main/java/files/DataBase.java49
-rw-r--r--src/main/java/files/entity/TelegramUser.java31
-rw-r--r--src/main/java/files/entity/User.java39
-rw-r--r--src/main/resources/META-INF/persistence.xml2
6 files changed, 144 insertions, 103 deletions
diff --git a/src/main/java/files/App.java b/src/main/java/files/App.java
deleted file mode 100644
index 4e8c4bc..0000000
--- a/src/main/java/files/App.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package files;
-
-import com.pengrad.telegrambot.TelegramBot;
-import com.pengrad.telegrambot.UpdatesListener;
-import com.pengrad.telegrambot.request.SendMessage;
-
-import com.pengrad.telegrambot.request.SendPhoto;
-import files.entity.User;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Properties;
-
-public class App {
- public static void main(String[] args) throws IOException {
- // Loading properties
- Properties properties = new Properties();
- properties.load(new FileInputStream("app.properties"));
-
- // Creating telegram bot
- TelegramBot bot = new TelegramBot(properties.getProperty("telegram_token"));
-
- bot.setUpdatesListener(updates -> {
- updates.forEach(update -> {
- Long telegramId = update.message().from().id();
-
- EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("animarfo");
- EntityManager manager = entityManagerFactory.createEntityManager();
- if(manager.find(User.class, telegramId) == null) {
- String fullName = update.message().from().firstName();
- Boolean isBot = update.message().from().isBot();
- String username = update.message().from().username();
- String date = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date(update.message().date() * 1000L));
- if (update.message().chat().lastName() != null) fullName += " " + update.message().chat().lastName();
-
- bot.execute(new SendMessage(update.message().chat().id(), "Привет!"));
-
- User user = new User(telegramId, username, isBot, fullName, date);
- System.out.println(user.getFullName());
- manager.getTransaction().begin();
- manager.merge(user);
- manager.getTransaction().commit();
-
- manager.close();
- entityManagerFactory.close();
- }
- Anime[] anime = new Anime[0];
- 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[0].getImage()).caption(anime[0].showInfo()));
- });
- return UpdatesListener.CONFIRMED_UPDATES_ALL;
- });
- }
-}
diff --git a/src/main/java/files/Bot.java b/src/main/java/files/Bot.java
new file mode 100644
index 0000000..fb39ebc
--- /dev/null
+++ b/src/main/java/files/Bot.java
@@ -0,0 +1,63 @@
+package files;
+
+import com.pengrad.telegrambot.TelegramBot;
+import com.pengrad.telegrambot.UpdatesListener;
+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.SendPhoto;
+import files.entity.TelegramUser;
+
+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 {
+ 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 -> {
+ DataBase.saveUser(update);
+ Bot.showRecentlyAddedAnime(telegramBot, update, (byte) 5);
+ });
+ return UpdatesListener.CONFIRMED_UPDATES_ALL;
+ });
+ }
+
+ public static Keyboard getMainKeyboard() {
+ return new ReplyKeyboardMarkup(
+ new String[]{"Поиск аниме"},
+ new String[]{"Случайное аниме"})
+ .oneTimeKeyboard(true)
+ .resizeKeyboard(true)
+ .selective(true);
+ }
+
+ public static Keyboard getCarouselKeyboard() {
+ return new InlineKeyboardMarkup(
+ new InlineKeyboardButton("<-").callbackData("callback_data"),
+ new InlineKeyboardButton("->").callbackData("callback_data"));
+ }
+
+ public static void showRecentlyAddedAnime(TelegramBot bot, Update update, byte index) {
+ Anime[] anime = new Anime[0];
+ 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()));
+ }
+}
diff --git a/src/main/java/files/DataBase.java b/src/main/java/files/DataBase.java
new file mode 100644
index 0000000..d457d23
--- /dev/null
+++ b/src/main/java/files/DataBase.java
@@ -0,0 +1,49 @@
+package files;
+
+import com.pengrad.telegrambot.model.Update;
+import com.pengrad.telegrambot.model.User;
+
+import files.entity.TelegramUser;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class DataBase {
+ public static EntityManager connectionCreate() {
+ EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("animarfo");
+ return entityManagerFactory.createEntityManager();
+ }
+
+ public static void connectionDestroy(EntityManager entityManager) {
+ entityManager.close();
+ }
+
+ public static boolean checkIfUserNotExists(Long telegramId) {
+ EntityManager manager = connectionCreate();
+ return (manager.find(TelegramUser.class, telegramId) == null);
+ }
+
+ public static void saveUser(Update update) {
+ User user = update.message().from();
+ Long telegramId = user.id();
+ String fullName = user.firstName() + TelegramUser.checkIfHasLastName(user);
+ Boolean isBot = user.isBot();
+ String username = user.username();
+ String date = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date(update.message().date() * 1000L));
+
+ if (DataBase.checkIfUserNotExists(telegramId)) {
+ EntityManager entityManager = DataBase.connectionCreate();
+
+ TelegramUser telegramUser = new TelegramUser(telegramId, username, isBot, fullName, date);
+
+ entityManager.getTransaction().begin();
+ entityManager.merge(telegramUser);
+ entityManager.getTransaction().commit();
+
+ DataBase.connectionDestroy(entityManager);
+ }
+ }
+}
diff --git a/src/main/java/files/entity/TelegramUser.java b/src/main/java/files/entity/TelegramUser.java
new file mode 100644
index 0000000..d32189a
--- /dev/null
+++ b/src/main/java/files/entity/TelegramUser.java
@@ -0,0 +1,31 @@
+package files.entity;
+
+import com.pengrad.telegrambot.model.User;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+@Entity
+public class TelegramUser {
+ @Id
+ private Long id;
+ private String username;
+ private Boolean isBot;
+ private String fullName;
+ private String date;
+
+ public TelegramUser() {}
+
+ public TelegramUser(long id, String username, boolean isBot, String fullName, String date) {
+ this.id = id;
+ this.username = username;
+ this.isBot = isBot;
+ this.fullName = fullName;
+ this.date = date;
+ }
+
+ public static String checkIfHasLastName(User user) {
+ String lastName = user.lastName();
+ return (lastName != null) ? (" " + lastName) : ("");
+ }
+}
diff --git a/src/main/java/files/entity/User.java b/src/main/java/files/entity/User.java
deleted file mode 100644
index 973d781..0000000
--- a/src/main/java/files/entity/User.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package files.entity;
-
-import javax.persistence.Entity;
-import javax.persistence.Id;
-
-@Entity
-public class User {
- @Id
- private Long id;
- private String username;
- private Boolean isBot;
- private String fullName;
- private String date;
-
- public User() {}
-
- public User(long id, String username, boolean isBot, String fullName, String date) {
- this.id = id;
- this.isBot = isBot;
- this.fullName = fullName;
- this.date = date;
- }
-
- public Long getId() {
- return id;
- }
-
- public Boolean getIsBot() {
- return isBot;
- }
-
- public String getFullName() {
- return fullName;
- }
-
- public String getDate() {
- return date;
- }
-}
diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml
index 7798194..00cb84d 100644
--- a/src/main/resources/META-INF/persistence.xml
+++ b/src/main/resources/META-INF/persistence.xml
@@ -7,7 +7,7 @@
<persistence-unit name="animarfo" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
- <class>files.entity.User</class>
+ <class>files.entity.TelegramUser</class>
<properties>
<property name="hibernate.ogm.datastore.provider" value="mongodb"/>