Запустить Телеграм бот на бесплатном облачном сервере

About — Что умеет этот бот? (выводится при открытии бота по середине экрана)
Description — Описание (доступно при просмотре профиля бота)
Botpic — Картинка — логотип бота
Commands — набор команд (доступно при вызове в диалоге с ботом командой / )

Методы взаимодействия с Bot API

Есть два взаимоисключающих способа получения обновлений для бота — getUpdates и webHook . Входящие обновления хранятся на сервере Telegram до тех пор, пока бот не получит их, но они не будут храниться дольше, чем 24 часа.

Независимо от того, какой вариант вы выбрали, вы получите в результате JSON-сериализованные объекты (WIKI).

В случае с getUpdates вам необходимо будет настроить периодическое снятие (например, 1 раз в секунду) с сервера Telegram обновлений (данных полученных от взаимодействия пользователя с ботом — сообщения, картинки . ).

В случае с webHook обновления вам будут доставляться Bot API по указанному адресу сразу же как только они появятся. Если в ответ API получит статус обработки его запроса не 200 OK, а другой, например, 500 (ошибка сервера) то обновления подвиснут и будут периодически к вам стучатся, и успокоятся только в случае получения в ответ статуса 200 ОК.

Разработка Telegram Bot на Python. (5. Бесплатный сервер, деплой, запуск бота 1 командой)

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

Устанавливаем WebHook

Для установки WebHook есть специальный метод setWebHook . Нам просто необходимо в параметре url передать web-адрес где будут обрабатываться данные отправленные Telegram Bot API. Допустим, что у вас такой же хостинг как у меня, и за работу бота будет отвечать файл index.php , который лежит в директории bots в корне сайта.

public_html |__cgi-bin |__bots |__index.php

Если структура файлов у вас совпадает, и у вас есть доменное имя, а также установленный SSL сертификат, тогда назначаем webHook используя вот этот URL:

https://api.telegram.org/botВАШ_ТОКЕН/setwebhook?url=https://ВАШ_ДОМЕН/bots/index.php

Вставляем его в адресную строку браузера и переходим, в случае если все прошло без ошибок, на экране у вас выведется вот такая информация:

Это означает, что все прошло хорошо и WebHook установлен. Теперь можно спокойно начать работать над реализацией бота.

Дополнительные настройки WebHook

Также вместе с параметром url в методе setWebHook можно передать:

max_connections — максимальное разрешенное количество одновременных HTTPS-подключений к webhook для доставки обновления, 1-100. По умолчанию 40.

allowed_updates — можно передать типы обновлений, которые будет получать бот. По умолчанию подписка идет на все обновления.

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

certificate — сертификат открытого ключа, чтобы проверить используемый корневой сертификат, если у вас например самописный сертификат.

В случае если будет необходимо переназначить webHook, то нужно вызвать метод setWebHook еще раз и указать в качестве значения параметра url новый адрес обработчика данных от Bot API.

Для удаления webHook и перехода к getUpdates используйте метод deleteWebhook , параметры передавать не требуется.

Для получения, текущего состояние webHook используйте метод getWebhookInfo , параметры передавать не требуется.

Методы вызываются при помощи:

https://api.telegram.org/botВАШ_ТОКЕН/METHOD_NAME

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

Как запустить бота telegram — Как запустить бота на сервере

Небольшая статья о том, как заставить бота работать не на вашем компьютере, а где-то еще в интернете, круглосуточно, с хорошим постоянным интернет-соединением. Зачем? А что бы не приходилось комп держать постоянно включенным. Поехали.

Шаг первый. Арендуем выделенный сервер.

Я пользуюсь DigitalOcean.com, т.к. мне нравится сервис и удобство пользования. Для работы бота достаточно аренды виртуального сервера за 5$ в месяц. Если зарегистрируетесь по моей ссылке (если не работает, то попробуйте эту), то сайт предоставит вам в долг 10$, чего должно хватить на два месяца тестирования. Можно найти и другой VPS/VDS, в статье же будет рассмотрен запуск бота на VPS на базе Ubuntu.

Итак, регистрация. Тут нет ничего сложного. Переходим на сайт, и нажимаем SIGN UP:

Просят подтвердить почту — идем в свой почтовый ящик и подтверждаем

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

После прохождения регистрации, вы попадаете в панель управления дроплетами. Дроплеты — это как раз виртуальные выделенные сервера, вам предстоит создать свой и запустить на нём бота.

Нажмите Create и выберите Droplets

Выбираете Ubuntu (какая там будет доступна на данный момент), и сервер за 5$ в месяц.

Ниже будет выбор страны базирования сервера, прочее, что вам пока что не нужно, проматывайте вниз и нажимайте зеленую кнопку Create

Дроплет начнет разворачиваться и появится в списке дроплетов — дождитесь конца установки.

После окончания вам на почту придет информация о сервере — IP адрес, логин и пароль

Итак, дроплет создан, пора начать им пользоваться в наших целях.

Шаг второй. Подключение к серверу и смена пароля.

Так как сервер на базе Linux, то придется немного изменить свои привычки, и освоить кое-что новое. Нам понадобятся две программы, первая — консольный клиент putty (почувствуй себя хакером ;)) Качаем тут

(если не знаете, какую качать, качайте первую).

После скачивания и установки запускайте, и давайте подключимся к вновь созданному серверу. Программа запросит реквизиты для подключения. Укажите IP адрес, который вам прислали в письме, и нажмите Enter.

Появится черное окно, и запрос, доверяете ли вы этому серверу — нажимайте «Да».

После этого в черном окне появится приглашения на ввод имени пользователя и пароля. Введите root, нажмите Enter, введите пароль из почты. Важно — пароль не отображается на экране, так что нет повода для паники. Совет — скопированный текст можно вставлять правой кнопкой мыши, так что введите сначала root, Enter, потом копируйте пароль на почте, нажимайте правой кнопкой мыши в черном окне и Enter — и вы должны попасть на свой сервер.

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

От вас сразу же потребуют, что бы вы сменили пароль, так что

  1. Укажите текущий пароль (он не отобразится) Enter.
  2. Придумайте и введите новый пароль (он тоже не будет отображаться), Enter, и
  3. Еще раз укажите новый пароль. Запомните, а лучше запишите его!

Если пароль будет слишком простым, то система ругнется и попросит придумать новый.

Шаг третий — закинуть бота на сервер.

Тут нужна будет программа WinSCP. Скачать её можно отсюда https://winscp.net/eng/download.php.

Устанавливаем, запускаем (я указываю интерфейс коммандера, а не проводника), после запуска указываем IP адрес, пользователь — root, пароль — тот, что вы придумали на прошлом шаге. Нажимаем «Войти». Вас спросят, доверяете ли вы серверу, отвечайте «Да»

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

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

Шаг четвертый — запуск бота.

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

Итак, вы на сервере, для начала давайте проверим, что все работает как надо.

И вы должны увидеть что-то вроде:

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

Вы увидите окно с текстом, нажмите просто Enter

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

Если вернется строка с информацией, значит вы внутри виртуальной сессии.

Так что запускайте бота тут, в этой виртуальной сессии

и он будет работать круглосуточно.

Проверьте, закройте окно putty и подключитесь заново. Ничего не происходит, бота нет?! На самом деле, он продолжает работать в фоне. Выполните команду

и вы увидите запущенные виртуальные сессии

Число в начале строки — это PID процесса. Что бы подключится к выбранному экрану, выполните команду

2013 надо будет заменить на ваше число, разумеется. И.. вы снова попадете к боту и можете посмотреть, чем он там занимается.

Дополнительно.

Что бы запустить несколько ботов, надо для каждого запустить свою сессию screen, и в каждой сессии запускать по боту. Т.е. упрощенно говоря, выполняете , , , после чего закрываете putty (либо нажимаете Ctrl+A+D), и опять , , и т.п.

Еще по теме:  Почему не слышу собеседника в Телеграмме

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

Serverless в Microsoft Azure или боты для telegram на Azure Functions и python

Это продолжение серий постов про «Бомжуем в Microsoft Azure» или как нам запускать сервисы в облаке и при этом не тратить много-много денег.

В Microsoft Azure есть такой сервис Azure Functions — это бессерверные вычисления. Суть его в том, что у вас есть какой-то код/функция, которая запустилась по какому-то триггеру, отработала, сделала что-то и спокойно умерла, ожидая, когда её вызовут еще раз. Такой Function as a Service. Вам не надо настраивать сервера, платформу или инфраструктуру, вы просто берёте свой код и запускаете где-то в облаке.

В Azure Functions существует несколько триггеров, с помощью которых вы можете запустить выполнение функции: HTTPTrigger, TimerTrigger, CosmosDBTrigger, BlobTrigger и т.д. Подробное описание всех триггеров есть в документации. Ажуровские функции поддерживают запуск кода на .net core, node.js, python, java и powershell core (preview) в Linux и Windows среде, включая собранные в docker-контейнерах.

Но почему я решил написать про Azure Functions. Знаете почему? Потому что выполнение функций стоит копейки. 1 миллион запусков в месяц обойдётся в 12,50 рублей. Да, да, двенадцать рублей и пятьдесят копеек. И вот, в один прекрасный субботний вечер, я подумал, а что если запустить телеграмовского бота внутри ажурных функций, но перед тем, как окунуться в мир ажура, надо рассказать про нюансы.

Для telegram, как и для любой платформы существует несколько способов запуска ботов: polling и webhook. Polling не требует сертификатов и публикации вашего приложения, он просто раз в секунду, например, идёт в API мессенджера и спрашивает «Есть чо?», если есть, то в код прилетает целая пачка объектов JSON, с которыми вы уже развлекаетесь. Это просто, не очень быстро работает при больших нагрузках и мессенджеры не любят, когда вы их регулярно пинаете. Webhook же работает наоборот, вы сообщаете мессенджеру endpoint, где живёт ваш фронт и когда в мессенджере происходит какая-то активность, то он просто присылает вам сообщения, но есть нюансы, так как вам требуется публикация вашего приложения, SSL-сертификат и FQDN имя.

В Azure Functions есть Consumption Plan — это оплата за потребление, но у него есть стандартное ограничение на выполнение функции — 5 минут, его можно расширить, но главная идея в том, что мы не будет крутить постоянно запущенный код для бота внутри Azure Functions, мы скажем телеграму, чтобы он сам триггерил функцию на запуск (тот самый Webhook) и вся магия уже будет происходить внутри кода. Для этого будем использовать HTTPTrigger.

Для Azure Functions можно писать и тестировать всё локально в VScode, а уже только потом заливать всё в облако. Нам необходимо создать функцию для анонимного HTTP триггера.

В нашем проекте надо поправить несколько файлов. В requirements.txt добавляем pyTelegramBotAPI и requests.

host.json

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

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