diff options
Diffstat (limited to 'src/main/java/files')
-rw-r--r-- | src/main/java/files/App.java | 63 | ||||
-rw-r--r-- | src/main/java/files/Bot.java | 63 | ||||
-rw-r--r-- | src/main/java/files/DataBase.java | 49 | ||||
-rw-r--r-- | src/main/java/files/entity/TelegramUser.java | 31 | ||||
-rw-r--r-- | src/main/java/files/entity/User.java | 39 |
5 files changed, 143 insertions, 102 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; - } -} |