Тогда он будет работать круглые сутки, а вы — отдыхать.
Не так давно мы создали телеграм-бота на Python : можно было написать ему свой знак зодиака, а он в ответ давал предсказание о долгой счастливой жизни. Но у бота есть недостаток: он работает, пока запущена программа на нашем компьютере. Если мы её остановим или выключим компьютер, бот тоже перестанет отвечать на сообщения.
Вот что мы сделаем, чтобы бот работал независимо от всего:
- Выберем сервер.
- Подготовим программу для работы на нём.
- Зальём программу на сервер.
- Настроим сервер, чтобы он исполнял программу.
Выбираем сервер
Нам нужен сервер, который умеет работать с Python и запускать файлы программы автоматически. На самом деле он у нас уже есть — на нём крутится сайт mihailmaximov.ru . Если вы всё пропустили — держите подборку:
- что такое домен и как его получить ;
- делаем страницу «О себе» ;
- как опубликовать свой сайт в интернете .
Тот хостинг, который мы выбрали для проектов, уже умеет запускать Python-файлы. Если вы пользуетесь другим сервисом, то проверьте, умеет ли он то же самое.
Как сделать 24/7 сервер в атернос?(как добавить бота на сервер майнкрафт)
Готовим программу и отправляем её на сервер
Единственное, что нужно добавить в наш код телеграм-бота, — специальную команду интерпретатору, чтобы он знал, как работать с нашим файлом. Но перед этим нужно проверить, какая версия Python на нём установлена.
Чтобы это узнать, соединимся с сервером по протоколу SSH и спросим у него напрямую. Для этого используем программу Putty , а настройки подключения возьмём в личном кабинете хостинга:
Этих данных достаточно, чтобы управлять сервером по SSH.
Вставляем их в Putty и подключаемся. Помните, что для безопасности во время ввода пароля курсор стоит на месте, чтобы никто не смог выяснить, сколько символов вы набираете. Когда подключились, вводим команду python3.3 -V — она покажет, есть ли на сервере поддержка этой версии Python:
Сервер говорит, что у него установлена версия Python 3.3.5 — нам этого хватит.
Теперь добавляем в самое начало нашего файла с программой такую строчку:
#!/usr/bin/python3.3
В статье о том, как опубликовать сайт в интернете, мы рассказывали, как залить файлы на сервер. Это умение нам сейчас пригодится: сохраняем нашу программу с гороскопом как файл с расширением .py и отправляем его на сервер в папку cgi-bin (то, что лежит в этой папке, никто не увидит):
Настраиваем сервер
Теперь научим сервер понимать, как работать с нашей программой. Для этого в корне сайта находим файл .htaccess и добавляем в него такую строчку:
AddHandler cgi-script .py
Если у вас такого файла нет — создайте его и не забудьте про точку в самом начале названия.
Последнее, что осталось сделать, — настроить права доступа у файла с программой. Находим её среди файлов хостинга и выставляем права 755 или rwxrwxr-x:
Теперь с помощью Putty снова подключаемся к серверу и настраиваем рабочее окружение. Это как будто виртуальная песочница, где мы сможем ставить нужные модули для Python, чтобы не мешать остальным пользователям сервера.
БЕСПЛАТНЫЙ 24/7 ХОСТИНГ ДЛЯ БОТА ДИСКОРД! JavaScript + Python! .js + .py (ТаймКоды в описании)
Всё, что мы будем делать дальше, относится к хостингу SpaceWeb. Если у вас другой хостинг, то, возможно, часть команд вам не пригодится и Python будет работать напрямую. У нас так не работает, поэтому делаем виртуальное окружение.
В SSH-терминале пишем по очереди такие команды (вместо .thecode можно написать название каталога, которое вам по душе):
virtualenv .thecode
source .thecode/bin/activate
Эти две команды создадут виртуальное пространство для запуска Python-файлов.
Теперь установим Python-модуль для работы с Телеграмом:
pip install pytelegrambotapi
Когда установка закончится, пишем такую команду:
nohup python3 /home/t/thecode/osebe/public_html/cgi-bin/telegoroskop.py
/home/t/thecode/osebe/ — это наш путь к папке cgi-bin, а у вас он будет другим. Поменяйте путь на свой и запускайте.
Чтобы программа продолжала работать после того, как мы закроем SSH-клиент, в самом начале пишем команду nohup .
Что дальше
Мы сделали самые базовые вещи — запустили скрипт на сервере и сделали так, чтобы он работал там постоянно. Но вот как можно это улучшить:
- сделать так, чтобы программа сама перезапускалась, если остановится;
- написать отдельный сервис, через который мы сможем запускать и останавливать бота;
- прикрутить этот сервис к другому телеграм-боту, чтобы в итоге боты управляли всем миром.
Источник: dzen.ru
Бессерверный бот Telegram
Этот чат-бот Telegram построен на случай чрезвычайной ситуации — умеет отправлять SOS спасателям, если вдруг, например, кто-то окажется без зонта в проливной дождь. Он написан на Python с использованием AWS Lambda, Zappa и Flask.
AWS Lambda — это сервис вычислений, запускающий ваш код при определенных событиях и автоматически управляющий вашими вычислительными ресурсами.
Flask — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2.
Проблема
Чат-бот решит проблему, если неожиданно вы попали под дождь или в еще какую неприятность. Любой может попросить зонтик. Бот спрашивает, где находится человек, сколько зонтов ему или ей может понадобиться, и когда они хотели бы, чтобы их «спасли».
Так ведет себя чат-бот, когда получает запрос на зонтик. Любой человек может зарегистрироваться как спасатель. Немного хорошей кармы никому не помешает.
Так можно стать спасателем
Спасателям приходят сообщения, когда кто-то рядом с ними оказался в «беде». Если человек решил помочь, то ему всего лишь нужно нажать кнопку.
При построении бота есть небольшие хитрости, которые помогут сделать его быстрее.
Что необходимо
AWS Lambda
Вместо запуска сервера 24/7 вы можете размещать функции в Lambda, чтобы сервер работал только в течение жизненного цикла запроса. Это прекрасно подойдёт для большого числа бесплатных запросов.
Zappa
Программа автоматизирует действия, необходимые для получения локального кода Python на AWS Lambda. Она также настраивает API-интерфейс Amazon, поэтому у вас будет хорошая конечная точка HTTPS для размещения функций вашего чат-бота
ngrok
Делает любые локальные серверы доступными через интернет. Это отличный способ прототипировать WebHooks, прежде чем фактического развертывания их в облаке.
Данные инструменты помогут избежать большой головной боли при создании бота (например, не надо будет арендовать сервер, настраивать его для HTTPS, выяснять, как сделать неблокирующий сервер).
Далее показано, как использовать эти инструменты для разработки чат-бота.
Итак, как сделать чат-бота без знания бота API Telegram, но со знанием работы Flask и Python. Если что-то покажется вам слишком простым, не стесняйтесь и пропустите ненужное.
Построение Telegram-бота
Подсказка: где-нибудь сохраните токен, он понадобится в ближайшее время!
Подберите изображение профиля бота, составьте текст его описания. Дайте ему любую личность.
Настройка сервера разработки с помощью Flask
Я работал с pipenv для управления зависимостями Python моего проекта. Попробуйте, если вы все ещё используете pip и virtualenv. По ссылке найдёте инструкции по установке.проекта.
Далее установим Flask. Также будем использовать потрясающую библиотеку requests. В командной строке введите:
- pipenv install flask
- pipenv install requests
После установки создадим базовый сервер для тестирования нашего бота. Скопируйте следующий текст в файл с именем server.py.
Скопировать фрейм можно по ссылке.
Давайте разберемся, как работает API Telegram. Во-первых, когда кто-то посылает вашему боту сообщение, это сообщение отправляется на серверы Telegram. Затем Telegram отправляет это сообщение к тому, что мы определили как web-hook.
Скопировать фрейм можно по ссылке.
Функция process_update()и декоратор: когда кто-кто-нибудь будет отправлять в POST — домен http://127.0.0.1:5000/, мы будем извлекаем из него JSON — данные. Если это обычное текстовое сообщение, оно будет иметь ключ message в JSON. Проверяем, и если это нормальное сообщение, мы отвечаем с помощью process_message(update).
Функция process_message()создает полезную нагрузку, которую API Telegram ожидает как ответ на сообщение. Нужно указать текст ответа в data[«text»]и чат, на который мы отвечаем data[«chat_id»] .
Наконец, мы отправляем запрос на публикацию с этой полезной нагрузкой в Telegram API sendMessage методом.
Пришло время запускать сервер. Теперь в командной строке введите:
Это дает нам доступ к Flask. Теперь нужно запустить сервер. Введите в командной строке:
export FLASK_APP=server.py
flask run
У нас есть запущенный сервер.Если нет параметра по умолчанию, запустите ihttp://127.0.0.1:5000/.
Подробнее читайте в документации Flask и quick-start.
Но это выполняется локально, и API Telegram не может отправлять свои POST-запросы локальному URL-адресу. Следовательно, мы будем использовать ngrok, чтобы сделать локальный сервер доступным в интернет.
Используйте ngrok, чтобы сделать локальный сервер доступным в интернет.
Получите пакет для своей операционной системы по этой ссылке на веб-сайте ngrok. После того, как вы скачали и установили его, перейдите в каталог, в котором распакуйте файл, и запустите следующую команду в командной строке.
./ngrok http 5000
В командной строке вы увидите нечто похожее. Теперь любой сервер, на котором вы работаете на localhost: 5000, отображается по следующим URL-адресам.
Подсказка: скопируйте https-url, он вам скоро понадобится. Далее снова будем использовать API Telegram, чтобы установить наш web-hook.
Создайте файл с именем webhook.py со следующим содержимым:
Ссылка на фрейм.
Pro tip: Не забудьте заменить и your-https-url!
pprint позволит напечатать хорошо отформатированные данные JSON. Отправляем URL-адрес web-hook в виде запроса POST на setWebhook API Telegram. Теперь запускайте следующие строки в командной строке:
run the following lines in your command prompt:pipenv install pprint
python webhook.py
Вы увидите 200 и JSON с ‘ok».
Проверьте свой чатбот
Теперь, когда настройка сервера закончилась, перейдите к своему боту и поздоровайтесь. Если сделали корректно. Подойдите к своему боту в Telegram и поздоровайтесь! Если все настроено правильно, вы увидите ответ — I can hear you!
Если заметка была полезна, то обязательно дадим продолжение.
Источник: gruzdevv.ru
Хостинг для телеграм-бота: куда поселить своего бота, чтобы он работал 24/7, и не требовал много денег
Стартап-привет, я Дима Беговатов, нахожу интересные российские проекты и рассказываю о них широкой публике в телеграме, на своем YouTube-канале и на vc.ru. Даю только личное мнение, взгляд с позитивной стороны. Подписывайтесь и ставьте колокольчик Будем на связи!
Паша и его мессенджер на волне хайпа
Сегодня кажется, что только человек, просидевший в бункере последний год, не слышал о ChatGPT.
Формат переписки с «искусственным интеллектом» в виде чата, а еще блокировка россиян в данном прогрессивном инструменте, определенно сыграли на руку мессенджеру Павла Дурова. На данный момент в Telegram появляется по 100500 GPT-ботов в наносекунду. Все потому, что сделать их на самом деле очень проще, чем вы думаете.
Путь создания такого бота плюс-минус: регистрация на сайте Open AI для доступа к API ChatGPT, создания кода на Python, например, а далее встает вопрос для размещения вашего горяченького нейро-ботика на сервере для бесперебойной работы.
Вариантов на рынке масса и воспользоваться можно любым подходящим хостингом с виртуальными серверами, но я расскажу об одном, который несколько раз попадался мне на глаза здесь, на vc.ru – это #продуктдня PQ hosting.
Если для тестирования бота можно использовать какой-то бесплатный хостинг, то для стабильной работы лучше прикупить VPS/VDS сервер с круглосуточной поддержкой.
Что предлагает PQ.Hosting:
- VPS/VDS серверы в 30 странах, в том числе в России
- Hi-CPU VPS/VDS — серверы на Xeon E-2288G, Россия, ДЦ DataPro
- VPS Storage — серверы с увеличенным хранилищем, SAS до 6 ТБ
- Dedicated серверы — выделенные серверы пока только в Нидерландах
- VPN — готовый к работе vpn
PQ.Hosting размещает свое собственное оборудование в дата-центрах уровня от Tier 2 до Tier 4, большая часть — Tier 3. Поэтому отказоустойчивость на уровне 99,67% до 99,99%. Бэкапы автоматически не делаются, так что вам надо следить за этим самостоятельно.
Тарифы включают в себя разные по мощности железяки. Я посоветовался со знакомым разработчиком, и он сказал, что для стартового набора для GPT-бота, рассчитанного на 10К пользователей можно взять тариф Palladium за 14.27 евро в месяц. В целом, начать можно и с минимального тарифа Aluminium за 4.77 евро и произвести апгрейд до нужных параметров.
На техподдержку сервиса есть много жалоб здесь в комментариях на VC, но также есть и положительные отзывы. Думаю, что все-таки это дело везения – попасть не на того оператора в тот самый ответственный момент, когда у вас появилась экстренная ситуация. Но в любом случае сервису стоит обратить на это внимание, чтобы оправдывать свое название.
Оплатить сервис можно рублями, долларами, евро, криптой с любых карт любых банков.
Источник: vc.ru