Автор(ы): Андрей Кудлай
Популярность Telegram продолжает очень быстро набирать обороты. В России аудитория превышает миллионов человек. На начало 2021 года количество ежемесячных активных пользователей мессенджера превысило 500 млн. человек. По данным аналитического центра Sensor Tower (на момент написания данных строк), Telegram стал лидером скачиваемых мобильных приложений неигрового сегмента, сместив на второе место даже TikTok.
Одной из особенностей Telegram является платформа для создания ботов. Боты – это аккаунты, которые управляются программно, а не людьми. Они обладают функцией искусственного интеллекта. Сервис Telegram предлагает полноценный API для создания ботов в Telegram. Причём делать это можно на любом языке, поддерживающем HTTP-запросы.
Из первой части курса вы узнаете о теории создания ботов для Telegram. Взаимодействие с ботом происходит благодаря десяткам различных методов из API Telegram. Это методы, которые позволяют отправить текстовое сообщение, изображение, аудио, видео и т.п.
В качестве закрепления изучаемых методов на практике параллельно будет показано создание эхо-бота – простейшего бота для Telegram.
Большое вниманием в первой части курса уделено двум возможным методами получения сообщений для бота. Также несколько отдельных уроков будут посвящены двум типам клавиатур, которые делают бота более простым и понятным для пользователей.
В данной части 22 урока общей продолжительностью более 5 часов видео.
Содержание первой части:
В первом уроке курса рассмотрены организационные моменты, структура и содержание курса. Из урока вы узнаете об основных источниках документации, а также о том, что такое Telegram-боты и для чего они нужны.
Создание нового бота начинается с его регистрации у специального бота Telegram под именем BotFather. Этот бот позволяет не только регистрировать новых ботов, но также и управлять уже созданными ботами, предлагая для этого целый ряд команд.
Программное взаимодействие с ботом осуществляется через API, который предлагает сервис Telegram. Данный API имеет десятки самых разных методов для тех или иных операций. В предлагаемом уроке будет показано, как использовать методы API Telegram.
Telegram предлагает два принципиально разных метода получения сообщений для бота. Первый метод предполагает, что мы сами делаем запрос на предмет получения новых сообщений. Второй метод предполагает, что Telegram будет сам отправлять нашей программе новые сообщения для бота. Каждый из методов имеет свои плюсы и минусы, о которых вы и узнаете из данного урока.
В предлагаемом уроке вы познакомитесь с одним из ключевых методов API Telegram – методом sendMessage. Именно его вы чаще всего и будете использовать, поскольку с помощью данного метода можно отправить текстовое сообщение в чат бота. В уроке будут показаны ключевые параметры при работе с методом sendMessage.
Рассмотрев один из ключевых методов API Telegram – метод sendMessage – можно переходить к созданию простейшего бота, который часто используется в качестве примера – речь идет об Эхо-боте. Как понятно из названия, такой бот просто повторяет все сообщения, которые он получает от пользователя. В данном уроке будет показано создание такого простейшего бота.
В этом уроке будут показаны несколько способов запуска бота из консоли. Поскольку пока что рассматривается первый способ получения сообщений для бота, т.е. наш скрипт должен периодически запрашивать новые сообщения с сервера Telegram, соответственно, скрипт должен быть запущен и это можно сделать из консоли.
Для удобства работы с ботом необходима функция, которая будет отправлять HTTP-запросы к API Telegram. В этом уроке будет написана такая функция.
Для тех, кто любит писать код в стиле ООП даже для небольших задач, одной из которых является написание Telegram бота, в данном уроке будет написан класс TelegramBot с набором методов, позволяющих работать с API Telegram.
Одним из ключевых методов API Telegram является метод sendMessage, позволяющий отправлять текстовые сообщения. Однако, часто необходимо отправлять и другие типы сообщений, например, изображения. Это позволяет сделать метод sendPhoto. В данном уроке будут рассмотрены основные параметры метода sendPhoto.
До этого урока все новые сообщения для бота мы запрашивали самостоятельно у сервера Telegram. Однако, такой способ не является оптимальным и больше подойдет для учебного процесса или тестирования бота. Другим способом является установка вебхука для бота. В этом случае Telegram сам будет отправлять новые сообщения на указанный адрес, а нам останется лишь принять их и обработать. Для того, чтобы установить такой вебхук для бота, используется метод setWebhook, который и будет использован в видео.
После установки вебхука для бота Telegram сам будет отправлять на указанный адрес новые сообщения. Соответственно, по этому адресу и должен находиться скрипт бота, который будет принимать сообщения и обрабатывать их. В предлагаемом видео будет показан перенос приложения на хостинг.
Хоть написание ботов для Telegram в плане кода и не представляет особой сложности, но все же разработчик может еще немного упростить себе работу, воспользовавшись дополнительными библиотеками для работы с API Telegram. В документации Telegram рекомендуется десятки библиотек для различных языков программирования. В данном уроке будет показана установка и знакомство с библиотекой Telegram Bot API PHP SDK.
В текущем видео мы вернемся к основному боту – BotFather, который помогает создавать и управлять ботами в Telegram. С помощью его команд мы сможем добавить команды для нашего бота, а также настроить его, задав описание, аватар и другую дополнительную информацию.
Из данного урока вы узнаете об универсальном методе отправки файлов – методе sendDocument. Данный метод позволяет отправить файлы различных типов: фото, видео, файлы документов и т.п.
Telegram, как мессенджер, достаточно интересен различными наборами стикеров, которые можно устанавливать и использовать в общении. Бот также может отправлять стикеры в чат. Для этого можно использовать специальный метод sendSticker, о котором вы и узнаете из данного видео.
Одним из полезных методов для реальных ботов может быть отправка каких-либо координат или локации. Отправить локацию пользователя боту можно через специальный метод – sendLocation, который будет рассмотрен в данном уроке.
Telegram предлагает два типа клавиатур для ботов. С одним из этих типов вы познакомитесь в следующей паре уроков – это простая клавиатура. Благодаря клавиатуре, пользователю проще понять, как именно взаимодействовать с ботом и ему не нужно набирать текст, а достаточно просто кликнуть по нужной кнопке, чтобы отправить необходимый текст боту.
Вторым типом клавиатуры в Telegram является инлайн (встроенная) клавиатура. Данная клавиатура доступна непосредственно в окне чата под конкретным сообщением и позволяет программировать определенные функции для той или иной кнопки клавиатуры. Последние три урока первой части курса посвящены работе со встроенной клавиатурой и ее функциями.
В качестве практической работы в курсе будет предложено создание четырех ботов: две версии бота-переводчика, бот-синоптик и бот-бухгалтер (чтобы увидеть создаваемые боты – смотрите авторский видеообзор выше по тексту – начиная с отметки 6:23).
Как следует из названия, бот-переводчик поможет осуществить перевод с английского на русский язык и обратно. Мы создадим две принципиально разные версии переводчика.
Бот-синоптик подскажет погоду в любой точке мира. При этом запросить погоду можно как по названию города, так и по координатам, передав боту локацию.
Бот-бухгалтер поможет вести личную бухгалтерию, фиксируя доходы и расходы, а также предоставляя по запросу отчет за текущий день или месяц. При этом данный бот будет приватным, то есть доступ к нему будет ограничен только для вашей учетной записи.
Вторая часть курса содержит 25 уроков общей продолжительностью более 4 часов видео.
Содержание второй части:
В первом уроке практической части курса мы зарегистрируем бота-переводчика. Это будет бот первой версии, который в своей работе будет использовать базу данных для того, чтобы фиксировать предпочитаемый язык перевода.
Поскольку для работы создаваемого бота-переводчика требуется база данных, соответственно, в уроке будет показано создание такой БД и требуемой таблицы в БД. Также в уроке мы настроим подключение к созданной БД.
В предлагаемом уроке вы сможете закрепить навыки работы с инлайновой (встроенной) клавиатурой. В начале общения с ботом пользователю будут показаны кнопки встроенной клавиатуры, через которые можно выбрать предпочитаемый язык для перевода.
В данном уроке будет показана обработка выбора пользователем языка. Выбрав предпочитаемый язык для перевода, бот сохранит этот выбор в БД для конкретного пользователя и в дальнейшем будет переводить именно с выбранного языка.
После обработки предпочитаемого языка бот готов принимать слова или фразы для перевода с этого языка. В данном уроке будет реализовано получение перевода и отправка его пользователю в чат бота.
Поскольку созданный бот-переводчик умеет только переводить, соответственно, для корректной работы он ожидает только текстовые сообщения. Однако, пользователь может отправить и другие типы сообщений, например, картинку. В этом уроке будет добавлена соответствующая проверка с тем, чтобы обработать все сообщения, кроме текстовых, и сообщить пользователю, что бот работает только с текстом.
Вторым ботом в рамках практической части курса будет также бот-переводчик. В отличие от первой версии переводчика, данный бот не будет использовать базу данных для хранения предпочитаемого языка пользователя, но при этом вторая версия бота будет более удобной для пользователя. В отличие от первой версии, данный бот будет автоматически определять язык перевода и переводить слова или фразы с английского на русский и наоборот. В текущем уроке мы зарегистрируем и настроим нового бота.
В предлагаемом уроке будет реализована обработка команды start. При вводе данной команды пользователем, бот будет отправлять краткую инструкцию по использованию возможностей бота-переводчика.
Поскольку по задумке бот-переводчик должен переводить с английского на русский и наоборот, необходимо продумать и реализовать алгоритм определения языка отправленного слова или фразы, чтобы перевести это на противоположный язык. Данная задача будет реализована в предлагаемом видео.
Очередным ботом, который будет написан в рамках практической части курса, будет бот-синоптик. Данный бот сможет подсказать пользователю погоду в запрошенной местности. При этом пользователь может запросить погоду как по названию города, отправив название города в чат, так и по координатам местности, отправив локацию в чат. В текущем уроке будет зарегистрирован бот-синоптик.
В предлагаемом уроке будет реализована обработка команды start. При вводе данной команды пользователем, бот будет отправлять краткую инструкцию по использованию возможностей бота-синоптика.
Для получения погоды бот будет использовать API сервиса OpenWeather. Используя данный API возможно получить погоду несколькими способами, в частности, по названию города или по координатам местности. В этом уроке мы познакомимся с возможностями API OpenWeather.
В данном уроке будут показаны примеры возможных запросов к API сервиса OpenWeather для получения данных о погоде, а также проанализированы данные полученного ответа.
В предлагаемом видео будет реализован вариант получения погоды по названию города. В результате пользователь отправляет боту название города, а бот возвращает информацию о погоде в указанном городе.
В качестве результата на запрос погоды бот выдает пользователю текстовую информацию. В уроке будет показан вариант с добавлением изображения в виде специальной иконки, которая будет соответствовать состоянию погоды.
Из текущего урока вы узнаете, как получить погоду по координатам, т.е. по отправленной боту локации. Этот вариант может быть более удобен, нежели ввод названия города текстом, но данный вариант будет работать только в мобильной версии Telegram.
Последним ботом, который будет написан в практической части курса, будет бот-бухгалтер. Это будет приватный бот, т.е. бот для личного пользования, который сможет вести учет доходов и расходов, показывая статистику поступлений и трат за текущий день и текущий месяц.
Бот-бухгалтер будет более сложным, нежели прочее боты, поэтому важно сделать его как можно более понятным для пользователя. В первую очередь это помогут сделать команды, которые можно определить для бота. Первой такой командой будет команда start, которая отправляется при начале чата с ботом. При получении данной команды бот будет показывать краткую инструкцию по работе, а также будет показывать клавиатуру, через которую можно управлять возможностями бота.
Второй командой, которая поможет и подскажет пользователю порядок работы с ботом, будет команда help. При получении этой команды бот будет выдавать пользователю полноценную справку по работе.
Для того чтобы вести учет доходов и расходов, бот должен оперировать категориями, к которым можно отнести поступление или трату. Соответственно, пользователь также может добавить доход или расход только в существующую категорию. Список категорий будет храниться в базе данных, а бот будет показывать эти категории пользователю при клике соответствующей кнопки на клавиатуре.
В предлагаемом видео будет реализован функционал добавления доходов и расходов. Как и категории, эти данные будут храниться в базе данных и при получении от пользователя будет добавлять соответствующую запись в таблицу финансов.
Данное видео покажет, как получить итоги за текущий день. В качестве итогов бот покажет сальдо, т.е. разницу между поступлениями и тратами за текущий день.
Еще одним функционалом, который будет реализован для бота, будет возможность показать все расходы и все доходы за текущий день.
Итоговым функционалом бота будет подсчет всех доходов и всех расходов за текущий месяц. Обе эти функции будут реализованы и бот сможет показать итоговый список поступлений и расходов за месяц.
По задумке бот-бухгалтер должен быть приватным, т.е. доступ к нему может иметь только один пользователь или же ограниченный круг пользователей. Из данного видео вы узнаете, как ограничить доступ к боту.
Бонус №1. Премиум-Курс Программирование на PHP
Автор: Андрей Кудлай
В первую очередь курс будет полезен тем, кто вообще не знаком с PHP, но желает изучить язык программирования, на котором написано более 79,2% всех сайтов в интернете (данные на апрель 2021 года).
Поэтому без знания основ РНР даже и не стоит думать всерьез о карьере веб-разработчика.
В этом фундаментальном курсе простым и понятным языком объясняется теория и практика работы с PHP.
В курсе рассматривается язык PHP с нуля, с самых-самых основ, с синтаксиса языка, понятия переменной, функции и прочее.
Бонус №2. Премиум-Курс Объектно-ориентированное программирование на PHP
Автор: Андрей Кудлай
В уроках курса простым языком, понятным даже новичкам, рассматриваются основы объектно-ориентированного программирования (ООП).
Этих знаний должно быть достаточно для написания telegram-ботов, а также большинства приложений на РНР в объектном стиле.
Рассматривается наследование классов для создания удобной и гибкой логики веб-приложения, а также создание разветвленных иерархий классов. Объяснено переопределение методов и создание абстрактных классов.
Объясняется смысл использования интерфейсов, тема автозагрузки классов. Разбирается использование пакетного менеджера Composer.
Бонус №3. Премиум-Курс MySQL
Автор: Андрей Кудлай
Данный курс посвящен изучению языка запросов SQL и работе с сервером управления базами данных MySQL.
Курс рассчитан как на новичков, так и на специалистов, уже имеющих опыт работы с SQL.
Здесь вы найдете освещение не только теоретических вопросов, но и множество практических задач.
Вот лишь некоторые из вопросов, освещение которых вы найдете в курсе по серверу MySQL и языку запросов SQL: