Как создать Telegram бота на java

Получив много вопросов в личку, я понял, что вопрос создания ботов для Телеграм довольно популярен.

У меня спрашивали исходный код бота, просили поделиться конкретными примерами реализации тех или иных возможностей бота, просили подсказать тот или иной функционал по работе с ботом и сообщениями.

Я решил написать цикл статей, в которых хочу показать базовые вещи, которые будут нужны вам для написания своего бота. Кому интересно — прошу под кат…

И сразу с козырей зайду

То, о чем просили в предыдущей статье.

Исходные коды по проекту вы можете найти тут .

В ветке «master» будет финальная версия бота, которого мы вместе с вами и напишем, в процессе появления новых статей.

Полный исходники по этой статье будет находится в ветке «Part1-Base«.

В данной части мы создадим с вами базовый шаблон, который способен будет:

  1. регистрировать бота на серверах Телеграмм
  2. получать сообщения, написанные боту
  3. реагировать на команду /start

Создаем стандартный maven проект

(я упущу мануалы по работе со средой разработки и базовые вещи из Java программирования. Все эти вещи достаточно легко гугляться.А если не будет получаться — пишите вопросы).

Как создать Telegram-бота на Java

Давайте посмотрим, какие зависимости нам будут нужны в этом проекте.

В первую очередь это Lombok. Что это и зачем — можно почитать, например, тут.

И обязательно добавим логгер. Я использую log4j и чуть дальше покажу вам как полезно его можно использовать при отладке данного приложения и более глубокого осмысления работы TelegramAPI.

И, т.к. мы пишем бота для Телеграм, то и саму библиотеку от Telegram:

Структуру pom файла можно посмотреть тут
Структуру файла pom.xml можно увидеть тут.

Далее добавляем базовый класс Bot.java, который и будет реализовывать все наше взаимодействие с с сервисами Telegram. Работать мы будем с помощью LongPolling, т.к. этот метод не требует сертификатов шифрования и запускаться может с любой машины, которая имеет Java у себя на борту.

Для этого мы наследуемся от класса TelegramLongPollingBot и реализуем базовые методы:

Как вы видите, для работы бота нам понадобятся только «имя бота» и «токен», которые мы и передадим в конструкторе нашего класса Bot.

В результате у вас должен получиться такой диалог:

Так же здесь пишут, что аккуратнее, никому не показывайте эту информацию, иначе кто-то другой сможет управлять вашим ботом

Вы скажете, что я не очень аккуратен… Возможно, но отец ботов позволяет нам менять токены и отзывать те, что попали в публичный доступ. Потому с попробовав подключиться с моими данными, вы получите такое сообщение:

2019-12-04 13:44:25,252[DEBUG][main ][ com.example.telegrambot.bot.Bot] — Bot token: 1012522162:AAF5D49N4NreEJfCk0aOsC-UnmIu_GLkoyc
2019-12-04 13:44:26,613[ERROR][main ][ com.example.telegrambot.bot.Bot] — Cant Connect. Pause 10sec and try again. Error: Error removing old webhook

Так что с моими данными вам подключиться не получится. Регистрируйте свои. Новые данные укажите в классе App.java

Теперь запустив метод main в классе App мы позволим нашему боту подключиться и ждать новых сообщений. О своих действиях и попытках он напишет нам в консоле.

Еще по теме:  Как разбанить номер в Телеграмме

Log4j

Помните, выше я говорил о полезности библиотеки log4j. И вот тут для любопытных открывается клондайк полезных данных.

В файле log4j.properties уже прописаны базовые настройки для логирования и конкретные уровни логирования для сторонних классов и для тех, которые работают в нашем боте.

log4j.rootLogger= error, file
log4j.logger.com.example.telegrambot.App = debug, stdout
log4j.logger.com.example.telegrambot.bot.Bot = debug, stdout

Базовый уровень логирования у нас указан как Error.

Для классов Bot и App указан вывод логов на уровне Debug.

Что это за уровни и чем отличаются — вы легко найдете в гугле.

Если хотите посмотреть, как и в каком порядке отрабатывает библиотека Телеграм все ваши действия — переключите режим общего логирования на уровень ниже: info или debug.

И при запуске приложения вы в консоли увидите, сколько всего интересного происходит в процессе подключения, работы. Сколько раз опрашиваются ваши функции с именем и токеном бота.

Уровни логирования меняются вот этой строчкой:
Чтобы получить логи по уровню info, ставите вот так:

log4j.rootLogger= info, file

Для уровня debug, вот так:

log4j.rootLogger= debug, file

И в заключение

Сейчас у нас бот: подключается, показывает нам красивые логи и сообщает о том, что ему приходят сообщения.

Но выше я вам обещал, что бот будет отзываться на команду старт. Давайте немного изменим процедуру, ответственную за обработку полученных сообщений.

Как видно из кода бот делает следующее:

  • Получает апдейт и фиксирует в лог его айди номер.
  • Достает из переданного сообщения ID чата и собственно текст сообщения
  • Проверяет, не является ли этот текст командой «/start»
  • И в случае успешного сравнения создает сообщение в ответ и отправляет его в чат, с полученным ранее ID

Надеюсь вам было полезно и интересно.

В дальнейшем я покажу вам, как в моих ботах реализуется:

  • использование различных команд
  • привязка этих команд к обработчикам
  • многопоточность: независимое получение и отправка сообщений
  • форматирование отправляемых сообщений
  • работа с кнопками и колбеками
  • редактирование старых сообщений

На этой базе в паблик доступе у меня сейчас работают 2 моих бота.

А второй — Дерзкий киноман. Он очень любит фильмы и очень много о них знает. А еще больше он любит делится с вами своими знаниями. Он ведет свой канал в телеграмме, в котором сам решает, какие фильмы ему нравятся и предлагает их вам. Он умеет формировать индивидуальные подборки по жанрам и создавать подписку на персональные рекомендации.

Он умеет находить такие шедевры, о которых вы никогда не слышали и даже не знали как такие фильмы вообще можно найти.

Например, как вы думаете, существуют ли фильмы с такой «дикой» комбинацией жанров, как: документальный, ужасы, комедия.

А вот бот по команде

фильм комедия документальный ужасы топ 2010-

Скажет, что таких фильмов с 2010 по текущий момент сняли аж 6 штук

Как работать с подобными командами, как разбирать строки и последовательности команд мы рассмотрим с вами в следующих публикациях.

Спасибо вам за внимание. Программируйте в удовольствие

Похожие публикации

Ну и напоследок напоминаю вам о нашем новом проекте vkserfing bot.

Источник: mailsgun.ru

Telegram-бот счётчик сообщений на Java и Spring Boot

В этой статье я покажу, как написать Telegram-бот на Java с использованием Spring Boot, PostgreSQL и JPA. Также создадим исполняемый jar-файл. Сам же бот будет подсчитывать сообщения от пользователей и записывать эти данные в БД .

  1. Создаём Spring проект на Java
  2. Реализация базового функционала
  3. Добавление кнопок
  4. Подключение Telegram-бота на Java к базе данных
  5. Создание исполняемого jar-файла в Intellij IDEA
  6. Выводы
Еще по теме:  Все мои скачанные файлы из Телеграмма

Создаём Spring проект на Java

Для этого воспользуемся сервисом быстрого создания Spring Initializr: он предоставляет интерфейс для генерации заготовки проекта с добавлением стандартных зависимостей. При необходимости в дальнейшем их можно настроить под свои нужды.

Мои настройки Spring Initializr выглядят так:

Обратите внимание на кнопку Add Dependencies: с её помощью можно добавить важные зависимости уже на старте.

После того, как вы всё указали, нажмите Generate, разархивируйте стартовый проект и откройте его с помощью удобной IDE. У меня это IntelliJ IDEA.

Реализация базового функционала

Для начала напишем на Java самый примитивный Telegram bot, который будет отвечать на наши сообщения.

Создание Telegram-бота и конфигурация

Начнём с того, что это Maven-проект. Сразу добавим в pom.xml дополнительные зависимости для работы с Телеграм ботом и базами данных:

  • Telegram Bots
  • Hibernate Core Relocation
  • PostgreSQL JDBC Driver
  • Lombok

В каталоге resources создадим файл config.properties , где будут храниться данные для подключения к боту и в будущем к БД .

Примечание Данный файл не следует включать в коммиты.

Специалист отдела VIP сопровождения ПО ОТР , Москва , По итогам собеседования

Теперь создадим бота. Для этого перейдём в Telegram в BotFather и создадим нового бота командой /newbot . Выбираем для него название, которое будет отображаться для всех, и его username. После этого BotFather выдаст токен для взаимодействия с бэкендом Телеграмма.

Теперь запишем в файл config.properties следующее:

bot.name = юзернейм_вашего_бота bot.token = токен_вашего_бота bot.chatId = id_нужного_чата

Добавим в основной каталог проекта пакет config , а внутри него создадим новый класс BotConfig .

Вы наверняка заметили, что мы добавили в pom.xml Lombok. Это популярная библиотека для сокращения кода и расширения функциональности Java. С ней и Spring наш класс BotConfig будет выглядеть очень лаконично:

Что здесь происходит?

С остальным, думаю, всё понятно.

Класс Телеграм бота на Java

Давайте теперь выйдем из пакета config и создадим в основном пакете проекта класс бота. Поскольку это бот-счётчик, назовём его CounterTelegramBot.

На старте получаем следующий класс:

Для начала сделаем так, чтобы на команду /start Telegram-бот что-то нам отвечал и выводил в логи сообщение об успехе. Другие сообщения будут выводить в логи «Unexpected message» :

И последним штрихом является инициализация бота. Добавим в пакет config класс Initializer :

Запустите и проверьте работу бота.

Добавление кнопок

Чтобы Telegram bot на Java и Spring Boot выглядел по-настоящему серьёзным, давайте добавим ему команду /help и пару кнопок.

Создадим в основной директории проекта пакет components . В него добавим:

1. Интерфейс BotCommands :

2. Класс Buttons :

В классе мы создаём две кнопки, которые будут расположены в одной линии. Одна из них отвечает за команду старта, а вторая — за вызов меню помощи.

Теперь немного улучшим класс CounterTelegramBot :

switch вынесли в отдельный метод, добавили обработку команд, в том числе и нажатие кнопок.

Подключение Telegram-бота на Java к базе данных

Перед началом работы установите PostgerSQL, если СУБД ещё не установлена. В случае, если вы работаете с другими СУБД, просто измените настройки доступа в файле config.properties. Для тех же, кто работает с PostgerSQL, config.properties будет выглядеть примерно так:

Еще по теме:  Какой контент самый популярный в Телеграмме

bot.name = юзернейм_вашего_бота bot.token = токен_вашего_бота bot.chatId = id_нужного_чата #db related settings spring.jpa.database = PostgreSQL spring.jpa.show-sql = false # для автоматического создания/обновления таблицы в бд spring.jpa.hibernate.ddl-auto = update spring.datasource.driverClassName = org.postgresql.Driver # ниже прописываете порт и название бд spring.datasource.url = jdbc:postgresql://localhost:5432/tg # ваши кредлы для доступа к бд spring.datasource.username = postgres spring.datasource.password = root

В директорию проекта добавляем пакет database . В нём следует создать:

1. Интерфейс UserRepository :

public interface UserRepository extends CrudRepository

Создание telegram бота на Java Script: как написать программу

FAQ

Автор fast12v0_steleg На чтение 4 мин Просмотров 569 Опубликовано 29.02.2020

Почти каждый пользователь «Телеграма» неоднократно хотел создать робота. Кто-то сумел, а кто-то столкнулся с трудностями и остановился на полпути. Этот процесс нелегок. Он требует дополнительных знаний и умений.

Что такое боты

Telegram bot Java – это написанная небольшая по размерам программа, которая выполняет запрограммированное человеком действие. При этом, боты Java воспроизводятся через такой же интерфейс, как и у обычного пользователя.

Их назначение

Телеграмм bot Бот на Java имеет разностороннее применение.

Правила создания телеграмм-бота на Java

Робот способен на выполнение ряда операций, наиболее распространенными среди которых являются:

  1. Перевод текста с иностранных языков.
  2. Комментарии постов и записей.
  3. Провождение тестирований и обучения.
  4. Поиск информации.
  5. Нахождение необходимых аудио-, видеофайлов через интернет.
  6. Работа с документацией.
  7. Постановка вопросов и ответов на них.
  8. Взаимодействие с другими датчиками.
  9. Подключение к сети.
  10. Трансляция видео, презентации.
  11. Отображение прогноза погоды.
  12. Обход блокировки серверов, роутеров.
  13. Создание чатов для общения или обсуждений важных вопросов.

Указанный список функций далеко не полон, это лишь незначительная часть того, что можно создавать и писать в api bot «Джава».

Категории

Боты «Телеграма» делятся на огромное количество категорий, которые были классифицированы в 2018 году на:

  • мужскую и женскую тематику;
  • бизнес и финансы;
  • для взрослых;
  • музыку;
  • видео;
  • фото и игры;
  • развлечения;
  • образование;
  • новости.

Количество категорий постоянно растет, что объясняется наличием программ, которые позволяют самостоятельно осуществить создание Telegram бота на языке Java практически каждому человеку.

Особенности и описание ПО Java

Программное обеспечение «Ява» имеет следующие характеристики:

  1. Допускается переставлять инструкции.
  2. Можно использовать знак нижнего подчеркивания в больших числовых значениях.
  3. В файл языка может входить множество невложенных классов.
  4. Для конкатенации строк используется StringBuilder.

Как прописать бот на Ява

Написать бота для Telegram на Java несложно. Рассмотрим простой пример создания робота с использованием webhook.

Создание телеграмм-бота на Java

Теперь Telegram bot Webhook Java готов. На любое обращение бот должен отвечать «Я не знаю, что ответить на это». Выдаваемую им фразу можно изменить путем дополнения его базы.

Преимущества

Плюсы Telegram бота на Java следующие:

  1. Простота.
  2. Минимальное количество выполняемых операций.
  3. Java Telegram bot обходим блокировку – такой необходимости нет.
  4. Наличие минимального багажа знаний и умений.

С технической точки зрения написание кода для робота на Java практически ничем не отличается от его создания на других движках. Да, несомненно, есть небольшая разница, но она несущественна.

Выводы

Как видим, в написании робота нет ничего сложного. Любой желающий может выполнить эту операцию самостоятельно.

Если вы решили попробовать свои силы, то сделайте погодный бот для Telegram на «Джава». Его преимущество – легкость, простота создания, доступность. Этот робот чаще всего используется как шаблон. Его изучают на различных курсах, лекциях. Перед самостоятельным написанием кода рекомендуем посмотреть обучающее видео, ознакомиться с советами специалистов.

Детальная инструкция видна на видео:

Источник: stelegram.ru

Рейтинг
( Пока оценок нет )
Загрузка ...