После регистрации Телеграм бота в BotFather, необходимо задуматься над тем, где будет размещено «сердце» бота — здесь нам понадобятся услуги хостинг-провайдера.
Основные требования к хостингу бота — это его доступность со стороны Telegram-серверов и SSL-сертификат для домена. Всё остальное уже второстепенно. В качестве основного языка разработки чат-ботов я использую PHP и способ взаимодействия с Telegram через Webhooks (вебхуки).
За несколько лет активной разработки ботов пришел к «своему» хостингу, который оказался лично для меня самым удобным и надежным — Beget. Именно этот хостинг рекомендую использовать и Вам, чтобы избежать дополнительных сложностей.
Теперь покажу весь процесс регистрации нового аккаунта на Beget для последующего размещения на нем скрипта бота.
Выбор тарифа и регистрация
1. Переходим на вкладку выбора тарифов Beget. Для одного средненагруженного бота вполне достаточно будет тарифа «Blog», несколько лучше — «Start» (на нем можно будет разместить больше ботов, используя разные домены). Нажимаем «Попробовать бесплатно». На момент написания статьи компания предоставляет всем новичкам 30 дней бесплатного хостинга.
За 10 минут — выгрузка (деплой) телеграм-бота на хостинг и его запуск.
2. Заполните обязательные поля формы: ФИО, мобильный телефон, email, а также придумайте логин для входа в хостинг-панель. Нажмите «Регистрация», после чего подтвердите с помощью СМС номер телефона.
3. В последнее время регистрация новых пользователей проходит в ручном режиме, поэтому необходимо будет дождаться сообщения на почту с подтверждением и данными для первичного входа в панель управления.
4. Когда проверка будет завершена, Вы получите на почту письмо с данными для входа в панель управления хостингом.
5. Авторизуемся по ссылке из письма в панели управления, выглядит она так.
Регистрация домена
Далее давайте вместе по шагам разберем процесс регистрации домена для Телеграм бота. Для размещения чат-бота понадобится домен второго уровня, стандартный бесплатный домен формата domain.beget.tech не подойдет, так как на него нельзя установить обязательный SSL-сертификат.
1. Переходим в раздел «Домены и поддомены».
2. Переходим на вкладку «Регистрация доменов».
3. В поле «Имя домена» вводим любое понравившееся свободное доменное имя, например tg-test-bot.ru и нажимаем Продолжить. Для размещения бота не важен домен, так как в классическом понимании пользователи бота не будут видеть домен, он будет использоваться только на уровне взаимодействия с серверами Telegram. Единственное исключение — это доступ к панели управления ботом, если она будет размещена на том же домене или личный кабинет пользователей.
4. Заполните все необходимые для регистрации домена персональные данные и подтвердите форму.
5. На следующей странице сверьте регистрационные данные и если всё верно, активируйте пункт «Защитить сайт бесплатным SSL-сертификатом…» (он является обязательным для работы с Telegram Bot API) и нажмите Зарегистрировать.
6. Далее Вы будете перенаправлены на страницу оплаты, где будет необходимо выбрать способ оплаты и совершить платеж. В случае успеха увидите сообщение об этом. Нажимаем «Продолжить».
7. После можно будет на вкладке Мои домены увидеть только что зарегистрированный домен. У меня появилось сразу два домена, так как на момент написания статьи проходит акция «Домен .store в подарок».
Поздравляю, мы только что подготовили хостинг и домен для размещения Telegram-бота. Если Вы заказываете бот у меня, то для его публикации мне, как раз, и понадобятся данные от хостинг-панели, базовые принципы работы с которой мы разобрали в этой статье.
Источник: isartem.ru
Как создать простого бота для Телеграм на PHP
Создадим простого бота для мессенджера Telegram с использованием PHP. Данная статья создана исключительно в поучительных целях и не претендует на полноту или правильность подхода. Весь код бота очень простой и может быть освоен начинающими PHP-разработчиками.
Предупреждаю сразу профессионалов и перфекционистов от программирования — вам здесь делать нечего . Никаких фреймворков и гитхабов! Все будет очень просто и примитивно, но работать будет. И это главное. Всем счастья
Шаг 1: подготовка
Что нам понадобится:
- Веб-сервер с работающим PHP 5.6 и выше — не локальный веб-сервер, а веб-сервер на хостинге, что важно! Так как сервисы Telegram должны будут видеть вашего бота по внешней URL-ссылке;
- Веб-сервер должен работать через https — то есть на веб-сервере должен быть установлен давно (больше суток назад) зарегистрированный SSL-сертификат. Достаточно будет бесплатного Let’s Encrypt SSL-сертификата;
- Доступ к файлам на этом сервере, конечно же — иначе как мы что-то сделаем;
- Установленная кодовая страница UTF-8 на сервере по-умолчанию или добавьте в файл .htacces в корне сайта строку AddDefaultCharset utf-8;
- Аккаунт в мессенджере Telegram;
Шаг 2. Регистрация вашего бота в Телеграм
Да, да. Бот еще даже не создан, но перед этим его уже нужно зарегистрировать, чтобы получить уникальный идентификатор, чтобы в дальнейшем обращаться к BOT API Telegram.
Шаг 3. Создаем код бота
Будем делать прямо в корне сервера (не самый верный подход, можно создать папку bot, а в ней уже файл verysimple_bot.php). Для этого на сервере создадим файл verysimple_bot.php в котором и будет весь код бота. Не забываем, что весь код в файле verysimple_bot.php должен быть в кодировке UTF-8.
Для редактирования файлов кода и заброске их на сервер удобно использовать FAR Manager — в нем есть и подсветка синтаксиса и FTP/SFTP клиент для копирования файла на сервер.
Делаем заготовку бота, который сможет выдавать список команд и информацию о нас:
Шаг 4. Делаем WebHook и конкретизируем код бота
-
Чтобы все заработало, нужно сособщить сервису Телеграм, что наш бот лежит там-то — используй его код для такого-то бота verysimple_bot.
Для этого нужно сформировать ссылку, которая называется WebHook и её мы и сообщим телеграму:
https://api.telegram.org/bot 1234567899:AAKJhkkjhkjhKhKhjkhkhk_kJhgkjhJhgjghjhG /setWebhook?url= https://www.mysite.ru/verysimple_bot.php
Не забываем где красное заменяем на свои данные!
Как сформируете эту ссылку — вставьте её в браузер и запустите!
- Пользователь в диалоге с ботом пишет запрос, например /help
- Telegram Bot API через WebHook, что мы установили, берет этот запрос и отправляет в код бота
- Мы в боте получаем его, анализируем, видим например, /help и через Telegram Bot API и
функцию message_to_telegram отправляем ответ — который появлется в диалоге как ответ бота.
Шаг 5. Добавим возможность делать заявки через бота
Заявкой будем считать сообщение или вопрос, которое можно будет отправить через нашего бота какому-то пользователю, назовем его менеджер компании. То есть нам нужно организовать такую цепочку:
- Пользователь запрашивает у бота «Оставить заявку», например набрав команду /order
- Бот входит в режим ожидания текста Заявки
- Если пользователь ввел текст и нажал Enter, только тогда отослать это сообщение заранее запрограммированному по менеджеру компании.
Получим идентификатор chat_id пользователя кому нужно отсылать заявки:
- Помните наш файл message.txt — вот он сейчас понадобится
- Присоединяемся к нашему боту тем пользователем, кому будем слать заявки (менеджер компании)
- Сразу открываем файл message.txt и смотрим блок: [chat]
$order_chat_id = ‘123456789’; //chat_id менеджера компании для заявок $bot_state = »; // состояние бота, по-умолчанию пустое
Сохраняем состояние бота для каждого пользователя
Далее, важный момент: у нас любой присоединившийся пользователь сможет сделать заявку, и чтобы бот понимал, что находится в режиме ввода заявки именно с этим пользователем, мы должны сохранять и считывать состояния бота для каждого пользователя отдельно!
Напишем две функции: set_bot_state($chat_id, $data) и get_bot_state($chat_id) — которые сохраняют текущее состояние бота и получают соответсвенно, для нужного пользователя. Сохранять будем в подпапке /users на сервере, которую создадим предварительно не забыв дать права на запись. Состояния будут хранится все в тех же текстовых файлах с именами chat_id пользователей и содержать последнюю команду:
// сохранить состояние бота для пользователя function set_bot_state ($chat_id, $data) < file_put_contents(__DIR__ . ‘/users/’.$chat_id.’.txt’, $data); >// получить текущее состояние бота для пользователя function get_bot_state ($chat_id) < if (file_exists(__DIR__ . ‘/users/’.$chat_id.’.txt’)) < $data = file_get_contents(__DIR__ . ‘/users/’.$chat_id.’.txt’); return $data; >else < return »; >>
Теперь дополним код бота, добавив запись и отлов состояния и отправив заявку менеджеру компании, если состояние отправки заявки.
Шаг 6. Регистрация команд бота
Вот и все — простой бот работает! Всем спасибо, если дочитали и что-то заработало.
Николай Комарков
Источник: www.novelsite.ru
Загрузка телеграм бота на сервер. Подробные шаги загрузки файла *.py на бесплатный сервер PythonAnywhere
Самым сложным для меня, как для новичка, была загрузка телеграм бота на сервер, чтобы он начал полноценно работать. В этой статье хочу рассказать подробные шаги моего самого первого опыта. Для теста я выбрала бесплатный сервер.
Существует множество бесплатных виртуальных серверов для тестирования ботов. Вот некоторые из них:
- PythonAnywhere — облачный хостинг для приложений Python. PythonAnywhere предоставляет бесплатный тарифный план, который позволяет развернуть одно приложение Python.
- Kamatera — есть тестовый период на месяц. Отличное решение для начального теста, а после пролноценной работы.
- Heroku — платформа для развертывания и хостинга приложений, которая предоставляет бесплатный тарифный план. Он позволяет развернуть приложение на серверах Heroku и бесплатно запустить до 5 приложений.
- Amazon Web Services (AWS) — облачная платформа, которая предоставляет бесплатный тарифный план, включая Amazon EC2 (виртуальные серверы), Amazon S3 (хранилище данных) и другие сервисы.
- Google Cloud Platform (GCP) — облачная платформа, которая также предоставляет бесплатный тарифный план, включая Google Compute Engine (виртуальные серверы) и другие сервисы.
- Microsoft Azure — облачная платформа, которая также предоставляет бесплатный тарифный план, включая виртуальные машины и другие сервисы.
PythonAnywhere
Для первого тестирования своего бота я выбрала PythonAnywhere. Регистрация интуитивно понятная.
Примечание: в бесплатном тарифе очень мало процесорных минут, так что этот тариф больше подходит для тестов, а не для полноценной работы. Для полноценной работа я рекомендую платные сервера https://zomro.com/
ШАГ 1. Начало работы. Установка виртуальной среды
1. Перейдите в Dashboard и запустите консоль. Для этого нажимаем New Console — $ Bash
2. Выполните следующую команду в консоли, чтобы установить инструмент virtualenv (инструмент для создания виртуальной среды):
Источник: stepfor.top