Урок 1. Твой первый и уже рабочий бот
Что включает урок:
1. Из чего состоит Telegram бот
2. Принцип работы Telegram ботов
3. Подготовка клиентской и серверной части
4. Получение и настройка бесплатного сервера
5. Собственный веб-сервис на простом языке
6. Настройка приема и передачи сообщений
7. Интеграция нашего веб сервиса с Telegram
8. Тестируем работоспособность (хвалимся результатом)
+ Творческое домашнее задание
1.1 Из чего состоит Telegram Бот
И так приступим: из чего же состоит любой Telegram бот?
Telegram бот можно сравнивать с клиент-серверным приложением,
Т.е у него есть клиентская часть, в роли которой выступает само приложение Telegram.
Клиент – это то, с чем работает обычный пользователь. То, что он видит открывая любой чат в
Telegram: список сообщений, кнопки, форма для ввода текста, клавиатура и т.д
Это все клиент.
Серверная часть – это то, что с чем будем работать мы.
Это так называемый "мозг" телеграм-бота. Это то, что будет обрабатывать команды пользователя.
Для этого мы арендуем настоящий сервер, бесплатный в рамках обучения. Ведь как я и говорил,
все что нам потребуется для разработки – только наша голова...и браузер ;)
Сразу оговорюсь, серверную часть мы будем писать на языке php, и использовать базы
данных MySQL
1.2 Принцип работы telegram ботов
Очень грубо работу бота можно разделить на 4 этапа.
1. Пользователь пишет боту в телеграм любое сообщение/команду
2. Telegram принимает запрос
3. Дублирует этот запрос на наш сервер
Таким образом наш сервер получает все данные не напрямую от пользователя, а через сервера
Telegram. Мы будем получать вообще все данные: время сообщения, от кого оно пришло, к кому,
текст сообщения, вложения, юзернейм и имя.
4. Наш сервер, на котором будет размещен наш бот, получает запрос от Telegram и
обрабатывает данные (по описанной нами логике), затем формирует ответ, и отправляет
команду в telegram.
Он говорит ему что-то вроде эй, чувак, мне нужно отправить пользователю текст/картинку/
документ. Telegram в свою очередь принимает запрос от нашего сервера
и выполняет команду.
Пользователь получает ответ уже от telegram.
1.3 Подготовка клиентской и серверной части
Тема такая обширная, что мы разделим ее на 2 части
1. Настройка клиентской части
Создаем Бота в самом Telegram
Бот в Telegram создается при помощи другого
бота под названием BotFather. Можно найти
как @BotFather
Отправляем ему команду /newbot, выбираем
имя, которое будет отображаться в списке
контактов, и адрес. Например, «Бот для $100» с
адресом «bax100bot». Вам нужно придумать
свое.
Если адрес не занят, а имя введено правильно,
BotFather пришлет в ответ сообщение с
токеном — «ключом» для доступа к созданному
боту. Его нужно сохранить и никому не
показывать.
P.S. юзернейм бота должен заканчиваться на "bot"
1.3 Подготовка клиентской и серверной части
2. Настройка серверной части
Самая ответственная часть, тут нужна максимальная концентрация.
И так, нам нужен сервер, хотя нет, еще проще, мы арендуем хостинг. Хостинг - выделенное место на
сервере, к которому у нас всегда будет доступ. Сам сервер целиком нам не понадобится.
Важно учесть, что наш сервер (на котором будет хоститься наш бот), должен быть заграничным. Это очень важно, т.к. бот, размещенный на территории РФ работать не будет!
Но я нарыл кое-что годное из бесплатного)
Мы будем юзать хостинг 000webhost.com
Для регистрации на этом сайте воспользуемся временной почтой, нам ведь не нужно захламлять
личную почту рассылками, верно?) Временный почтовый ящик можем получить на https://temp-mail.org/ru/
Открываем ссылку https://temp-mail.org/ru/ уже сейчас и переходим дальше)
1.4 Получаем сервер бесплатно
2. Настройка серверной части
Выделил зеленым – наш временный электронный адрес (у вас будет свой)
Выделил красным – сюда будут приходить письма. В нашем случае нам придет письмо подтверждения
регистрации. Нужно будет открыть его и нажать кнопку подтверждения (Confirm)
Почтовый ящик получили, теперь получим сам хостинг
(на котором будет размещен наш бот)
Открываем https://www.000webhost.com/free-website-sign-up
Прописываем наш временный email,
придумываем пароль и придумываем имя сайта, должна
быть любая строка, я использовал bax100, возьми свой username в
телеграме как вариант (без собачки)
Далее открываем вкладку с нашей временной почтой из
предыдущего письма, туда должно придти письмо с ссылкой
активации, просто жмем на нее, это подтверждение регистрации.
После перехода по ссылке должно открыться окно как на приложенном скриншоте слева.
1) Кликаем на File Manager (это файловый менеджер, там мы сможем управлять нашими файлами на
сервере)
2) Страничка прогрузится и мы увидим красную кнопку как на скриншоте справа, жмем на нее, называется
"Upload files now"
1.5 Собственный веб-сервис на простом языке
3) В открывшейся вкладке жмем New File
4) Называем файлик bax_100.php (или по своему, главное латиницей и чтобы заканчивался на .php)
После он отобразится в списке файлов (чуть ниже чем .htaccess).
Как только видим его -> Кликаем на него и жмем карандашик (при наведении мыши подсветится как Edit)
Вставляем следующий текст:
<?php
Echo "Hi, @bax_100 =) ";
?>
5) Жмем сохранить)
1.6 Настройка приема и передачи сообщений
Затем жмем кнопку View (листочек) и наша ссылка откроется в новой вкладке
Например, моя: https://bax100.000webhostapp.com/bax_100.php
Отправь мне свою ссылку в бота, в котором получил этот урок :)
На открытой странице должно отображаться сообщение Hi, @bax_100 =)
Если отображается - прекрасно! Таким образом мы проверили что загруженный на сервер скрипт
работает и теперь мы можем разместить на нем нашего первого бота)
Для этого открываем файл снова в режиме редактирования (Edit), удаляем наш скрипт и вставляет текст из
Приложения (Второй файл в этом уроке)
Обратите внимание, что нам в этом файле необходимо заполнить 3 первые строки, а именно:
$TOKEN = '648222337:AAE14Tz0ENBh231sfqrd1vWE_gTkDTYt30';
$BOT_USERNAME = 'bax100bot';
$webhook = 'https://sellpd.000webhostapp.com/bax_100.php';
1 строка это ваш токен, полученный в BotFather (такая красная строка)
2 строка это юзернейм вашего бота, который мы отправляли в BoFather
3 Ссылка, что мы получили выше, та самая, которую вы мне прислали
Писать нужно также в в кавычках как в моем примере
1.7 Интеграция Telegram снашим сервером
Теперь просто откройте вашу ссылку еще раз, можно через кнопку View.
Конкретно у меня ссылка: https://sellpd.000webhostapp.com/bax_100.php
У вас будет своя, и при открытии вы должны увидеть примерно следующее:
{"ok":true,"result":true,"description":"Webhook was set»}
Все, теперь Telegram будет знать что наш бот (определит по токену) расположен на нашем сервере.
И если кто-то напишет нашему боту - Telegram продублирует это на наш сервер.
Такая конструкция называется вебхук (Webhook), просто запомним и пойдем дальше!
1.8 Тестируем работоспособность
Что теперь делать? Проверять результат, ведь мы уже написали первого
рабочего бота!
Ищем в телеграм бота по нашему юзернейму и пишем
ему любое сообщение)
Он должен ответить нам приветом.
P,S, Поздравляю с первым рабочим ботом!
На втором уроке мы разберем код этого бота и попробуем написать что-
то посложнее)
Домашнее задание
Куда же без домашнего задания?)
Теперь поиграйся в BotFather и попробуй установить аватар и описание для
своего бота) Интерфейс там на английском, но я думаю проблем не
возникнет, т.к. все слова в общем-то простые.
Но и это еще не все, просмотри Приложение 1 еще раз и попробуй понять
где мы настраиваем текст, который бот нам отправляет.
Попробуй изменить текст на любой произвольный и отправить вместо
имени пользователя - его идентификатор (подсказка - $uid)
P.S.
В дальнейшем, для работы с программным кодом мы будем пользоваться удобным онлайн инструментом,
и нам больше не нужно будет заходить в файловый менеджер хостинга.
И еще, помните что мы создавали файлик bax_100.php?
Так вот, можно создать сколько угодно разных файлов - и каждый настроить как отдельного бота. Таким
образом, на одном хостинге мы можем размещать неограниченное количество ботов. Главное чтобы ему
хватило ресурсов )
P.P.S.
Наверняка в процессе обучения у вас возникли вопросы и проблемы.
Мы будем прокачивать ваш навык разбираться в проблемах самостоятельно, ведь это и не проблемы вовсе,
а задачи. Поэтому, рекомендую действовать по плану:
1) Если возник какой-то организационный вопрос - не стесняйтесь писать мне
2) Если увидели незнакомое слово - не стесняйтесь писать в гугл. Признайтесь, часто ведь бывает когда ты
знаешь термин, а объяснить его не можешь. И чтобы объяснить какой-то термин вам, вполне вероятно что
мне также придется идти в гугл :)
3) Если возникли сложности с самим обучением, попробуйте еще раз, проанализируйте предыдущие
слайды, если и это не помогло - я вам помогу.
4) Если столкнулся с проблемой, но через пару часов мучений ты все же нашел решение -
Не стесняйся сообщить об этом. Если в нашем курсе есть слабые места - мы их исправим)