Какой хостинг выбрать для Телеграм бота?
Куда разместить бота telegram на python?
Содержание
- 1 Куда разместить бота telegram на python?
- 2 Регистрируем хостинг для работы с Telegram Bots API
- 3 Комментарии
- 4 Хостинг для бота
- 5 Куда разместить бота telegram на python?
- 6 Инструкция: Создание бота для Telegram без навыков программирования
- 7 Шаг 1. Создаём бота в Telegram
- 8 Шаг 2. Создаём канал в Telegram
- 9 Шаг 3. Создание условия
- 10 Шаг 4. Подключаем сервер
- 11 Шаг 5. Связываем Telegram-бота и сервер
- 12 Шаг 6. Настраиваем текст автоответов бота
- 13 Пишем бота для Telegram и хостим его на heroku
- 14 Telegram бот в доспехах или разработка ТГ бота с нуля.
- 15 Постановка задачи
- 16 Регистрация бота
- 17 Аренда выделенного сервера на DO
- 18 Установка нужных сервисов
- 19 Python и virtualenv
- 20 Устанавливем Flask и UWSGI
- 21 Настройка nginx
- 22 Включаем https
- 23 Пишем код для бота
- 24 Немного функционала
Пробовал heroku — клиент не идет на мой пк, openshift — хз как там запустить простой скрипт, cloud9 — на нем остановился, но там часто падает бот, из-за ограничений. Подойдет только бесплатный. Бот использует polling.
Было бы хорошо, но я не встречал бесплатных vps.
А что за бот? Много ресурсов жрёт? Могу месяцок-другой похостить. Пиши на мыло: [email protected]
Некоторые дают бесплатный тестовый период.
про оpenshift ты уже знаешь 🙂
@lostfilmserialsbot. Вместе с ботом token будет. Я не очень вам доверяю.
30 дней — это хорошо, но что дальше?
Тогда оплати. Есть vps`ки за 90 рублей в месяц. Не такая уж большая сумма.
Какие же? Жаль для небольшого некоммерческого проекта тратить деньги. Тем более, что я студент и мало денег есть.
Свяжись с МС, они у нас в универе (НАУ, Киев) раздавали ажур со $100 на счету в месяц, под любые свои проекты. Хз какой срок действия акции.
Amazon дает на год бесплатные vps. AWS free tier называется. Гиг оперативки, 30 ГБ дискового пространства, под базы данных еще 20 ГБ. Думаю должно хватить
Я там зарегистрировался, написал кредитку. Выбивает ошибку когда захожу и 90 рублей забрали
90 рублей должны были забрать и отдать обратно. Это проверка реальности кредитки вроде как. У меня там кое какая мишура крутится, проблем никогда небыло
Уже пару дней не отдают.
Openshift, тарифный план «Осилятор»
Вроде бы github студентам раздавал по 100$ на Digital Ocean, хз, действует ли сейчас
Через месяц вернут. Это нормально.
Можно купить у cloudatcost VPS. Фишка в том, что помимо помесячной оплаты есть ещё одноразовый платёж. Самое дешёвое — 17.5$.
Понятное дело, что бизнес-модель немного сомнительная, но они уже несколько лет работают. Для чего-то некритичного вполне подойдёт. Если они хотя бы годик протянут — ты уже в большом плюсе.
Я у них сам прикупил сервер за 30$ и поднял там OpenVPN. Ну а что, больше платить же не надо. А если сервер внезапно исчезнет, то и фиг с ним. Но уже полгода как не исчез.
www.linux.org.ru
Регистрируем хостинг для работы с Telegram Bots API
Для работы бота нужен хороший хостинг и SSL-сертификат. Поэтому нужно найти где будут хоститься скрипты-обработчики запросов Telegram Bot API.
Выбирая хостинг, я просмотрел кучу сайтов с обзорами и отзывами. Главным критерием была надежность и хорошая служба поддержки. Нельзя чтобы сайт зависал, или вообще не отзывался на действия пользователя. А скорость работы службы поддержки и ее компетенция поможет вам решить любые вопросы, связанные с работой хостинга. Практически везде в лидерах был TimeWeb. На нем и остановился.
Теперь все по порядку, как и что я делал.
1. Зашел на сайт TimeWeb, выбрал вкладку Хостинг.
2. Выбрал тариф Year+, при оплате за год месяц получается 99 рублей
3. Заполнил обязательные поля: ФИО, E-mail, Условия оферты. Также указал логин, если его не указать, то система Вам создаст автоматически, например, «Cnn1339».
4. После нажатия кнопки «Заказать» ко мне на почту пришло письмо с данными для авторизации, и автоматически переадресовало на страницу управления аккаунта. В разделе «Оплата услуг» оплатил год хостинга, это было быстро и удобно.
5. Далее я зашел в раздел «Домены и поддомены».
6. Выбрал услугу «Зарегистрировать домен».
7. В текстовом поле указываем домен, я регистрировал домен iwantlive.ru специально для статьи, нажимаем на кнопку «Добавить к регистрации». Хочу заметить, что хостинг при оплате за год предоставляет бонус на регистрацию домена в зоне .ru, поэтому при оплате выберите способ оплаты домена «использовать бонус».
8. В открывшемся окне нажал кнопку «Добавить администратора». Заполнил все необходимые регистрационные данные, на этом шаге желательно указывать реальные данные, потому что в спорной ситуации нужно будет подтвердить свое право на домен. Далее нажал кнопку «Зарегистрировать домен». После этой процедуры к вам на указанные адрес администратора домена будут приходить письма со статусом регистрации домена.
9. Теперь необходимо зайти в раздел «Сайты», там вы увидите созданный сайт «Основной сайт», я его удалил и добавил новый сайт под один из своих проектов.
10. Указываем название и комментарий.
11. После создания сайта необходимо привязать к нему наш зарегистрированный домен, он хоть пока еще не прошел процедуру регистрации, и скорее всего будет доступен для работы через 4-6 часов, но мы его все равно можем уже привязать к нашему сайту.
12. Для этого просто в отрывшемся окне выбираем наш домен. Если вы хотите уже сразу посмотреть, что будет выводиться то можете привязать технический домен, он в списке будет доступен, для него просто повторите процедуру. И тогда будут привязаны 2 домена.
13. Потом мы заходим в раздел «Файловый менеджер» выбираем свой сайт, двойным кликом заходим в него, видим там директорию «public_html» в ней лежат автоматически сгенерированные файлы нашего сайта, по умолчанию это директория «cgi-bin» и файл index.htm.
14. После того как домен будет зарегистрирован, мы можем заказать SSL сертификат. Для этого выбираем в меню «Дополнительные услуги»
15. Далее услугу «SSL-сертификаты»
16. Среди предлагаемых сертификатов мне нравиться «SSL Let`s Encrypt», потому что он бесплатный. Его предоставляют на 3 месяца, и в случае если вы его не отзываете его продлевают еще на 3 месяца и так далее. Нажимаете кнопку «Заказать» и примерно в течении 30 минут его вам изготовят, установят и настроят.
Ну, вот осталось только создать бота у @BotFather и после этого можно начинать разрабатывать Telegram Bot.
Комментарии
Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте бот @SiteAuthBot, нажмите кнопку Старт/Start. Следуйте инструкциям бота.
Внимание!
Убедитесь, что эта страница открыта в браузере, а не в приложении Telegram. В противном случае авторизация пройдет только в приложении Telegram.
Подписывайтесь на мой канал в Телеграм @iMakeBots
Выберите один из вариантов обратной связи представленных ниже или воспользуйтесь формой обратной связи. Я по возможности отвечу как можно скорее.
Хостинг для бота
Подробнее о хостинге для размещения Телеграм бота можно узнать из статьи
imakebots.ru
Куда разместить бота telegram на python?
Пробовал heroku — клиент не идет на мой пк, openshift — хз как там запустить простой скрипт, cloud9 — на нем остановился, но там часто падает бот, из-за ограничений. Подойдет только бесплатный. Бот использует polling.
Было бы хорошо, но я не встречал бесплатных vps.
А что за бот? Много ресурсов жрёт? Могу месяцок-другой похостить. Пиши на мыло: [email protected]
Некоторые дают бесплатный тестовый период.
про оpenshift ты уже знаешь 🙂
@lostfilmserialsbot. Вместе с ботом token будет. Я не очень вам доверяю.
30 дней — это хорошо, но что дальше?
Тогда оплати. Есть vps`ки за 90 рублей в месяц. Не такая уж большая сумма.
Какие же? Жаль для небольшого некоммерческого проекта тратить деньги. Тем более, что я студент и мало денег есть.
Свяжись с МС, они у нас в универе (НАУ, Киев) раздавали ажур со $100 на счету в месяц, под любые свои проекты. Хз какой срок действия акции.
Amazon дает на год бесплатные vps. AWS free tier называется. Гиг оперативки, 30 ГБ дискового пространства, под базы данных еще 20 ГБ. Думаю должно хватить
Я там зарегистрировался, написал кредитку. Выбивает ошибку когда захожу и 90 рублей забрали
90 рублей должны были забрать и отдать обратно. Это проверка реальности кредитки вроде как. У меня там кое какая мишура крутится, проблем никогда небыло
Уже пару дней не отдают.
Openshift, тарифный план «Осилятор»
Вроде бы github студентам раздавал по 100$ на Digital Ocean, хз, действует ли сейчас
Через месяц вернут. Это нормально.
Можно купить у cloudatcost VPS. Фишка в том, что помимо помесячной оплаты есть ещё одноразовый платёж. Самое дешёвое — 17.5$.
Понятное дело, что бизнес-модель немного сомнительная, но они уже несколько лет работают. Для чего-то некритичного вполне подойдёт. Если они хотя бы годик протянут — ты уже в большом плюсе.
Я у них сам прикупил сервер за 30$ и поднял там OpenVPN. Ну а что, больше платить же не надо. А если сервер внезапно исчезнет, то и фиг с ним. Но уже полгода как не исчез.
www.linux.org.ru
Инструкция: Создание бота для Telegram без навыков программирования
Делаем простого бота для публикации новостей в канал и автоматические ответы на вопросы за 6 шагов.
Материал подготовлен при поддержке Selectel
После бурных обсуждений в ИТ-прессе по поводу эффективности чат-ботов, они заняли свою нишу в экосистеме пользователей и компаний. Например, часто проекты внедряют ботов для оповещения о каких-либо событиях, а службы поддержки используют их для того, чтобы быстро отвечать на часто задаваемые вопросы клиентов.
В этой инструкции мы рассмотрим наиболее простой способ создать бота собственными руками и объясним, как он работает.
Начнем с разработки бота, который сможет автоматически отправлять в Telegram-канал новости компании, опубликованные на сайте или в Facebook.
Шаг 1. Создаём бота в Telegram
Бот в Telegram создается при помощи другого бота под названием BotFather. Отправляем ему команду /newbot, выбираем имя, которое будет отображаться в списке контактов, и адрес. Например, «Бот для DTF» с адресом «dtf_news_bot».
Если адрес не занят, а имя введено правильно, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту. Его нужно сохранить и никому не показывать.
Шаг 2. Создаём канал в Telegram
Теперь создаём канал с любым названием и адресом, и переходим в его настройки. Всё, что требуется — добавить в список администраторов созданного нами бота — именно он будет публиковать заметки в канал.
Шаг 3. Создание условия
Следующий этап — научить бота отправлять новости с сайта в созданный канал. Для этого воспользуемся популярным сервисом для автоматизации IFTTT.
С его помощью можно создавать инструкции для работы бота. В нашем случае она выглядит так: каждый раз, когда в RSS-ленте сайта появляется новая запись, он должен отправлять сообщение в канал Telegram.
Переходим в раздел IFTTT «My Applets», нажимаем на кнопку «New Applet» и далее на ссылку «This». Находим в списке функций триггер Feed, New feed item и указываем URL-адрес нашей RSS-ленты. Например, у WordPress-сайтов она обычно расположена по адресу example.com/feed/.
Вместо RSS-ленты можно отслеживать появление новых записей в Twitter или Facebook-аккаунте — для каждой функции в IFTTT предусмотрены отдельные модули.
Теперь переходим ко второму шагу — выбираем действие, которое будет выполняться при обнаружении новой записи в RSS. Нажимаем на «That» и ищем Maker Webhook, «Make a web request» — с помощью этого модуля можно отправлять запросы к любым сервисам. В нашем случае — к боту в Telegram.
В открывшейся форме в поле URL нужно указать ссылку https://api.telegram.org/botТОКЕН/sendMessage, подставив в неё токен, сгенерированный на первом шаге. Метод: POST, тип контента: application/json.
Body — поле для шаблона запроcа, который будет отправляться в Telegram. В нём указываем, в какой канал нужно отправить сообщение и что в нём должно быть написано:
- chat_id — адрес канала, в который необходимо отправить сообщение. Таким образом одного бота можно подключить сразу к нескольким каналам. В качестве адресата можно указать и конкретного пользователя. В таком случае вместо адреса канала необходимо указать его ID (можно получить при помощи бота).
- text — содержание сообщения. Например, заголовок материала из RSS (EntryTitle), его содержание (EntryContent) и ссылка (FeedUrl). Список доступных опций можно посмотреть по кнопке Ingredient.
Если всё настроено верно, бот отправит сообщение из RSS-ленты в канал. У триггера в IFTTT есть задержка, поэтому сообщение, появившееся в RSS-ленте, отправится в Telegram не сразу, а спустя 30-60 минут.
В качестве условия для отправки сообщения можно выбрать любой другой сценарий, доступный на IFTTT. Например, Weather Underground умеет каждый день отправлять сообщение с прогнозом погоды на завтра. Триггер Stocks можно настроить на отправку стоимости акций при закрытии торгов.
Теперь решим более сложную задачу — научим созданного бота отвечать на сообщения пользователей. Например, присылать по команде прайс-лист, контакты или отвечать на часто задаваемые вопросы клиентов.
Шаг 4. Подключаем сервер
На этом этапе понадобится веб-хостинг и сертификат SSL, который можно получить бесплатно с помощью сервиса Let’s Encrypt.
Удобнее всего создать отдельный поддомен для бота — например, bot.example.com — и разместить на нём один файл index.php. Внутри файла размещаем код простейшего бота c сайта Telegram.
Если у вас хостинг Vscale, то можно создать для бота отдельный сервер. Это делается при помощи одного клика в панели управления.
В код бота нужно внести всего два изменения:
- в строке define(‘BOT_TOKEN’, ‘12345678:replace-me-with-real-token’); вместо 12345678:replace-me-with-real-token написать токен, полученный на первом шаге;
- в строке define(‘WEBHOOK_URL’, ‘https://my-site.example.com/secret-path-for-webhooks/’); вместо https://my-site.example.com/secret-path-for-webhooks/ указать URL-адрес файла с кодом для бота: https://bot.example.com/index.php.
Шаг 5. Связываем Telegram-бота и сервер
Теперь необходимо связать Telegram и файл на сервере, чтобы запросы, отправленные боту в мессенджере, обрабатывал наш скрипт.
Для этого понадобится консоль. У разных хостинг-провайдеров она может находиться в разных разделах интерфейса управления сайтом. Кроме того, можно воспользоваться программой Terminal на macOS, введя через неё команду ssh имя_пользователя@адрес_домена.
После ввода пароля, печатаем для нашего поддомена простую команду:
Если всё сделано правильно, бот сразу отправит в Telegram сообщение «Hello».
Шаг 6. Настраиваем текст автоответов бота
Добавим различные сценарии для ответов бота. Открываем созданный ранее файл index.php и находим в нём строчку:
- Hello и Hi — текст пользователя, на который бот должен отреагировать.
- Nice to meet you — ответ бота на отправленное пользователем сообщением.
Ниже в коде добавляем дополнительные ответы. Например, чтобы в зависимости от отправленного слова, бот присылал необходимую информацию пользователю (как в боте vc.ru для «ВКонтакте»):
Можем указать любое количество фраз и ответов на них. Также можно изменить кнопки, доступные пользователю во время работы с ботом. Находим строчку кода ‘keyboard’ => array(array(‘Hello’, ‘Hi’)) и вместо Hello и Hi указываем «Цены» и «Контакты».
После сохранения файла изменения сразу вступят в силу.
vc.ru
Пишем бота для Telegram и хостим его на heroku
Всем привет. Наверняка, если вы умеете программировать, и пользуетесь телеграмом, вам приходила в голову мысль написать своего бота, к тому же мессенджер предоставляет свой API для ботов, с хорошей документацией, а туториалов по всему интернету накидано немало. Но даже если вы и написали бота, то возникает следующая проблема: хостинг. Для «легких» проектов отлично подходит heroku, но у новичков нередко случаются проблемы с заливкой своих проектов туда. Об этом и пойдет речь в этой статье.
Для нашего бота я решил взять tgbots-module от @aNNiMON. Т.к. бесплатный аккаунт heroku позволяет создать лишь 5 приложений, то использовать одно приложение для запуска нескольких ботов — отличная идея. Но в данной статье мы рассмотрим лишь одно приложение. Создадим в Intellij IDEA новый gradle-проект. Создадим, согласно гайду на гитхабе (ссылка выше) классы ExampleBot и ExampleBotHandler. Заполним build.gradle:
Проект к деплою на heroku готов, теперь — заливаем его на гитхаб (Я тоже залил, чтобы при возникновении сложностей вы смогли посмотреть, как надо было сделать), регистрируем в телеграме бота, а в хероку — регистрируемся и регистрируем новое приложение. Идем на вкладку Settings, жмем «reveal config vars» и заполняем переменные окружения:
token — токен бота из телеграма
username — ник бота без @
GRADLE_TASK — в значение вписываем shadowJar . Это необходимо, чтобы heroku знало, как нужно собирать проект.
Переходим на вкладку deploy и жмем connect to github. В поле repo name вводим имя нашего репо с ботом и жмем Search, далее выбираем нужное и жмем Connect. Обновляем страницу . В самом низу страницы появится кнопка Deploy Branch. Так же, вы можете включить автодеплой при каждом коммите (бесплатно). Ждем пока задеплоится, и переходим на вкладку Resources и обновляем страницу . Напротив команды запуска жмем карандашик, переключаем ползунок и жмем Confirm, а затем быстренько жмем More — view logs. И если все хорошо, идем в телеграм и пишем боту!
annimon.com
Telegram бот в доспехах или разработка ТГ бота с нуля.
Всем мир! Сегодня я вам на практике покажу, как с 0 написать несложного Telegram бота.
Для начала придумаем тестовое задание.
У меня есть сервер Counter Strike 1.6 на котором я временами играю с друзьями. Заходить в игру, чтобы проверить наличие там игроков, лень. Напишем бота, который будет доставать для нас информацию о сервере и список игроков со счетом и выводить в удобном формате.
Для того, чтобы проследить за действиями, достаточно базовых знаний linux, web и python.
Постановка задачи
Для работы телеграм бот, который крутится на нашей машине, должен получать обновления от сервера Telegram. Это можно сделать двумя методами:
- Long polling. Метод, когда ваша программа в определенный промежуток времени опрашивает сервер об обновлениях.
- Web hook. Тут вы поднимаете веб сервер, на который телеграм бот шлет обновления, если они есть.
Второй метод популярнее и считается надежнее, поэтому остановимся на нем.
Писать будем на Python с использованием Flask. В роли веб сервера используем nginx. В работе с сервером CS нам поможет чудесный модуль python-valve
Выбор сервера для хостинга нашего бота роли не играет, я буду работать с Digital Ocean.
Сам бот будет довольно простым: одна кнопка Обновить, нажатие на которую, как и любое сообщение, будет обновлять информацию о карте и игроках.
Регистрация бота
Первым делом нам надо зарегистрировать своего бота у @BotFather. Он отвечает за управление информацией о боте и получение и обновление токенов для работы с ними. От него мы получим такую строку
Это ключ по которому сервера телеграм будут знать, что вы владельцы этого бота. Если вы его потеряете, вы можете получить новый у того же @BotFather.
Первый шаг сделали. Мы уже сейчас можем найти нашего бота в ТГ и писать ему, но это пока только оболочка и отвечать вам не будет. Ему нужен код/призрак.
Аренда выделенного сервера на DO
Как и любой сайт и серверсайд программа, наш код должен быть запущен на машине с белым ip и выходом в интернет. Для такого случая мы арендуем машину у Ditial Ocean
Показывать пошаговую регистрацию на сайте я не буду, покажу только как получить и настроить сам сервер. Кстати, если вы студент, можете попробовать получить 50$ на хостинг бесплатно.
Нажимаем на большую копку Create droplet.
Выбираем желаемую ОС. Я буду работать с Ubuntu.
Дальше можно выбрать самый дешевый сервер за 5 баксов в месяц или 0.007 в час. С выбором региона чуть тяжелее. Для телеграм бота особой разницы нет, но если будете хостить игры тут, следует подумать о пингах. Тут можно сравнивать состояние от вас, до разных регионов DO. http://speedtest-sfo1.digitalocean.com/
Больше нам ничего менять тут не надо, нажимаем Create.
В течении пары минут мы получим ip адрес и root пароль от сервера на нашу почту. Все, машина работает. Можем коннектиться к ней по ssh.
Вводим пароль и получаем полный контроль над сервером. Возможно вас попросят сменить пароль, поставьте посложнее.
Первым делом нам сразу надо создать нового пользователя и входить на сервер из под него, чтобы не стать легкой мишенью для хакеров.
Теперь необходимо перезайти на сервер под новым пользователем
Установка нужных сервисов
Первая команда обновит локальные репозитории, чтобы не было проблем с поиском нужных пакетов. Вторая поставит PIP (систему управления пакетами python), веб сервер nginx и dev пакет python. Третья команда запустит веб сервер.
Если вы сейчас введете ip адрес вашего сервера в браузере любого компьютера подключенного к сети интернет, вы получите страницу приветствия nginx.
Выключим на пока наш веб сервер и займемся python.
Python и virtualenv
По хорошему, нам надо создавать окружения для каждого из наших python проектов, чтобы их зависимости не начали конфликтовать между собой. Для этого воспользуемся virtualenv.
Создаем папку проекта и стартуем в ней новое изолированное окружение.
Теперь у нас есть локальная копия python, pip и все python модули установленные внутри останутся в этом окружении.
Устанавливем Flask и UWSGI
Бота будем писать на микрофреймворке flask, который позволит нам сократит время на разработку. Для перенаправления запросов с nginx на flask будем пользоваться uwsgi.
Для начала запустим простую страничку в Flask и попробуем достучаться к ней через nginx.
В папке с проектом создадим наш главный файл в котором будет хранится код.
Так же напишем скрипт, который будет запускать наше Flask приложение.
Оба файла находятся в папке с проектом.
Запускам uwsgi командой:
Если все прошло успешно, вы, перейдя в своем браузере по адресу вашего сервера и порт 5000 должны увидеть It’s working.
Теперь напишем конфиг файл, чтобы Flask приложение поднималось само, даже если сервер перезагрузится. Сначала выйдем из нашего окружения.
Потом создадим .ini конфиг для uwsgi в папке с ботом. Конфиг задает количество процессов, имя сокета, права и файл для логирования.
Так же создадим папку для логов и сделаем ее владельцем себя.
Создадим так же systemd unit файл, для атвоматизации запуска нашего бота.
Теперь после ввода команды, мы должны увидеть сокет файл в нашей папке проекта.
Мы так же можем проверить работу с помощью просмотра логов в папке и статуса сервиса.
Настройка nginx
Дальше нам необходимо настроить веб сервер, чтобы свои запросы он направлял в сокет uwsgi.
Теперь нам надо сделать ссылку на конфиг, в папке sites-enabled
Мы можем проверить наши конфиг файлы с помощью nginx.
Если он сказал, что все ОК, перезапускаем веб сервер.
Теперь по ip адресу нашего сервера в браузере вы должны получить выдачу Flask приложения.
Включаем https
Телеграм бот не станет работать по обычному протоколу http т.к. это ставит под угрозу переписку. У нас нет домена на сервере, будем работать с самоподписным сертификатом.
Сначала генерируем наш сертификат и ключ с помощью openssl.
На последней команде openssl задаст вам несколько вопросов. Можно игнорировать все, кроме Common Name (FQDN). В нем следует указать ip вашего сервера.
Следующей командой мы получим сертификат из сгененрированного выше приватного ключа.
Так-с, серты сгенерировали. Идем к настройке nginx.
Открываем конфиги нашего сайта в nginx:
Указвыаем новый порт взамен 80. Указвыаем ключи и сертификаты и протоколы, которые мы можем хендлить.
Проверяем конфиги и перезапускаем веб сервер
Теперь в браузере по https://ваш_ип, вы должны увидеть вашу страницу flask приложения. Браузер будет ругаться на сертификат, игнорируйте.
Пишем код для бота
Дошли до самого интересного.
Сначала установим модуль для работы с Telegram — python-telegram-bot
Теперь напишем код бота, который всегда отвечает словом hello на любое наше сообщение.
В начале мы импортируем нужные модули flask, request, telegram. Дальше мы создаем наше приложение, включаем режим отладки (надо присвоить False, когда закончим разработку).
После мы задаем наш token полученный при создании бота в самом начале, адрес сервера и создаем бота.
У нас есть два главных метода:
*set_webhook — отвечает за создание вебхука с сервером Telegram и вызывается один раз.
*webhook_handler — слушает на /HOOK и занимается обработкой сообщений с серверов телеграма.
В хендлере мы получаем данные в Post запросе, достаем нужную информацию и исходя из этого делаем какие-то действия и шлем сообщение юзеру методом bot.send_message.
Перезапускаем бота и заходим на https://ваш_ип/set_webhook. Если в ответе вы получили webhook setup ok, можно пойти тестить бота.
Давайте чуть усложним его и добавим кнопку “Обновить”.
Для начала импортируем ReplyKeyboardMarkup для создания клавиатуры и после отправим его в сообщении параметром reply_markup.
Немного функционала
Напишем функцию, которая будет опрашивать наш CS сервер и выдавать информацию по нему.
Для начала установим наш модуль для работы с valve серверами. Не забудьте перейти в окружение перед установкой.
Теперь в коде определим новую функцию, которая будет генерить строку ответ и возвращать ее нам, для отправки пользователю.
Код сам по себе не сложен, но давайте разберем. Сначала задаем адрес и порт сервера и создаем объект.
В функции достаем общую информацию и инфу об игроках. Заносим данные в строку answer и проходимся по массиву пользователей добавляя в новую строку данные о солдатах с количеством очков и временем проведенным на сервере. Возвращаем строку ответ. Названия полей (player_count, max_players и остальные можно посмотреть в коде модуля на github https://github.com/Holiverh/python-valve/blob/master/valve/source/a2s.py)
Осталось отправлять полученную строку сообщение пользователю. Для этого правим строку bot.send_message
Перезапускаем нашего бота.
В случае ошибок мы можем узнать что не так благодаря двум логам:
- Логи веб сервера находятся в /var/log/nginx/
- Логи нашего приложения и uwsgi в /var/log/uwsgi/
abdulmadzhidov.ru