Хостинг для бота Telegram

Привет, Miped!Не давно я начал заниматься одним моим не коммерческим проектом - бот в Телеграмм. Я не знаю, если на этом форуме кодеры, поэтому...

Аренда выделенного сервера на DO

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

Показывать пошаговую регистрацию на сайте я не буду, покажу только как получить и настроить сам сервер. Кстати, если вы студент, можете попробовать получить 50$ на хостинг бесплатно.

Нажимаем на большую копку Create droplet.

Выбираем желаемую ОС. Я буду работать с Ubuntu.

Дальше можно выбрать самый дешевый сервер за 5 баксов в месяц или 0.007 в час.
С выбором региона чуть тяжелее. Для телеграм бота особой разницы нет, но если будете хостить игры тут, следует подумать о пингах. Тут можно сравнивать состояние от вас, до разных регионов DO.
http://speedtest-sfo1.digitalocean.com/

Больше нам ничего менять тут не надо, нажимаем Create.

В течении пары минут мы получим ip адрес и root пароль от сервера на нашу почту. Все, машина работает. Можем коннектиться к ней по ssh.

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

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

Теперь необходимо перезайти на сервер под новым пользователем

А теперь — код

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

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

Словарь обновлений состоит из двух элементов:  и . Нас интересует вторая часть — список всех обновлений, полученных ботом за последние 24 часа.

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

Теперь нужно добавить ещё 2 функции. Первая будет доставать из обновления, а вторая — отправлять сообщение.

Помните, как мы объединяли параметры при помощи и ? Вы можете сделать то же самое, добавив словарь в качестве второго дополнительного параметра в функциях / из пакета requests.

Скрипт готов, но он не идеален. Главным минусом является необходимость запускать его каждый раз, когда мы хотим, чтобы бот отправил сообщение. Исправим это. Чтобы бот слушал сервер и получал обновления, нам нужно запустить основной цикл. На новой строке, после , добавьте . После этого замените две последние строки на следующий код:

Хотя мы и добавили таймаут в 1 секунду, пример выше можно использовать только в обучающих целях, поскольку он использует частые опросы (short polling). Это плохо влияет на сервера Telegram, поэтому их нужно избегать. Есть ещё два способа получения обновлений через API — длинные опросы (long polling) и вебхуки (webhooks). Если мы будем использовать способ получения обновлений через  без параметров, то запросы будут происходить слишком часто.

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

Теперь бот должен работать нормально, но его всё ещё можно улучшить. Давайте инкапсулируем все функции в один класс. Должно получиться что-то вроде этого:

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

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

Я хочу конкретные цифры!

Для любителей конкретики приведём пример подходящего стартового варианта хостинга для чат-бота. Предположим, вы пишете ассистента для сообщества ВКонтакте на Python, при этом в вашем распоряжении база данных MySQL. Глядя на тарифы в REG.RU, можно увидеть, что наиболее подходящим вариантом хостинга для Python-бота этом случае будет с поддержкой Python 3.7, Flask/Django 2, MySQL, 7ГБ SSD и бесплатным SSL-сертификатом всего за 155 рублей в месяц. А если заказать хостинг сразу на год, то он уже будет стоить 135 рублей в месяц, ещё и с бесплатным доменом в зоне .RU/.РФ в придачу.

Для чат-ботов, которые со временем точно потребуют масштабирования ресурсов, как мы уже писали, подойдёт облачный сервер. Рекомендуем начать с тарифа Cloud-2 c процессором на 2 ядра, диском 20 ГБ и объёмом памяти 1 024 МБ. Его стоимость составит 399 рублей в месяц или 0,59 рублей в час. 

А если, например, вы решили обучить сложного и умного ассистента на основе нейросети и на три часа арендовать сервер с GPU. Время обучения обычно зависит от того, насколько много у вас данных и насколько сложна ваша нейросеть. Выбрав тариф GPU-1 с 60 ГБ SSD, 4 ГБ RAM и одним ускорителем Tesla V100 с 16GB VRAM, за три часа вы потратите 270 рублей (90 руб./час).

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

***

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

Часть 4. Хостинг бота

Надеюсь вы уже создали аккаунт в Heroku. Всё, что вам требуется сейчас сделать это войти в свой аккаунт и увидеть этот экран:

Не обращайте внимание на мои проекты, вместо них у вас ничего не будет. Далее, вам необходимо скачать Heroku Command Line Interface (CLI) по и Git по этой ссылке

Далее, вам необходимо скачать Heroku Command Line Interface (CLI) по и Git по этой ссылке.

После того, как вы всё установили, перейдите в терминал в VS Code. Напишите туда следующее:

heroku login

Нажмите на любую кнопку (кроме q) и вас перекинет в браузер, где вам нужно нажать на кнопку Log in:

Далее можно вернуться обратно в VS Code. Перед тем, как загрузить нашего бота на Heroku, нам следует добавить еще два файла: requirements.txt и Procfile. Заметьте, что у Procfile нет никакого расширения.

В Procfile напишем эту строку:

worker: python main.py $PORT

Это означает, что тип нашего dyno (так называется что-то на подобии сервера в Heroku) – worker будет работать с файлом main.py. Он будет работать всегда и без передышки. Web dyno будет иногда выключаться, но нам этого не надо.

В файл requirements.txt пишет эти строки:

appdirs==1.4.3
certifi==2018.1.18
Cython==0.23
Django==1.10.6
docutils==0.13.1
packaging==16.8
pipenv==11.8.0
psutil==5.0.1
pyowm==2.8.0
Pygments==2.2.0
pyparsing==2.2.0
pyTelegramBotAPI==3.6.1
python-telegram-bot==7.0.1
requests==2.13.0
six==1.10.0
virtualenv==15.1.0
virtualenv-clone==0.3.0

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

Теперь у нас всё готово для загрузки бота на Heroku!

Возвращаемся в терминал, где мы залогинились на Heroku, помните? Пишем туда:

heroku create

После этого у нас создаётся проект на Heroku. Зайдите на сайт и посмотрите его имя. Например, у меня создался проект и он называется agile-refuge-53805.

Далее, в терминале следует написать:

git add .

Потом делаете свой первый коммит:

git commit -am "make it better"

И затем делаете деплой своего кода на Heroku:

git push heroku master

Вам нужно будет подождать немного (обычно от 1 до 3 минут) и потом написать следующее в терминал, чтобы запустить вашего worker dyno:

heroku ps:scale worker=1

Готово! Проверьте своего бота – теперь он должен работать постоянно.

Кстати, Heroku не полностью бесплатный сервис, поэтому иногда они будут присылать вам сообщения о том, что ваши dyno перестанут работать надо заплатить. Я обычно игнорю такие сообщения, а боты работают как ни в чем не бывало :)

Если вы немного запутались, то вот GitHub репозиторий на этого бота.

Есть вопросы? Пиши @coders_assistant_bot.

Боты

Полезные боты для разработки

  • @trello_bot — Интеграция всемирно известной Канбан доски в телеграм
  • @bitbucket_bot — Интеграция bitbucket в телеграм
  • @integram_bot — Интеграция разных сервисов по разработке ПО в телеграм
  • @ChatbroBot — Бот позволяет встроить Telegram чат на сайт

Боты статистики и администрирования Telegram-групп

  • @Combot — Бот сбора и визуализации статистики вашей Telegram-группы
  • @Silent_Stats_bot — Бот статистики Telegram-группы
  • @GBReborn_bot — Администрирование Telegram-группы

Прочие боты

  • @ImageSearchBot — Бот поиска картинок от Яндекса
  • @temp_mail_bot — Временная электронная почта на 10 минут для регистраций
  • @fakemailbot — Временная электронная почта на 10 минут
  • @pomodoro_timer_bot — Бот-таймер по методу «помидорки»
  • @vkmusic_bot — Музыкальный бот ВК
  • @sp2txt_bot — Бот, превращающий речь в текст
  • @AntiParkonBot — Бот выдаёт контакты автовладельца по номеру машины
  • @AlertBot — Бот-напоминалка удобный
  • @MyCookBot — Бот шеф-повар. База рецептов
  • @SpamBot — Узнать в бане ли в телеграме, или нет
  • @AIPrismaBot — Призма Бот
  • @radiotgbot — Бот — Лучшее радио!
  • @RadioBot — Бот в котором можно переслушать эфиры 40+ популярных российских радиостанций.
  • @MelodyRobot — Угадай мелодию бот
  • @BotFather — Крёстный бото-отец :-)
  • @MyTeleCloudBot — облачный бот ?
  • @mybookbot — Бот-поисковик/скачиватель книг.
  • @ru_tracker_bot — Бот рутрекера
  • @arbeit_bot — Opensource freelance биржа
  • @xorappbot — Freelance-биржа .
  • @passgenbot — Генератор паролей.
  • @bashim_bot — Случайные цитаты с сайта (+ поиск в инлайн-режиме)
  • @SocialSaveBot — Позволяет сохранить фотографии из инстаграма
  • @spoibot — Инлайн бот для прятанья спойлер текстов за кнопку (удобно в крупных чатах)
  • @TgRusBot — Бот для русификации Telegram (Android, Desktop, iOS). Работает и в инлайн-режиме.
  • @tlgurbot — Предоставляет доступ по http к файлам из Телеграма.

GithubUpdate 1.0.stifffGithubUpdate 2.0.@hitmakerUpdate 3.0.@[email protected]

Включаем https

Телеграм бот не станет работать по обычному протоколу http т.к. это ставит под угрозу переписку. У нас нет домена на сервере, будем работать с самоподписным сертификатом.

Сначала генерируем наш сертификат и ключ с помощью openssl.

На последней команде openssl задаст вам несколько вопросов. Можно игнорировать все, кроме Common Name (FQDN). В нем следует указать ip вашего сервера.

Следующей командой мы получим сертификат из сгененрированного выше приватного ключа.

Так-с, серты сгенерировали. Идем к настройке nginx.

Указвыаем новый порт взамен 80. Указвыаем ключи и сертификаты и протоколы, которые мы можем хендлить.

Проверяем конфиги и перезапускаем веб сервер

Теперь в браузере по https://ваш_ип, вы должны увидеть вашу страницу flask приложения. Браузер будет ругаться на сертификат, игнорируйте.

Если нужно что-то посложнее

Возможности ботов Telegram гораздо шире, чем те которые есть у ботов, созданных на платформе code.telegram.org можно почитать подробнее о Telegram API и создании приложений на его основе.

Кстати, для расширения кругозора рекомендую статью 10 фактов о Telegram, которые ты не знаешь.


iPhones.ru

Без единой строчки кода! Telegram — мессенджер, созданный Павлом Дуровым в 2013 году, которым пользуется свыше 100 миллионов человек во всем мире. Помимо переписки с живыми людьми в нем можно общаться с ботами, программами которые в ответ на запросы пользователя выдают какую-либо информацию. Примеры интересных ботов: Игра Что? Где? Когда? Поиск паролей от Wi-Fi Проверка…

Ирина Чернова

Рас*здяйка. Графоманка. Боюсь людей. Страдаю манией величия. Фото удалено модераторами, так как внешность безнадежно испорчена тяжелой жизнью.

Вступление

На первый взгляд, Telegram — это просто очередной мессенджер. Реклама гласит, что он быстр, защищён, в нём нет рекламы и всё такое. Но у него есть важная фича — боты!

Бот — это не просто «автоответчик». Его правильнее считать автоматизированным помощником. Представим, что вы хотите поделиться в групповом чате видео с YouTube, но ссылки у вас нет.

Вот стандартный алгоритм действий без бота:

  • открываем YouTube в браузере;
  • находим видео;
  • нажимаем на «Поделиться» (и надеемся, что в списке будет наш мессенджер);
  • если нашего мессенджера в списке не оказалось, копируем ссылку на видео;
  • возвращаемся в мессенджер и делимся ссылкой.

Да, многие привыкли делать именно так. Однако бот позволит действовать следующим образом:

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

Удобно, не правда ли? И это лишь одна из возможностей.

DevOps/Linux-инженер

«КРОК», Москва, от 100 000 до 250 000 ₽

tproger.ru

Вакансии на tproger.ru

Telegram позволяет пользователям создавать своих ботов. Ответим на вопрос «Почему мне стоит написать своего?» — это, пожалуй, самый простой способ понять, что такое API.

Что такое Serverless в самом бытовом понимании?

Не буду очень глубоко уходить в дебри, на Хабре регулярно появляются обзорные статьи на эту тему. Это возможность разместить в облаке функцию, на каком-то из поддерживаемых платформой языков программирования, задать условие её срабатывания — и всё. Когда случится триггер — поднимется виртуальное окружение, в нем отработает функция, и выключится. Вместе с окружением.


В чем преимущества такого подхода?

Безопасность

Вы получаете безопасное изолированное окружение с последней версией компилятора / интерпретатора.

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

Стабильность и отказоустойчивость

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

Цена, особенно в условиях домашних малонагруженных проектов

При тарификации учитывается объём памяти, резервируемый под функцию за время её исполнения и количество вызовов. Согласно 10 000 000 запусков функции, работающей 800ms с ограничением по памяти 512мб будут стоить 3 900₽.

Да, 4.6 копеек. Плюс я не буду тратить время на настройки, что ещё приятней. Никаких правил для pm2, никакой актуализации Dockerfile или окружения, и вишенкой на торте — SLA 99,9.

Из пока нерешённых задач (но, полагаю, это вопрос времени) — привязка внешних доменов, а так же тонкая настройка http методов, которые служат триггером функции. Сейчас http триггер срабатывает на любой из DELETE, GET, HEAD, OPTIONS, PATCH, POST или PUT запросов на авто-генерируемую точку входа типа https://functions.yandexcloud.net/xxxxxxxxxxxxxxxx.

Из хороших новостей — это полноценный https, который отвечает всем требованиям Telegram для работы с api через webHooks. Но у AWS Lambda есть дополнения в виде API Gateway, да и сама настройка триггера шире, если вам это нужно.

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

Как создать .js файл, чтобы работать в Яндекс.Облаке?

Краткий гайд через веб интерфейс:

  • создаём Функцию
  • создаём в веб интерфейсе файл с любым именем и расширением js
  • выбираем интерпретатор — nodejs10 или nodejs12
  • в файле пишем функцию с одним параметром в exports.myFunction (ну, в произвольное поле в exports)
  • указываем таймаут работы функции, оперативную память (128МБ-1024МБ с шагом в 128МБ), точку входа (имяфайла.myFunction)
  • делаем функцию публичной

Функция написанная в файле может:

Получить данные http запроса через входящий параметр:

функция не получает request в чистом виде, и конечно же не управляет ходом запроса — она получает в своём единственном параметре с информацией о запросе:

Собираем данные

Еще с помощью ботов можно проводить опросы среди подписчиков:

1. Набираем /commands, выбираем пункт меню Создать команду и вводим имя для новой команды:

2. Нажимаем на кнопку Добавить вопрос, выбираем тип ответа и вводим текст вопроса:

3. Нажимаем на кнопку Сохранить и получаем уведомление об успешном создании команды:

4. Ответы на вопрос можно посмотреть в Главное меню-> Ответы на формы -> название команды:

Вот и все, что нужно знать, чтобы создать простейшего бота. Больше информации о функциях, которые может добалять manybot.io можно узнать, если набрать в своем боте команды /help.

Требования к хостингу

Выбирая хостинг для telegram, вы должны основываться на двух главных критериях – отличная служба поддержки и надежность. Большую проблему вам создаст портал, если он постоянно будет подвисать. Также скорость службы технической поддержки должна быть высокой, иначе вам не удастся быстро решить возникшие проблемы. Мы, например, остановились на Вебача для создания бота. А о том, как все правильно сделать, мы расскажем по порядку в следующих пунктах.

Создание бота

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

  • Найти в телеграме «BotFather» и поместить его в свой контактный лист;
  • Затем требуется посмотреть доступные команды при помощи кнопки «Помощь»;
  • Следом нужно выбрать «new bot» и по инструкции выполнить все требуемые действия.

После удачного создания telegram bot sdk на php вам будет отправлено сообщение с токеном, его необходимо сохранить, поскольку в токене прописан код доступа к боту.

Настройка домена

Настройка домена для telegram bot на php является одной из наиболее важных задач в этой процедуре. Рассмотрим, как выполнить настройку telegram bot для php на примере вебачи.

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

  1. Регистрируемся на портале и во вкладке «addsite» в строке адреса домена для телеграм меняем комбинацию «ns» на нужную.
  2. Домен подключен для бота. Затем нам понадобиться перейти на панель управления своего сайта.
  3. Далее выбираем вкладку «Крипто» и пункт «ССЛ» и производим установку.
  4. Далее осуществляем проверку, все должно работать в обычном режиме.

Также после выполнения всех представленных шагов вам потребуется написать код бота. Сделать это можно воспользовавшись «SetWebhook» и библиотекой. Открыв в браузере нужную ссылку, вам системой будет отправлен ответ, что webhook для telegram bot в php установлен и теперь вы сможете получать запросы от интернет-пользователей. А как настроит эти запросы мы расскажем в следующем пункте.

# Размещение бота на Heroku

Я люблю этот сервис за то, что я могу протестировать свои проекты в режиме «продакшн». Это дает мне гарантию, что мой проект будет работать стабильно, когда я его запущу в «боевом режиме».

Особой разницы в размещении бота на Heroku или на отдельном сервере нету. Тут всё достаточно просто.

  1. Зарегистрируйтесь на сайте Heroku
  1. Войдите в свой аккаунт и создайте первый проект, нажав на \”Create new app\”.
  1. Придумайте название своему проекту. Название должно быть уникальным. Выбор региона не принципиален.

  2. После создания проекта, вам будет предложены варианты деплоя (размещения) вашего проекта на Heroku.

Тут есть несколько вариантов. Я опишу только первые два.

  • Heroku Git — с помощью CLI от Heroku, вы можете очень просто разместить своего бота на сервере Heroku.
  • GitHub — вы можете подключить свой аккаунт GitHub и склонировать ваш репозиторий на сервер Heroku.

Я буду пользоваться первым вариантом.

Следуя простой инструкции, указанной в разделе \”Deploy\”, можно загрузить свой проект на сервер Heroku.

  1. Скачайте Heroku CLI для работы с Herokue сервером.
  2. Войдите в аккаунт Heroku через CLI.
  1. Зайдите в папку вашего проекта через консоль (терминал).
  1. И выполните эти две команды по очереди. (Если вы уже инициализировали Git, то первую команду выполнять не надо).

Первая — инициализирует Git в вашей папке. Вторая — установит ссылку на репозиторий Heroku, для деплоя (размещения) вашего проекта на сервере.

Когда внесли все правки и убедились, что всё должно работать нормально, создайте в папке с вашим проектом — Procfile. Без расширения, просто – Procfile.

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

В моем случае, это . Так как у меня код написан на ES6, мне нужно конвертировать ES6 в ES5 с помощью Babel. И только после этого, у меня запускается команда запуска бота, типа: .

Создаем свою команду

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

1. Набираем /commands:
2. Набираем имя новой команды и текст, который она будет выдавать в ответ (при желании к тексту можно прикрепить файлы):
3. Нажимаем кнопку Сохранить и дожидаемся завершения создания команды:

Для того, чтобы отредактировать команду /hello надо набрать /commands, /hello:

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

3. Настройка передачи данных из CRM в таблицу

Изначально я хотел делать выгрузку по API, но при этом методе пришлось бы столкнуться с лимитами. Поэтому для этой цели я использовал Zapier — сервис для настройки интеграций. С его помощью я не раз настраивал не только их, но и дашборды для различных отделов.

  1. Заходим в CRM — в нашем случае это был Pipedrive, и создаем фильтр с условием Сделка выиграна сегодня
  2. Далее заходим в Zapier и нажимаем оранжевую кнопку Make a Zap в правом верхнем углу.
  3. Откроется окно, в котором Zapier предложит выбрать приложение. В строке поиска введите свою CRM.
  4. В окне для выбора триггера введите Deal Matching Filter и выберите его.  
  5. Далее сервис предложит вам выбрать аккаунт, который привязан к CRM. Для этого вам понадобится ключ API. Чтобы найти его в Pipedrive, нужно зайти в свой аккаунт — раздел Settings — Настройки и скопировать API. Скорей всего, в других CRM его можно найти аналогичным способом.
  6. В выпадающем списке выбираем фильтр ZAP — отправка письма с выигранной сделкой. Его мы создали пункте 1.
  7. Нажимаем кнопку Test this step и тестируем. Даже если под фильтр ничего не попало, то Zapier сам сгенерирует тестовую сделку. Это нужно для понимания, идет ли вызов от сервиса к CRM.
  8. Добавляем второй шаг и выбираем приложение Google Таблицы.
  9. Выбираем триггер с действием Создавать строку в таблице
  10. После этого снова выбираем аккаунт.
  11. Выбираем таблицу, лист и данные, которые должны туда передаваться. 
  12. Если вы отложили на потом создание таблицы, которую я описал выше, то сделайте это сейчас. Обязательно создайте шапку с названиями переменных, которые вы хотите передавать: сумма сделки, дата выигрыша и т. д.
  13. В выпадающем списке видим все данные, которые в первом шаге при действии Test попали в Zapier.
  14. Тестируем этот шаг, и данные попадают в таблицу.
  15. Так как Zap мы уже включили, то при первой же выигранной сделке мы получим данные. Не забывайте обязательно проверить, включен ли Zap.

Пишем код для бота

Дошли до самого интересного.

Сначала установим модуль для работы с 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.

Постановка задачи

Для работы телеграм бот, который крутится на нашей машине, должен получать обновления от сервера Telegram. Это можно сделать двумя методами:

  • Long polling. Метод, когда ваша программа в определенный промежуток времени опрашивает сервер об обновлениях.
  • Web hook. Тут вы поднимаете веб сервер, на который телеграм бот шлет обновления, если они есть.

Второй метод популярнее и считается надежнее, поэтому остановимся на нем.

Писать будем на Python с использованием Flask. В роли веб сервера используем nginx. В работе с сервером CS нам поможет чудесный модуль python-valve

Выбор сервера для хостинга нашего бота роли не играет, я буду работать с Digital Ocean.

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

Создание

Чтобы создать бота, в первую очередь, постучитесь к @botfather с командой /newbot. Он попросит написать имя бота и его username (которое должно заканчиваться на bot). При создание бота @botfather сообщит http-токен для api. Команды, начинающиеся с /set, помогут настроить различные параметры бота, такие как имя, описание, аватар, текст в профиль и описание. Все достаточно просто.

Для работы бота нужно выбрать режим обновлений: polling или WebHook.

  • в режиме WebHook сервер Телеграма будет отправлять данные вашему боту, каждый раз при поступлении запроса. Это удобный и надежный вариант, а, главное, быстрый, но, к сожалению, этот режим требует https-подключения и сертификата.
  • в режиме polling бот будет сам ходить на сервер Телеграма и забирать новые данные. Этот режим гораздо проще, но реакция бота будет не мнгновенной, а в среднем с полсекундной задержкой. Кроме того, нужно учесть, что иногда бывают сбои в ответе с сервера, поэтому бота следует сделать устойчивым к таким ошибкам.

Выбор хостинга

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

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

А значит при выборе хостинга для Telegram-бота можно рассматривать российских провайдеров

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

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

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

Итог настройки

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

Подытожим, как вся эта схема работает.

  1. Происходит продажа.
  2. Zapier отправляет информацию о сделке на соответствующий лист таблицы.
  3. Срабатывает триггер.
  4. Скрипт обращается к листу с выигранными сделками и берет оттуда данные о продаже, из которых формируется текст.  
  5. Скрипт передает информацию боту.
  6. Бот отправляет сообщение в чат продажников.
  7. После этого в последнем столбце таблицы — Статус, появляется надпись ОК.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий