Как написать боту сообщение
Обновлено: 02.05.2024
Мы напишем простого бота-заготовку, которого можно использовать для написания полноценного приложения, добавив нужную вам функциональность.
Такого бота можно написать с использованием serverless-подхода в крупных облаках, например, с помощью AWS Lambda или Google Cloud Functions. Мы напишем функцию на Yandex Cloud Function, сделаем Object Storage, чтобы хранить файлы, и спрячем нашу serverless-архитектуру от пользователя с помощью сервиса Yandex API Gateway, который позволяет выступить фронтом для пользователя.
Прежде всего нужно зарегистрировать наше приложение в Telegram. Найдите в мессенджере главного бота BotFather и наберите команду /newbot. Для этого достаточно написать его имя user name и account name. В нашем случае account name — Serverless Hello Telegram Bot, username — ServerlessHelloTelegramBot. В результате вы получите token, запомните его, он потребуется на следующих этапах.
Студенты и преподаватели часто обращались ко мне с вопросами и я решил автоматизировать этот процесс, написав ботов для ВК и Телеграм.
Я использовал Python версии 3.6 просто потому, что он самый простой для меня. Кодил в PyCharm Community Edition. Весь код опубликован на GitHub. Удачи!
1. Предварительные приготовления для телеграм-бота
1.1 Получение токена от BotFather в телеграмме
Для этого, в поисковике телеги ищем BotFather
далее, делаем всё также, как на скриншотах:
После нажимаем на команду /newbot или же прописываем вручную.
Надо придумать уникальное имя для бота, придумываем и получаем соответствующий токен.
1.2 Переходим в любой редактор кода и создаем файл config.py
Перед созданием данного файла, нам нужно выбрать директорию, в которой будет реализован весь функционал бота. Если вы используете PyCharm Community/Professional Edition, то предлагаю просто создать новый проект, и писать там весь функционал бота.
Если Вы используете любой другой редактор, такой как Sublime Text 3, например, то Вам самостоятельно придётся создать директорию, создать виртуальное окружение, и работать из консоли со всеми предварительными тестами. Во избежание трудностей, предлагаю скачать продукт PyCharm Community Edition от компании JetBrains, с помощью данного продукта можно обойти действия, описанные в предыдущем абзаце, так как данный продукт сделает их самостоятельно, от Вас потребуется только указать путь до интерпретатора Python в конфигурациях PyCharm, с помощью которого и будет работать Ваш бот.
В данном файле (config.py) будет храниться только токен, который нам дал BotFather, поэтому пишем:
1.3 Cоздаём главный файл — bot.py
Делаем cледующие импорты и для соответствующих библиотек, в консоли прописываем закоментированные строчки:
Далее, нам необходимо использовать наш токен:
Этими действиям мы устанавливаем то, что мы будем накручивать функционал именно для того бота, для которого нам и дал токен BotFather.
2. Разворачиваем функционал
Начнём с того, что для того, чтобы пользователю запустить бота, нам необходимо прописать команды для старта они могут быть разными, например, /start или /go и вообще любыми, какие Вы сочтёте нужными.
Для обработки команд нам потребуется message_handler , с помощью которого и будет реализован весь функционал обработки команд для старта и завершения, если Вы сочтёте нужным добавить завершение. Как только придёт команда /go или /start , message_handler с соответствующими командами сравнит, совпадают ли строки и если совпадают, то обработает соответствующей функцией.
Итак, пройдёмся по строчкам:
В строках 20-21: открывается стикер по тому пути к директории, в которой я его сохранил, после чего отправляется.
Строки 22-28: создаем встроенную клавиатуру, добавляя туда три элемента.
Как вы можете заметить, метод send_message в строке 30, позволяет использовать HTML, для форматирования текста.
Строками ниже, добавим запуск самого бота, который будет хоститься, пока не случится ошибка или же, пока мы Сами его не закроем.
Сделаем первый запуск! Для этого, в PyCharm-е нажмём зеленую кнопку старт в правом верхнем углу или же, можно запустить из консоли командой: python bot.py
Результат первого запуска:
2.1 Обработка нажатия на кнопки и создание inline keyboard
Сделаем следующее и аналогично разберём по строчкам:
Строки 344 — 351 — создаём инлайновую клавиатуру InlineKeyboardMarkup и помещаем в эту клавиатуру 5 элементов, которые также можно будет обработать по установленной callback_data . Элементы данной клавиатуры будут расположены друг под другом, так как в строке 344, мы установили row_width = 1 , что обозначает самую широкую грань одной кнопки, поэтому они и будут расположены друг под другом.
Строки 353-355 — отправляют текст, вместе с нашей Inline Keyboard.
Итак, сделаем запуск:
2.2 Обработка InlineKeyboardButton
Как было сказано выше, каждый элемент InlineKeyboardButton имеет параметр callback_data , и именно по этим параметрам будет обрабатываться каждая кнопка. Для этого нам потребуется обработчик инлайновой клавиатуры callback_query_handler .
Итак, разберём построчно:
Строка 269 — объявляем обработчик, который будет обрабатывать каждую из нажатых кнопок с использованием лямбда-функции
Строки 279-283 — Делают аналогичное действие, что и в предыдущем условном блоке.
Также, в данных блоках можно определить аналогичную инлайновую клавиатуру, только тогда придётся создать ещё один обработчик callback_data , аналогичный обработчику callback_query_handler , показанный на скриншоте выше.
Так просто и обрабатываются inline keyboards.
3. Завершаем работу бота
Данная функция будет аналогичной функции обработки команд для старта бота, поэтому Вы сможете легко понять её функционал:
Здесь происходит следующее:
-
Отправляется прощальный стикер.
ВК БОТ
Перейдём к реализации бота Вконтакте, написанном на том же родном языке Python, его основное отличие от предыдущего в том, что он был написан с использованием ООП, а именно класса. Внешне, он выполняет ту же миссию. Сама библиотека для написания вк бота намного проще телеграмм бота, поэтому разобраться в ней самостоятельно не составит большого труда. Итак, начнём.
1. Предварительные подготовления
Установим следующие библиотеки по тем же технологиям:
▍1.1 Получение токена для сообщества Вконтакте.
Берем ключ и переходим в среду разработки и делаем следующее:
На этом, закончим подготавления.
2. Разворачиваем функционал
Первым делом создадим файл manage.py
Cоздадим прототип встроенной клавиатуры ( всё с помощью документации VkBotAPI ).
Затем переводим её в формат json, как требуется в документации:
Пример инлайн клавиатуры:
Не забываем все используемые клавиатуры переводить в формат json:
После создания всех прототипов, мы можем перейти к следующему шагу. ( к этому файлу мы позже вернёмся и доработаем обработку общения пользователя и нашего vk-бота )
▍2.1 Основной функционал (создаем файл vk_bot.py)
Последнее свойство класса — inputMes — это особый словарь, у которого значения ключей — это текст из файла answers.py, где я расположил текст в виде строк, поэтому, чтобы не загромождать код я и вынес основной текст в другой файл.
Итак, основной метод класса — это new_message , который принимает один параметр — message , который обрабатывается соответствующим условным блоком и возвращает какое -то значение обратно туда, откуда был вызван.
3. Возвращаемся в manage.py и дописываем функционал
Теперь в первых строках нам необходимо проимпортить файл vk_bot. А также нам потребуется библиотека random.
После того, как мы объявили longpoll, дописываем основной функционал.
Заключение
Надеюсь, что после прочтения данной статьи, Вы как минимум поняли основной принцип создания своего Telegram или Vk бота, а как максимум — легко сможете написать своего бота.
Как вы можете видеть, создать его функционал очень просто, особенно, если вы знаете основы языка Python.
Бот – это программа, которая выполняет определённые действия с целью упростить пользователям работу с мессенджером. Боты могут оповещать о погодных изменениях, автомобильных пробках, колебании курса валют. Они могут выполнять работу администратора канала или чата, быть посредниками между покупателем и продавцом, решать математические задачи или переводить текст на иностранный язык. Бот – очень важный инструмент, который можно создать с определённой целью.
Наиболее частые операции при работе с ботами
Ниже будут описаны несложные действия, которые наиболее часто приходится выполнять в работе с Телеграм-помощниками. Приложения Telegram для смартфонов, так же как и для ПК не имеют серьёзных отличий друг от друга. Поэтому рекомендации актуальны как для айфонов, так и для смартфонов на андроид, персональных компьютеров и других устройств, поддерживающих мессенджер.
Написать и добавить в контакты (подписаться)
Рисунок 1. Поиск и начало диалога с ботом.
Отписаться от бота
Рисунок 2. Как отписаться на смартфоне и ПК.
Сделать ссылку на бота
Рисунок 3. Адреса бота, которые являются ссылками на него.
Работа с BotFather, создателем и редактором ботов
Этот конструктор играет важную роль в жизни всех ботов Telegram. Он имеет все основные функции, среди которых:
- Создание;
- Редактирование;
- Настройки.
Редактирование
Рисунок 4. Как переименовать бота.
Что можно делать с ботами в Телеграм. Если вы знаете команды Edit bots, то вы сможете производить с ботами Telegram любые действия. Менять им имя и описание.
При помощи команд раздела Edit Bots можно отредактировать:
- Имя;
- Описание;
- Информацию о боте;
- Фотографию профиля;
- Изменить список команд;
- Удалить бота.
Настройки ботов Телеграм, используем редактор
Редактор ботов позволяет корректировать настройки помощника при помощи команд раздела Bot Settings. Telegram использует протоколы для социальных сетей, поэтому уникальный id необходим каждому пользователю, боту, чату или каналу для его корректной идентификации. Id, он же токен, генерируется одновременно с созданием бота.
Рисунок 5. Как узнать токен бота.
Что входит в раздел Bot Settings:
- Генерирование токена авторизации;
- Аннулирование токена для доступа к боту;
- Переключение встроенного режима;
- Переключение запроса встроенного местоположения;
- Редактирование встроенной обратной связи;
- Разрешение на присоединение к группам.
Боты для автопостинга
Бесплатные боты для автопостинга, как запланированных постов, так и репостов записей из соцсетей:
Рисунок 6. @ControllerBot, помогает создавать отложенные посты.
Боты для оплаты услуг, продавцы
При помощи нажатия на несколько кнопок, в Telegram можно оплатить услуги такси, заказать пиццу или купить пару туфель. Боты могут принимать платежи от пользователей мессенджера по всему миру.
Как заплатить
Для того чтобы разобраться в работе ботов для оплаты, можно начать диалог с @ShopBot. Это своего рода тренажёр, который на примере продаж несуществующих машин времени позволяет разобраться со всеми возможными функциями. На перевод денег он не отвечает, но в остальном функционирует как полноценный продавец.
Рисунок 7. Покупка машины времени через @ShopBot.
Как проверить оплату
Являясь открытой платформой, Telegram позволяет разработчикам ботов внедрять необходимый интерфейс и добавлять одну или несколько платёжных систем, работающих с мессенджером.
Возможные проблемы
Проблемы при работе с ботами встречаются часто, в основном это связано с прекращением их деятельности или переездом на другой адрес. Мессенджер работу ботов не контролирует, так как они являются продуктами, создаваемыми одними пользователями для других пользователей.
В этой статье мы реализуем простой, но крайне полезный проект на Python — бота для Telegram. Боты — это небольшие скрипты, которые могут взаимодействовать с API, чтобы получать сообщения от пользователя и отправлять информацию в разные чаты и каналы.
Python для новичков
- / newbot — создать нового бота;
- / mybots — редактировать ваших ботов;
- / setname — сменить имя бота;
- / setdescription — изменить описание бота;
- / setabouttext — изменить информацию о боте;
- / setuserpic — изменить фото аватарки бота;
- / setcommands — изменить список команд бота;
- / deletebot — удалить бота.
Отправим бате‑боту команду / newbot , чтобы создать нового бота. В ответ он попросит ввести имя будущего бота, его можно писать на русском. После ввода имени нужно будет отправить адрес бота, причем он должен заканчиваться на слово bot. Например, xakepbot или xakep_bot . Если адрес будет уже кем‑то занят, BotFather начнет извиняться и просить придумать что‑нибудь другое.
Для взаимодействия с Telegram API есть несколько готовых модулей. Самый простой из них — Telebot. Чтобы установить его, набери
В Linux, возможно, понадобится написать pip3 вместо pip , чтобы указать, что мы хотим работать с третьей версией Python.
Эхо-бот
Для начала реализуем так называемого эхо‑бота. Он будет получать от пользователя текстовое сообщение и возвращать его.
Читайте также: