Отправка сообщения в телеграм на Java
Появилась тут задача:
Требуется создать программу для Windows, которая будет скрапить веб-сайт (www.asianbetsoccer.com/it/livescore.html), получать данные каждые 15 минут, а при возникновении некоторых условий отправлять сигнал по телеграмм-каналу. Может быть написана на любом языке (Java, Js, Python).
Скрапить (парсить) сайт можно на любом из выбранных языков. А вот потом отправлять сообщение боту удобнее всего на Java. Точнее, мне удобнее всего было сделать полностью программу на Java. Если разбить её на составляющие, то получим следующий список подзадач:
- Получение страницы
- Распарсивание её
- Сравнение данных и сохранение их
- Отправка сообщения в телеграм
- Повторение цикла с выбранной периодичностью
Создавать бота мы научились вот здесь. А вот код для отправки сообщения:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
public class Main {
private static HttpURLConnection con;
private static String tgToken = "ваш_токен_телеграм";
private static int chatId = ид_кому_отправить_сообщение;
private static String urlToken = "https://api.telegram.org/bot"+tgToken+"/sendMessage";
public static void main(String[] args) throws IOException {
//текст сообщения
String txt = "Нужный параметр изменился!";
String urlParameters = "chat_id="+chatId+"&text="+txt;
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
try {
URL url = new URL(urlToken);
con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "Java upread.ru client");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
wr.write(postData);
}
StringBuilder content;
try (BufferedReader br = new BufferedReader(
new InputStreamReader(con.getInputStream()))) {
String line;
content = new StringBuilder();
while ((line = br.readLine()) != null) {
content.append(line);
content.append(System.lineSeparator());
}
}
System.out.println(content.toString());
} finally {
con.disconnect();
}
}
}
Как видите – все очень просто: данные кодируем и пишем в поток. Потом читаем ответ. В консоли:
мы видим ответ от телеграма – что все успешно, ид сообщения и прочую техническую информацию.
Обращу внимание на один момент. Почему я не выбрал JS или Python. Для JS бы потребовался браузер – создавать для него расширение, которое обновляет страницу раз в минуту. Здесь два подводных камня: при обновлении браузера расширение может отключиться и могут быть проблемы с отправкой POST запроса с локального компьютера на удаленный сервер – в связи с политикой безопасности для кросс-доменных запросов. Это решаемо, но займет лишнее время.
В случае с Python понадобилось бы устанавливать дополнительно ПО, разбираться с командной строкой и виртуальным окружением. По сравнению с установкой JRE (которая часто есть уже на компьютере) работа с Python-скриптами для начинающих несколько сложнее.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Программы на заказ
Отзывы
Контакты