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; -    } -} |