С какого ip подключается бот к telegram

GeekBrains

Подключение Telegram bot к OpenHAB 3 для доставки уведомлений и управления умным домом

Telegram хорошо зарекомендовал себя как средство доставки уведомлений и средство обратной связи на разных системах управления умным домом. OpenHAB не стоит в стороне и имеет средства работы с Telegram Bot.

Ранее уже рассматривалась тема создания бота для Телеграм и подключение его к Home Assistant. Задействовать такого бота не удастся, т.к. невозможно одновременно использовать одного бота двум программным продуктам. Выхода два:

  1. Отключить настройки бота в Home Assistant, но тогда не получится оперативно получать информацию из HA.
  2. Создать еще одного бота для нужд OpenHAB.

Идем по второму пути.

Создание нового бота в Telegram

Если у вас уже есть созданный Telegram бот, то переходим к следующему разделу.

В программе Telegram находим праотца всех ботов @BotFather и отсылаем ему команду:

Первым сообщением нам предлагают придумать имя для бота, которое будет отображаться в чатах и контактах, это имя можно изменить в дальнейшем. Вторым предлагают придумать username, уникальное имя бота, которое должно заканчиваться на "bot". Допускаются буквы латинского алфавита, цифры и знак подчеркивания. В дальнейшем это имя изменить нельзя.

В сообщении после успешного создания бота будет написан токен для доступа к HTTP API.

openhab 3 create new telegram bot

Конфигурация OpenHAB

С помощью поиска находим созданного бота, отсылаем ему команду:

Переходим в web браузере по ссылке:

здесь 170XXXX816:AAHDlacXXXXXXXXXXXXXXXQ_LoqE HTTP API ключ вашего бота.

На открывшейся странице ищем Chat ID с ботом.

openhab 3 telegram bot configure

В web браузере открываем страницу OpenHAB:

Добавляем Telegram Binding в разделе Settings -> Bindings -> + .

openhab 3 add telegram binding

Подключаемся к OpenHAB по SSH, переходим в каталог с конфигурационными файлами (для сборки OpenHABian: /etc/openhab , так же в OpenHABian конфигурационные файлы доступны в локальной сети \\openhabian_host_name\openHAB-conf\ ). В папке things создаем файл telegram.things , заполняем его:

  • chatIds — Список ID чатов.
  • botToken — токен для доступа к HTTP API.

Не обязательные дополнительные параметры:

  • parseMode — Поддержка форматированных сообщений, значения Markdown или HTML .
  • proxyHost — Адрес прокси сервера.
  • proxyPort — Порт прокси сервера.
  • proxyType — Тип прокси сервера, значения SOCKS5 или HTTP .

При использовании прокси сервера запись о Telegram боте в файле telegram.things будет выглядеть так:

После сохранения файла telegram.things в разделе Settings -> Things появится информация о подключенном боте.

openhab 3 telegram things

Переходим в папку items , создаем файл telegram.items, в котором опишем доступные свойства бота:

Сохраняем файл и проверяем что все описанные Items прилинковали:

openhab 3 telegram bot items

Отослав боту сообщение, мы можем его увидеть в поле Last Message Text.

openhab 3 telegram items last message text

Автоматизация

Автоматизация демонстрирует проверку работы бота OpenHAB, при отправке боту команды /ping система в ответ пришлет ответ pong . В папке rules создаем файл telegram.rules . Записываем в файл следующую автоматизацию:

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

Как я писал telegram-бота и заливал его на удаленный сервер

Как только на территории РФ вступил в силу запрет на анонимность в мессенджерах, у меня дошли руки написать пост про telegram-бота. По ходу создания бота столкнулся с большим количеством проблем, которые пришлось решать по отдельности, и буквально выцеживать крупинки информации со всего интернета. И вот после нескольких месяцев страданий и мучений (кодинг – не основное моё занятие) я наконец-то закончил с ботом, разобрался со всеми проблемами и готов поведать свою историю Вам.

Первые шаги

Для начала нужно установить telegram на ПК и зарегистрироваться в мессенджере. Найти в поиске @BotFather – это отец всех ботов в telegram, именно он их создаёт. Пишем ему /newbot и отвечаем на два простых вопросов: имя бота и его username. После чего @BotFather поздравит нас с успешным созданием бота и отправит нам его token — 523870826:AAF0O8T-e7riRi8m6qlRz4pBKKdh0OfHKj8.

Внимание: token – единственный идентификационный ключ к боту. Нигде не выкладывайте его, иначе другие люди смогут управлять Вашим ботом. Бот с данным token на момент выкладывания статьи удалён.

Какой язык программирования выбрать для написания бота?

Тут я долго не заморачивался и остановился на Python, так как знаю его достаточно хорошо, да и удобная библиотека тоже присутствует. Я решил использовать PyTelagramBotAPI (на момент написания этой статьи последняя доступная версия 3.5.1).

Перейдём к первому коду.

Импортируем библиотеку PyTelegramBotAPI.

Напишем простую обработку сообщений с помощью декоратора bot.message_handler.

Поставим бота в режим постоянной обработки информации, приходящей от серверов telegram.

В переменной message telegram передаёт словарь (map) такого вида:

Также существуют другие декораторы, которые могут принимать аудиофайлы, видео, картинки, документы, геолокацию и т.д.

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

Для сохранения данных о пользователях решил воспользоваться базой данных sqlite3.

Параллельные процессы запускал с помощью библиотеки threading. Например: функция расчета битв.

Дальше всё зависит только от Вашей фантазии.

Где запустить Вашего бота?

Свой собственный ПК не хочется оставлять включенным 24/7, да и не практично это. Поэтому я решил воспользоваться бесплатным сервисом heroku, но меня постигла неудача из-за выбранной мною БД. Оказалось, что при каждом перезапуске бота, heroku удаляет все коммиты sqlite3 за последний сеанс без исключений. После чего, я решил купить VDS (Virtual Dedicated Server, виртуальный выделенный сервер) – удаленный ПК, на котором выделяется определенная мощность и память под Вас, и к командной строке которого Вам даётся доступ. Чаще всего операционной системой такой машинки будет linux. Плата небольшая – 400 руб./месяц, так что без особых моральных страданий оплатил VDS на основе Debian GNU/Linux и начал разбираться с тем, как мне включить бота на удалённом сервере.

Как же подключаться к VDS?

Есть разные методы, я решил по SSH-соединению через Putty. Скачиваем Putty через официальный сайт и открываем. Вводим IP-address VDS и нажимаем open.

GeekBrains

Должно открыться такое окно, где нужно ввести логин и пароль от сервера.

Все вышеупомянутые данные выдаст компания, у которой Вы приобретёте VDS. Далее VDS – сервер.

Как установить на сервер все необходимые Вам языки программирования и библиотеки?

Тут все просто. Введя эти 5 команд в консоль сервера в данной последовательности, Вы установите на сервер python3, setuptools, pip3 и библиотеку pyTelegramBotAPI.

Все дополнительные библиотеки, которые не входят в основной пакет python3, также необходимо установить по принципу.

Как загрузить файлы с моего ПК на сервер?

Для начала создадим папку, в который будем заливать все необходимые файлы. На сервере пройдем в каталог /usr/local/bin и создадим папку bot.

У меня на ПК установлен windows, соответственно и команды будут для командной строки windows. Для начала необходимо пройти в каталог, где находится putty.exe.

Далее загружаем bot.py, который находится в каталоге C:\Users\Ilya\PycharmProjects\Bot (нужно подставить Ваш каталог) в каталог на сервере /usr/local/bin/bot.

Строчку root@123.123.12.12 нужно заменить на строчку вида login@IP_address, соответственно с Вашим логином и IP-адресом (упомянуты выше в разделе «Как же подключиться к VDS?»). Заменяя bot.py на названия других файлов, загрузите все необходимые.

Как скачать файлы с сервера на ПК?

Так же, как и при загрузке файлов на сервер в командной строке в каталог, где лежит putty.exe. И вводим эту команду, чтобы скачать файл database на рабочий стол Вашего ПК.

Как запустить бота?

Первый и самый простой вариант – зайти в каталог с исполняемым файлов и прописать python3 bot.py, но тогда при закрытии putty бот будет выключаться.

Второй вариант – запустить бота с помощью screen – модуль, который создаёт параллельные рабочие столы, но тогда бот не будет перезапускаться автоматически в случае падения, а это происходит часто – несколько раз в неделю из-за ночного перезапуска серверов telegram (в 3:00 по МСК).

Третий способ – systemd – cистемный менеджер, демон инициализации других демонов в Linux. Проще говоря, systemd запустит бота и будет перезапускать его в случае падения.

Создайте файл на Вашем ПК с именем bot.service с таким содержанием:

И загружаем его в нужный каталог:

Далее нужно прописать 4 команды в консоли сервера:

В моём случаи из-за определённых ошибок реализации, а конкретно многопоточности, пришлось переносить функцию для расчёта битв (battle_counter.py) в отдельного демона.

После чего должно появится сообщение примерно такого содержания:

Ваш бот запущен и готов к работе!

БЛАГОДАРНОСТИ

Это был мой первый относительно большой проект и я столкнулся с колоссальным количеством новых для меня проблем. Огромную благодарность хочу выразить Yurii Drake, который помог мне разобраться с ними!

По каким критериям выбирать сервер для чат бота Telegram, как его загружать и настраивать

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

Что такое телеграм-боты и зачем они нужны

В мессенджерах под ботами подразумеваются специальные аккаунты, способные к самостоятельной обработке и отправке сообщений. Пользователи Телеграма взаимодействуют с ними через групповые или обычные чаты. Контролируются боты с помощью HTTP-интерфейса (Bot API).

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

Способен Телеграм бот выполнять и куда более серьезные функции, в том числе помогать в электронной коммерции. На него можно возложить общение с клиентами, рассылки по фильтрам, уведомления о пополнении ассортимента. Предлагать клиентам те или иные услуги и товары тоже сможет бот.

Реально ли создать собственного телеграм-бота

Каждый желающий может создать себе собственного робота-помощника. Для этого есть специальный конструктор BotFather и детальные инструкции. Когда бот будет готов, его создатель получит так называемый токен – ключ авторизации. Останется перейти в раздел Bot API и установить нужные настройки.

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

Если есть желание и знание основ программирования можно, к примеру, разработать Android приложение для удаленного управления смартфоном через Telegram. Получать входящие сообщения со смартфона на десктопном компьютере и оперативно отвечать на них – это действительно удобно.

Устаревший смартфон с подобным мобильным приложением легко трансформируется в надежную сигнализацию с фиксацией движущихся объектов и записью их на видео. Масса креативных идей уже воплощена в реальность. Функционал Телеграм-ботов ограничен только воображением разработчика.

Сервер для бота Telegram: главные факторы выбора

Телеграм выделяет место для пользовательских роботов на своих облачных серверах. Но, во-первых, это место строго ограничено. Во-вторых, после истечения относительно короткого срока вся информация с такого сервера удаляется. Чтобы обеспечить корректную работу бота и использовать весь его потенциал, необходимо позаботиться о хостинге. Выбирая сервер для робота, обращают внимание на следующее:

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

В идеале сервер должен поддерживать несколько языков. Это расширяет возможности разработчика. В то же время, если необходим конкретно сервер для Python бота, поддержка, того же NodeJS будет уже излишней.

Хороший сервер для чат бота должен обеспечивать графическое ускорение. Только при его наличии можно построить нейросеть и создать условия для обучения бота при его общении с живыми собеседниками.

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

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

Клиентоориентированность – это способность хостинг-провайдера максимально удовлетворять потребности пользователей. Желательно, чтобы предлагалось не только продвинутое программное обеспечение, но и круглосуточная техническая поддержка, оперативная помощь в администрировании.

Виртуальный выделенный сервер

Ознакомившись с теорией, можно переходить и к практическим примерам. Изобретать велосипед не придется. Лучшим вариантом для телеграм-бота будет Virtual Dedicated Server (виртуальный выделенный сервер, VDS). Второе его название: Virtual Private Server (виртуальный приватный сервер, VPS). Вопреки расхожему мнению между VDS и VPS нет никакой разницы. Зато есть существенные отличия от обычного shared хостинга. Но обо всем по порядку.

Чтобы развернуть сервер для бота Telegram на VDS не требуется домена. Предоставляется возможность обращаться к нему просто по IP-адресу. Имеется потенциал для расширения проекта с увеличением количества пользователей – чтобы получить больше места, достаточно поменять настройки и тариф. К преимуществам такого решения относится:

  • возможность полного контроля и самостоятельной установки настроек пот определенный проект;
  • отсутствие искусственных ограничений на количество баз данных, сайтов, доменных зон и т.д;
  • надежная защита от DDoS-атак;
  • гарантия сохранности информации за счет формирования резервной копии.

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

Впрочем, использовать бесплатный сервер можно, но только временно – на период тестирования робота. При этом нужно быть готовым к частым отключениям, низкой скорости из-за сильных перегрузок и к тому подобным проблемным ситуациям.

Большинство разработчиков не устраивает такой бесплатный сервис и они предпочитают оплачивать услуги хостинг-провайдеров VDS, чтобы избавить себя от хлопот создать комфортные условия и на период разработки, и на период использования своих чат-ботов.

Как загрузить настроить и запустить телеграм-бот на сервере

Далее рассмотрим, как разместить на VDS Python бота, предназначенного для автоматических ответов на команды. Прежде всего необходимо подключиться к арендованному серверу по протоколу SSH.

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

После сохранения подключения переходят к главному экрану и нажимают кнопку с названием сервера. Автоматически должна открыться консоль, куда нужно ввести ряд команд.

Закончив настройку клиента SSH отключают и переходят к размещению робота. Для этого потребуется подключиться к серверу по протоколу SFTP. Для его настройки открывают одноименную вкладку в Termius.

После нажатия на кнопку «Select host» выбирают имя сервера, создают папку и копируют в нее все файлы, касающиеся проекта. Вводят команды для запуска бота и тестируют его работу в мессенджере.

GeekBrains

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *