diff --git a/.gitignore b/.gitignore index a1c2a23..36d2a6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,40 @@ -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) +# Java .mtj.tmp/ - -# Package Files # +*.class *.jar *.war -*.nar *.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +*.nar hs_err_pid* +scr/main/resources/config.properties +*/test + +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +pom.xml.bak +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar + +# Gradle +bin/ +build/ +.gradle +.gradletasknamecache +gradle-app.setting +!gradle-wrapper.jar + +# IntelliJ +out/ +.idea/ +.idea_modules/ +*.iml +*.ipr +*.iws + diff --git a/.idea/JavaTelegramBot.iml b/.idea/JavaTelegramBot.iml index 9cd0610..545041e 100644 --- a/.idea/JavaTelegramBot.iml +++ b/.idea/JavaTelegramBot.iml @@ -1,11 +1,59 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..1ad8a71 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6bc67df --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,30 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..b96e09e --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_telegram_telegrambots_6_1_0.xml b/.idea/libraries/Maven__org_telegram_telegrambots_6_1_0.xml new file mode 100644 index 0000000..4bf6a87 --- /dev/null +++ b/.idea/libraries/Maven__org_telegram_telegrambots_6_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 13de180..bd70885 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,16 @@ + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..45a7b72 --- /dev/null +++ b/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + + ru.oopteam.bot + java-tg-bot + 1.0-SNAPSHOT + + + + + org.telegram + telegrambots + 6.1.0 + + + ru.oopteam.bot + java-tg-bot + 1.0-SNAPSHOT + + + + org.slf4j + slf4j-simple + LATEST + test + + + + org.jsoup + jsoup + LATEST + + + + + + org.slf4j + slf4j-api + LATEST + + + + + + + Kuznetsov Dmitry + + + Kiselev Egor + + + + + + 18 + 18 + + + \ No newline at end of file diff --git a/scr/main/java/ru/oopteam/bot/Main.java b/scr/main/java/ru/oopteam/bot/Main.java index 5f588cc..d5c72dc 100644 --- a/scr/main/java/ru/oopteam/bot/Main.java +++ b/scr/main/java/ru/oopteam/bot/Main.java @@ -1,19 +1,27 @@ package ru.oopteam.bot; -import ru.oopteam.bot.readers.*; -import ru.oopteam.bot.writers.*; -import ru.oopteam.bot.handlers.*; +import org.telegram.telegrambots.meta.TelegramBotsApi; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; +import ru.oopteam.bot.tgbot.Bot; -public class Main{ +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + +public class Main { public static void main(String[] args) { - Reader reader = new ConsoleReader(); - Handler handler = new SimpleHandler(); - Writer writer = new ConsoleWriter(); - while (true) { - Request request = reader.read(); - Response response = handler.handle(request); - writer.write(response); + Properties properties = new Properties(); + + try { + TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class); + properties.load(new FileInputStream("scr/main/resources/config.properties")); + botsApi.registerBot(new Bot(properties.getProperty("botName"), properties.getProperty("token"))); + } catch (TelegramApiException e) { + e.printStackTrace(); + } catch (IOException e) { + throw new RuntimeException(e); } } diff --git a/scr/main/java/ru/oopteam/bot/handlers/SimpleHandler.java b/scr/main/java/ru/oopteam/bot/handlers/SimpleHandler.java index 408951d..661747f 100644 --- a/scr/main/java/ru/oopteam/bot/handlers/SimpleHandler.java +++ b/scr/main/java/ru/oopteam/bot/handlers/SimpleHandler.java @@ -4,8 +4,12 @@ import ru.oopteam.bot.writers.Response; public class SimpleHandler implements Handler { - @Override + public Response handle(Request request) { - return new Response(request.getMessage()); + if (request.getUserID() == null) { + String requestText = request.getMessage(); + return new Response(requestText); + } + return new Response(request.getMessage(), request.getUserID()); } } diff --git a/scr/main/java/ru/oopteam/bot/parsing/Data.java b/scr/main/java/ru/oopteam/bot/parsing/Data.java new file mode 100644 index 0000000..486b360 --- /dev/null +++ b/scr/main/java/ru/oopteam/bot/parsing/Data.java @@ -0,0 +1,2 @@ +package ru.oopteam.bot.parsing; + diff --git a/scr/main/java/ru/oopteam/bot/parsing/GettingCurrency.java b/scr/main/java/ru/oopteam/bot/parsing/GettingCurrency.java new file mode 100644 index 0000000..19224a3 --- /dev/null +++ b/scr/main/java/ru/oopteam/bot/parsing/GettingCurrency.java @@ -0,0 +1,40 @@ +package ru.oopteam.bot.parsing; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + + +public class GettingCurrency { + public static void main(String[] args) { + + try { + + var doc = Jsoup.connect("https://www.binance.com/ru/markets").get(); + var titleElements = doc.getElementsByClass("css-ovtrou"); + var titleElements2 = doc.getElementsByClass("css-1x8dg53"); + + List CryptoName = titleElements2.stream() + .map(Element::text) + .collect(Collectors.toList()); + //Adding Crypto Names to list + List Currency = titleElements.stream() + .map(Element::text) + .collect(Collectors.toList()); + //Adding Crypto Currency to list + + HashMap currencyDictionary = new HashMap<>(); + for (int i = 0; i < CryptoName.size();i++){ + currencyDictionary.put(CryptoName.get(i), Currency.get(i)); + + } + System.out.println(currencyDictionary); + + } + catch (Exception e){ + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/scr/main/java/ru/oopteam/bot/readers/ConsoleReader.java b/scr/main/java/ru/oopteam/bot/readers/ConsoleReader.java deleted file mode 100644 index e605732..0000000 --- a/scr/main/java/ru/oopteam/bot/readers/ConsoleReader.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.oopteam.bot.readers; - -import java.util.Scanner; - -public class ConsoleReader implements Reader { - final Scanner scanner = new Scanner(System.in); - - @Override - public Request read() { - String message = scanner.nextLine(); - return new Request(message); - } -} diff --git a/scr/main/java/ru/oopteam/bot/readers/Request.java b/scr/main/java/ru/oopteam/bot/readers/Request.java index f9a2de6..ede77fc 100644 --- a/scr/main/java/ru/oopteam/bot/readers/Request.java +++ b/scr/main/java/ru/oopteam/bot/readers/Request.java @@ -3,12 +3,18 @@ public class Request { private final String message; + private final Long userID; - public Request(String message){ + public Request(String message, Long userID){ this.message = message; + this.userID = userID; } public String getMessage(){ return message; } + + public Long getUserID() { + return this.userID; + } } diff --git a/scr/main/java/ru/oopteam/bot/tgbot/Bot.java b/scr/main/java/ru/oopteam/bot/tgbot/Bot.java new file mode 100644 index 0000000..0c4ac42 --- /dev/null +++ b/scr/main/java/ru/oopteam/bot/tgbot/Bot.java @@ -0,0 +1,58 @@ +package ru.oopteam.bot.tgbot; + +import org.telegram.telegrambots.bots.TelegramLongPollingBot; +import org.telegram.telegrambots.meta.api.methods.BotApiMethod; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Update; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import ru.oopteam.bot.handlers.Handler; +import ru.oopteam.bot.handlers.SimpleHandler; +import ru.oopteam.bot.readers.Request; +import ru.oopteam.bot.writers.Response; +import ru.oopteam.bot.writers.Writer; + + +public class Bot extends TelegramLongPollingBot implements Writer { + + private final String botName; + private final String token; + private final SimpleHandler handler; + private final Converter converter; + + public Bot(String botName, String token) { + this.botName = botName; + this.token = token; + handler = new SimpleHandler(); + converter = new Converter(); + } + + @Override + public void onUpdateReceived(Update update) { + if (update.hasMessage()) { + Request request = converter.convertUpdateToRequest(update); + Response response = handler.handle(request); + write(response); + } + } + + + @Override + public String getBotUsername() { + return this.botName; + } + + @Override + public String getBotToken() { + return this.token; + } + + @Override + public void write(Response response) { + BotApiMethod sm = converter.convertResponseToMethod(response); + try { + execute(sm); + } catch (TelegramApiException e) { + e.printStackTrace(); + } + } +} diff --git a/scr/main/java/ru/oopteam/bot/tgbot/Converter.java b/scr/main/java/ru/oopteam/bot/tgbot/Converter.java new file mode 100644 index 0000000..5496784 --- /dev/null +++ b/scr/main/java/ru/oopteam/bot/tgbot/Converter.java @@ -0,0 +1,24 @@ +package ru.oopteam.bot.tgbot; + +import org.telegram.telegrambots.meta.api.methods.BotApiMethod; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.api.objects.Update; +import ru.oopteam.bot.readers.Request; +import ru.oopteam.bot.writers.Response; + +public class Converter { + + public Request convertUpdateToRequest(Update update) { + String message = update.getMessage().getText(); + Long userID = update.getMessage().getFrom().getId(); + return new Request(message, userID); + } + + public BotApiMethod convertResponseToMethod(Response response) { + return SendMessage.builder() + .chatId(response.getUserID().toString()) + .text(response.getAnswer()) + .build(); + } + +} diff --git a/scr/main/java/ru/oopteam/bot/writers/ConsoleWriter.java b/scr/main/java/ru/oopteam/bot/writers/ConsoleWriter.java deleted file mode 100644 index e8647a4..0000000 --- a/scr/main/java/ru/oopteam/bot/writers/ConsoleWriter.java +++ /dev/null @@ -1,12 +0,0 @@ -package ru.oopteam.bot.writers; - -import ru.oopteam.bot.writers.*; - -public class ConsoleWriter implements Writer -{ - - @Override - public void write(Response response) { - System.out.println(response.getMessage()); - } -} diff --git a/scr/main/java/ru/oopteam/bot/writers/Response.java b/scr/main/java/ru/oopteam/bot/writers/Response.java index c4526a2..2d07e70 100644 --- a/scr/main/java/ru/oopteam/bot/writers/Response.java +++ b/scr/main/java/ru/oopteam/bot/writers/Response.java @@ -1,15 +1,26 @@ package ru.oopteam.bot.writers; public class Response { - private final String message; + private final String answer; + private final Long userID; + // Console bot constructor + public Response(String answer) { + this.answer = answer; + this.userID = null; + } - public Response(String text) { - message = text; + // Telegram bot constructor + public Response(String answer, Long userID) { + this.answer = answer; + this.userID = userID; } + public String getAnswer() { + return answer; + } - public String getMessage() { - return message; + public Long getUserID() { + return userID; } } diff --git a/scr/main/java/ru/oopteam/bot/writers/Writer.java b/scr/main/java/ru/oopteam/bot/writers/Writer.java index 8f0a8cf..c75aa3a 100644 --- a/scr/main/java/ru/oopteam/bot/writers/Writer.java +++ b/scr/main/java/ru/oopteam/bot/writers/Writer.java @@ -1,7 +1,10 @@ package ru.oopteam.bot.writers; +import org.telegram.telegrambots.meta.api.objects.Update; + public interface Writer { void write(Response response); - + + void onUpdateReceived(Update update); } diff --git a/scr/main/resources/config.properties b/scr/main/resources/config.properties new file mode 100644 index 0000000..ac2eafb --- /dev/null +++ b/scr/main/resources/config.properties @@ -0,0 +1,4 @@ +#tg token +#Thu Dec 01 22:46:06 YEKT 2022 +token=5918832145:AAEJLhWvQt6ZNaoJNv_HNBUATaoK36v4W1Q +botName=CryptoTracker