Как держать Телеграмм бота чтобы он работал постоянно

Содержание

В Telegram существует 800 тысяч ботов, которых регулярно используют 52 миллиона человек. В мессенджере можно настроить от простейшей «напоминалки» до переводчика и опросника. Telegram-бот будет полезным инструментом и для отдела продаж — в этом мы убедились на собственном опыте. О настройке такого помощника рассказывает Руслан Ясинский, аналитик Ringostat.

Время чтения: 11 минут

  1. Telegram: как пользоваться ботами
  2. Чем полезен чат-бот в Телеграм
  3. 1. Создание бота
  4. 2. Настройка скрипта и триггера
  5. 3. Настройка передачи данных из CRM в таблицу
  6. Итог настройки
  7. Выводы

Одна из моих обязанностей — внедрение решений по автоматизации и оптимизации бизнес-процессов отдела продаж. Поэтому я слежу за технологиями, которые могут пригодиться в данной сфере. Не так давно я нашел инструкцию по созданию и настройке чат-бота, которую адаптировал под нужды наших sales-менеджеров. Ниже я поделюсь ею, но сначала опишу принцип работы помощника и его плюсы. Отдел продаж Ringostat использует CRM Pipedrive, а для общения продажников есть специальный чат. После каждой продажи бот отправляет в него такое сообщение:

Telegram bot на Python для торговли на Binance Futures

бот тг, как установить бота в телеграм

Telegram: как пользоваться ботами

  • из CRM в отдельную Google Таблицу передаются данные о закрытии сделок;
  • специальный скрипт берет данные из этого докса, обращается к боту и передает их ему;
  • помощник отправляет участникам чата сообщение о том, что состоялась продажа.

Чем полезен чат-бот в Телеграм

  1. Оперативность. Мессенджер обычно постоянно открыт. Поэтому сотрудники и руководство сразу узнают о новых продажах — для этого не нужно заходить в CRM.
  2. Дополнительная мотивация. Менеджеру, который закрыл сделку, приятно видеть упоминание о продаже. Да и его коллег это вдохновляет не отставать.
  3. Информация под рукой. Бот особенно удобен для тех, кто на больничном, в отпуске или командировке. Обычно в таких случаях заходить в CRM слишком неудобно.

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

За основу я взял часть инструкции с Medium . Сначала мы создаем бота, даем ему имя и логин, с помощью которого помощника можно найти и добавить. После этого получаем bot token.

Как бы иронично это ни звучало, но в этом нам помогает BotFather Это бот, который управляет всеми помощниками в Telegram. Его можно использовать для создания новых бот-аккаунтов или управлять существующими. Он помогает на каждом этапе, поэтому ошибиться практически невозможно.

программирование бота для telegram, как пользоваться телеграм ботами

В нашем случае нужен токен для доступа к API, с его помощью вы будете взаимодействовать с платформой. Получить его можно, общаясь с BotFather. Используйте команду /newbot для создания нового помощника — просто напишите ее в сообщении для «бота-отца».

BotFather запросит у вас название и имя пользователя, а затем сгенерирует токен авторизации для вашего нового бота. Имя пользователя — это короткое название, которое будет использоваться в упоминаниях и ссылках для telegram.me. Оно должно заканчиваться на «бот», например Sales_bot или SalesBot.

BotFather выдаст вам строку с API, которая выглядит примерно так:

бот телеграмм создать, телеграм боты

2. Настройка скрипта и триггера

Когда вы получите токен, нужно будет прописать логику для вашего бота. Это можно назвать оболочкой, которую вы можете настраивать на свое усмотрение. Я это сделал на базе Google App Script. К тому же в инструкции приведены плюсы развертывания и настройки бота с его помощью. Например, вам не нужно арендовать удаленный сервер, приобретать SSL-сертификат. Для новичка это самый легкий способ запустить бота.

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

В таблице я создал столбцы для самой важной информации:

  1. владелец сделки — ответственный менеджер;
  2. ссылка на сделку в CRM;
  3. ID сделки;
  4. сумма;
  5. менеджер, закрывший сделку — если открыл сделку один сотрудник, а дальше с клиентом общался другой;
  6. дата закрытия сделки;
  7. название сделки — в нашем документе тут отображается сайт пользователя, год и месяц сделки, партнер, если клиент пришел от него;
  8. статус — если бот отправил статус в канал sales-менеджеров, то тут появляется запись OK, но об этом ниже.

Когда вы создали докс, заходим в раздел Инструменты — Редактор скриптов. После этого у вас откроется поле, в которое нужно ввести код.

как создавать ботов в telegram для

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

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

Теперь переходим к коду. В первую строку вводим ID бота, который нам выдал BotFather. Во вторую — ID группы, в которую помощник будет отправлять сообщения. Как получить этот параметр, описано по ссылке .

интеграция гугл таблиц с телеграм, создание бота телеграм

Пара слов о том, какие функции есть в коде.

  1. Строки 6-28 — функция считывания последних строк, проставление статуса ОК и отправка сообщения.
  2. Строка 23 — функция с переменной send message, где содержится шаблон сообщения, в который подставляются данные о сделках. Вы можете поменять текст на свое усмотрение.
  3. Строки 30-39 — логика и опции отправки сообщений.
  4. Строки 41-49 — функция, которая позволяет скрипту находить колонку Статус в шапке документа. Благодаря коду он сделает это, даже если колонка поменяет свое расположение, и вам не придется лишний раз редактировать скрипт.

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

робот для телеграмм, chat bot telegram

После этого откроется G Suite Developer Hub. В правом нижнем углу окна нажмите + Добавить триггер. Далее настройте триггер таким образом:

программирование телеграм бота

Теперь триггер будет запускать скрипт, только если в таблице произошли изменения. Когда в документе появляется новая строка, запускается функция readLastRow. Скрипт определяет, не появилась ли в листе с выигранными сделками новая строка, в статусе у которой нет ОК. Если такая есть, из ее данных формируется сообщение по шаблону и отправляется боту.

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

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

О полезных отчетах, которые можно создать с помощью Zapier, читайте в статье «Как создавать автоматизированные дашборды» .

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

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

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

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

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

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

Выводы

  1. Чат-бот в Телеграм — это простой и доступный способ автоматизировать работу.
  2. Создать бота в Телеграм можно с помощью других ботов, в частности — https://telegram.me/BotFather
  3. Телеграм легко объединять с другими сервисами по API. В этой статье мы привели пример создания бота, который подтягивает информацию из CRM и поздравляет коллег с новыми продажами.

Источник: blog.ringostat.com

Как сделать бота телеграмм постоянно включенным

В Telegram с 24 июня 2015 появились боты, а точнее Telegram Bot API. То есть, теперь мою прошлую задачу получения статуса сервера можно решить гораздо удобнее.

Бот не является “пользовательским аккаунтом”, ему не нужен номер телефона, и самое главное — не нужно ставить клиентское приложение для Telegram на сервере или где вы хотите его использовать. Бот для Telegram — это ну как бы и есть API — веб-запросы к серверам Telegram. Механизм обработки запросов и отправки ответов лежит на вас, как на владельце бота.

Официальная документация по ботам здесь: https://core.telegram.org/bots

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

Нужно написать самому главному боту — BotFather:

BotFather help

…и уважительно попросить создать нового бота:

BotFather newbot

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

Сейчас, когда у вас уже создан бот и получен токен, я могу на примере продемонстрировать, что конкретно имел в виду под словами “это ну как бы и есть API”. Откройте браузер и перейдите по такому адресу:

В браузере отобразится примерно такое:

Для большей наглядности, вот скриншот браузера:

Telegram бот вызов из браузера

Вот что такое бот в Telegram. Вы отправляете веб-запрос и получаете на него JSON-ответ.

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

Реализация бота

Я выбрал язык Python. Выбор далеко не случаен. Дело в том, что для Python уже есть готовая библиотека, существенно облегчающая реализацию бота — это pyTelegramBotAPI. Собственно, в ней сделано уже всё, что требуется для отправки веб-запросов и получения ответов, вам остаётся только описать команды, которые ваш бот будет уметь выполнять. Однако, какое-то понимание всё же потребуется, потому настоятельно рекомендую изучить документацию по API: https://core.telegram.org/bots/api

Итак, вам нужно поставить Python и какую-нибудь IDE (хотя, конечно, можно и в Блокноте). Вот что у меня:

Итак, у вас установлен Python и pip, ставим pyTelegramBotAPI:

Теперь создаём файл someTestBot.py , в котором и будет описан функционал бота. Я определил две обязательных команды /start и /help , а также команду отправки статуса сервера /server (забегая вперёд, она предназначена для запуска в Linux, так что при тестировании на Windows её вызов зафейлится):

Скрипт сбора информации о статусе сервера status.sh я взял из прошлой статьи и немного изменил:

Его надо поместить на сервере по пути /root/scrps/status.sh , либо каком другом, но тогда надо не забыть изменить его и в исходниках бота.

На этом реализация бота закончена.

Возвращаемся к BotFather, указываем ему команды, которые знает бот:

BotFather commands

Размещение и запуск бота на сервере

Telegram бот команды

Как я и говорил, команду /server в Windows он обработать не смог, и пойманное исключение записалось в журнал.

Кстати, обратите внимание — приложение показывает подсказки о всех командах бота, которые мы добавили через BotFather:

Telegram бот команды

Теперь задача, как сделать так, чтобы бот работал постоянно. Идём на сервер с Linux, создаём каталог /usr/local/bin/someTestBot/ , кладём в него наш someTestBot.py . Кстати, на сервере тоже должен быть установлен pyTelegramBotAPI (разумеется, Python и pip тоже).

Я расскажу о двух способах, как запустить скрипт в качестве сервиса: Supervisor и systemd .

Supervisor

Создаём конфиг для процесса ( /etc/supervisor/conf.d/someTestBot.conf ):

С таким конфигом, надо полагать, бот будет “выполняться” с root правами, что некруто. Скорее всего, можно задать, с какими правами это будет работать. Ну да ладно, нам же надо скорее в продакшн, так что запускаем:

systemd

А можно ничего и не устанавливать, если в системе используется systemd .

https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

В User=someTestBot можно и root указать, но я рекомендовал бы создать под это отдельного юзера. Правда, тогда чтобы работали скрипты, надо будет дать этому пользователю доступ к mysqladmin .

Включаем нашу только что созданную службу:

Ну всё, бот работает, проверяем:

Telegram бот статус сервера

Что ещё можно сделать? Ну, вот эта строка — bot.polling() — в общем-то, означает бесконечно выполняющийся цикл запросов к серверам Telegram, что не очень правильно в плане потребления ресурсов на обеих сторонах. Лучше сделать так, чтобы приложение бота ожидало сообщения от Telegram. Это можно сделать, реализовав webhook. Когда доберусь до этого, дополню статью.

Наконец-то запилил инструкцию на webhook. Решил не добавлять здесь, а запостить новую статью.

Еще по теме:  Является ли Телеграмма надлежащим уведомлением для суда

Как сделать так, чтобы бот работал постоянно?

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

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

Я воспользовался сервисом https://www.pythonanywhere.com там все бесплатно и понятно. Регистрируешься, затем добавляешь файлы с ботом в раздел Files и после запускаешь.

Highly active question. Earn 10 reputation (not counting the association bonus) in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как остановить бота в Telegram за 3 секунды?

Знакома ли вам ситуация, когда вы запустили бота в Telegram, решили свою задачу и ушли, а через некоторое время он начинает надоедать вам сообщениями?

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

Почему это происходит?

Чат-бот — это такое же приложение в вашем телефоне, как и любое другое. Мы писали об этом в нашей предыдущей статье.

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

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

Вторым распространённым случаем являются рекламные сообщения. Не секрет, что для поддержания работоспособности бота и его развития владельцам приходится нести расходы на инфраструктуру, зарплаты, аренду и проч. Если бот не позволяет зарабатывать напрямую, то многие из них прибегают к модели adware, когда приложение остаётся бесплатным, а пользователям время от времени показывается реклама. В большинстве приложений это разумный компромисс, но иногда разработчики перегибают палку, и реклама начинает литься, как из рога изобилия. Помочь с этим могут советы из раздела «Управление рекламой».

Наконец, третьим, и наиболее опасным, случаем является взлом и рассылка уведомлений пользователям бота. Это может произойти как из-за утечки токена авторизации бота, при которой злоумышленник может перехватить контроль над каналом связи с пользователями (дефейс), так и из-за более глубокого взлома. Что нужно делать, если вы с этим столкнулись, описано в главе «Взломанный бот».

Что делать?

Настройка уведомлений

Обычно достаточно предпринять следующие шаги:

1. Перейдите в бота

2. Найдите раздел с настройкой уведомлений (обычно он находится в разделе Account/Профиль или Settings/Настройки)

3. Выберите те уведомления, которые вы хотите получать, и их частоту

Если такого раздела нет, то сделайте следующее:

1. Найдите бота в списке чатов

2. Смахните его влево, чтобы открылись кнопки как на рисунке ниже

3. Нажмите Mute, чтобы перевести уведомления в тихий режим

4. Перейдите на страницу бота в Bots Club и оставьте комментарий разработчикам о большом количестве сообщений

5. Если разработчик долго не отвечает, попробуйте найти его контакт в описании бота в Telegram и написать ему лично

Будьте вежливы и конструктивны — зачастую владельцы ботов будут рады помочь вам и завоевать ваше доверие.

Управление рекламой

Реклама может быть назойливой, это правда. Тем не менее, постарайтесь сохранить хладнокровие и выполнить эти шаги:

1. Переведите бота в тихий режим, как было описано выше

2. Оставьте отзыв с низкой оценкой на странице бота в Bots Club. Динамика рейтинга приложения — очень значимый фактор для разработчиков, и его резкое снижение привлечёт их внимание

3. Если проблема была решена, не забудьте поблагодарить и поставить хорошую оценку

Взломанный бот

Если вам показалось, что бот выглядит не так, как всегда, и был взломан, то вот что нужно сделать:

1. Прекратите использование бота и переведите его в тихий режим

2. Проверьте релиз ноты и комментарии других пользователей на странице бота в Bots Club — возможно, разработчики просто выкатили большое обновление

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

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

К чёрту подробности, какая планета?

Если вы всё же решили навсегда прекратить отношения с ботом, остановить его и убрать из своего списка чатов, то вот что нужно делать:

1. Попросите поддержку бота удалить ваш аккаунт. Если его владельцы работают в России или ЕС, они обязаны это сделать по закону.

2. Найдите бота в списке чатов, смахните влево и выберите Delete

3. Выберите Delete and Stop

Через 5 секунд бот будет окончательно остановлен, и история переписки с ним будет удалена из ваших чатов.

Тем не менее, важно понимать, что:

1. История переписки могла остаться на серверах разработчика бота;

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

Есть ли способ сохранить работоспособность бота Telegram при закрытии Python? [Дубликат]

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

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

Есть ли способ обойти это, так что бот всегда будет ‘on’?

2 ответа

Бот телеграмм — это программа Python. Когда вы запускаете его, он делает то, что он должен делать, тогда, если вы остановите программу, бот перестанет работать. Проблематика является общей для всех программ, особенно на сервере. Подумайте о Nginx, Apache, ssh и т.д. Все это программы, и все они перестают выполнять свою работу, когда закрываются.

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

Вы можете преобразовать ваш script в качестве демона, поэтому при его запуске он переходит непосредственно в фоновый режим и продолжает работать до тех пор, пока сервер не будет отключен (или сбой программы). Но в этом случае ваш бот будет повторно запускаться, если вы (или кто-то еще) перезагрузите компьютер (сервер)? Для этой цели есть несколько библиотек python, таких как daemonize.

Другим распространенным решением является запуск вашего бота в диспетчере процессов. Например, вы можете проверить supervisorctl, или вы можете решить создать script для запуска вашей программы из System V, UpStart или Systemd. Предположим, вы хотите развернуть свой бот на выделенном сервере или VPS. Это будет рассмотрено в части 3 tutoriel, которую вы следовали:

Следующая и последняя часть этой серии [. ] будет демонстрировать, как развернуть Бот для VPS.

Вы также можете рассмотреть возможность инкапсуляции вашего бота в изображение или контейнер (Docker и т.д.), чтобы запустить его на совместимой платформе.

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

  1. Для чего нужна библиотека lame
  2. Как заменить лицо на фото
  3. Как скопировать заметки с xiaomi на компьютер
  4. Синхронизация игрового прогресса как отключить
Еще по теме:  Как на ноутбуке сделать Телеграмм на русском

Источник: amdy.su

Как сделать чтобы телеграм бот работал постоянно

В Telegram с 24 июня 2015 появились боты, а точнее Telegram Bot API. То есть, теперь мою прошлую задачу получения статуса сервера можно решить гораздо удобнее.

Бот не является “пользовательским аккаунтом”, ему не нужен номер телефона, и самое главное — не нужно ставить клиентское приложение для Telegram на сервере или где вы хотите его использовать. Бот для Telegram — это ну как бы и есть API — веб-запросы к серверам Telegram. Механизм обработки запросов и отправки ответов лежит на вас, как на владельце бота.

Официальная документация по ботам здесь: https://core.telegram.org/bots

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

Нужно написать самому главному боту — BotFather:

BotFather help

…и уважительно попросить создать нового бота:

BotFather newbot

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

Сейчас, когда у вас уже создан бот и получен токен, я могу на примере продемонстрировать, что конкретно имел в виду под словами “это ну как бы и есть API”. Откройте браузер и перейдите по такому адресу:

В браузере отобразится примерно такое:

Для большей наглядности, вот скриншот браузера:

Telegram бот вызов из браузера

Вот что такое бот в Telegram. Вы отправляете веб-запрос и получаете на него JSON-ответ.

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

Реализация бота

Я выбрал язык Python. Выбор далеко не случаен. Дело в том, что для Python уже есть готовая библиотека, существенно облегчающая реализацию бота — это pyTelegramBotAPI. Собственно, в ней сделано уже всё, что требуется для отправки веб-запросов и получения ответов, вам остаётся только описать команды, которые ваш бот будет уметь выполнять. Однако, какое-то понимание всё же потребуется, потому настоятельно рекомендую изучить документацию по API: https://core.telegram.org/bots/api

Итак, вам нужно поставить Python и какую-нибудь IDE (хотя, конечно, можно и в Блокноте). Вот что у меня:

Итак, у вас установлен Python и pip, ставим pyTelegramBotAPI:

Теперь создаём файл someTestBot.py , в котором и будет описан функционал бота. Я определил две обязательных команды /start и /help , а также команду отправки статуса сервера /server (забегая вперёд, она предназначена для запуска в Linux, так что при тестировании на Windows её вызов зафейлится):

Скрипт сбора информации о статусе сервера status.sh я взял из прошлой статьи и немного изменил:

Его надо поместить на сервере по пути /root/scrps/status.sh , либо каком другом, но тогда надо не забыть изменить его и в исходниках бота.

На этом реализация бота закончена.

Возвращаемся к BotFather, указываем ему команды, которые знает бот:

BotFather commands

Размещение и запуск бота на сервере

Telegram бот команды

Как я и говорил, команду /server в Windows он обработать не смог, и пойманное исключение записалось в журнал.

Кстати, обратите внимание — приложение показывает подсказки о всех командах бота, которые мы добавили через BotFather:

Telegram бот команды

Теперь задача, как сделать так, чтобы бот работал постоянно. Идём на сервер с Linux, создаём каталог /usr/local/bin/someTestBot/ , кладём в него наш someTestBot.py . Кстати, на сервере тоже должен быть установлен pyTelegramBotAPI (разумеется, Python и pip тоже).

Я расскажу о двух способах, как запустить скрипт в качестве сервиса: Supervisor и systemd .

Supervisor

Создаём конфиг для процесса ( /etc/supervisor/conf.d/someTestBot.conf ):

С таким конфигом, надо полагать, бот будет “выполняться” с root правами, что некруто. Скорее всего, можно задать, с какими правами это будет работать. Ну да ладно, нам же надо скорее в продакшн, так что запускаем:

systemd

А можно ничего и не устанавливать, если в системе используется systemd .

В User=someTestBot можно и root указать, но я рекомендовал бы создать под это отдельного юзера. Правда, тогда чтобы работали скрипты, надо будет дать этому пользователю доступ к mysqladmin .

Включаем нашу только что созданную службу:

Ну всё, бот работает, проверяем:

Telegram бот статус сервера

Что ещё можно сделать? Ну, вот эта строка — bot.polling() — в общем-то, означает бесконечно выполняющийся цикл запросов к серверам Telegram, что не очень правильно в плане потребления ресурсов на обеих сторонах. Лучше сделать так, чтобы приложение бота ожидало сообщения от Telegram. Это можно сделать, реализовав webhook. Когда доберусь до этого, дополню статью.

Наконец-то запилил инструкцию на webhook. Решил не добавлять здесь, а запостить новую статью.

Как сделать так, чтобы бот работал постоянно?

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

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

Я воспользовался сервисом https://www.pythonanywhere.com там все бесплатно и понятно. Регистрируешься, затем добавляешь файлы с ботом в раздел Files и после запускаешь.

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как сделать, чтобы на VDS Телеграм бот работал постоянно?

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

1) Как сделать чтобы бот работал постоянно/круглосуточно + автоматически запускался после краша?
(Сейчас использую PuTTY, как я понял после запуска бота из консоли, в случае закрытия этой самой консоли бот тоже остановится?)

2)Как запускать одновременно на одном серваке несколько ботов, чтобы не было конфликтов между ними.
(Слышал про cmd-команду «screen» для создания виртуальной сессии, а также про systemd, это оно, копать в эту сторону?

3)Webhook предпочтительнее longpolling при одновременной работе нескольких ботов или не суть?

З.Ы. Хост — Fornex; Админка — Vesta; ОС — Debian 9; Терминал клиент — PuTTY; FTP клиент — WinSCP

Запускаем Python-скрипт на сервере, чтобы он работал всё время

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

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

Коротко — суть

Чтобы было понятно, что тут происходит, вот короткая версия:

  1. Настраиваем удалённый доступ к серверу.
  2. Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
  3. Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
  4. Отправляем файл службы на сервер.
  5. Обновляем на сервере данные обо всех службах и запускаем нашу.

Теперь подробно про каждый шаг.

Предварительная работа

Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления:

Запускаем Python-скрипт на сервере, чтобы он работал всё время

Запускаем Python-скрипт на сервере, чтобы он работал всё время

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