Как создать бота на питоне
Перейти к содержимому

Как создать бота на питоне

  • автор:

Как написать Telegram-бота на Python: делаем ремайндер

Создаём простого бота-ремайндера в Telegram на языке Python, единственная задача которого — напоминать пользователю о важных делах.

В этой иструкции разберем процесс создания простого бота-ремайндера, единственная задача которого — напоминать пользователю о важных делах. Это базовая конструкция, которую можно усложнять и менять под свои потребности.

Инструкция подойдет для новичков, которые знают Python на базовом уровне, пробовали писать код и установили на компьютер редактор кода.

Первый этап: подготовка проекта и развертывание окружения

Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой иструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.

После этого BotFather пришлет сообщение с токеном и ссылкой на бот:

Токен нужно хранить в безопасном месте — он дает контроль над ботом. и, как следствие, позволяет получить доступ к данным пользователей.

На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.

Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv создадим папку с окружением .venv .

Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate , где source — команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.

Практика создания нового окружения под каждый проект позволяет повыстить безопасности и стабильность проекта — в окружении вы можете использовать только те библиотеки и их версии, которые требуются в проекте. Если в проекте появятся дополнительные функции, все изменения будут храниться в этом окружении. При этом оно будет изолировано от других окружений и проектов — это повысит безопасность проекта.

Второй этап: подключаем библиотеки

Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging и time , которые отвечают за определение времени и логирование сообщений.

import time import logging 

Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram , а в редакторе кода пишем следующее:

from aiogram import Bot, Dispatcher, executor, types 

Из этой библиотеки нам нужны только отдельные модули и классы — все ее возможности для создания базовой версии бота не пригодятся. Поэтому вместо одиночного import использована команда from <> import <> .

Когда библиотеки импортированы, создадим переменные с токеном бота и сообщением, которое он будет отправлять пользователю. Вы можете заменить это сообщение на любое другое, которое вам необходимо. Это статические переменные, поэтому их имена написаны капслоком:

TOKEN = "здесьбудетваштокенот от BotFather" MSG = "Программировал ли ты сегодня, <>?" 

Токены, ключи и прочие данные для настройки проекта лучше загружать более безопасным способом (например, создавать переменные окружения или файлы конфигурации). Но в данном случае сделаем все в одном файле для наглядности, а примеры более безопасной работы с такими переменными разберем в следующих постах.

Теперь создадим экземпляр класса Bot , передав ему в качестве аргумента наш токен, и экземпляр класса Dispatcher (dp), который в качестве аргумента получит bot . В результате получаем связку объекта класса bot с ключем, который привязан к боту, и диспетчера, который привязан к этому боту:

bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) 

Следующим шагом добавим конструкцию под названием декоратор ( massage_handler ) — она помогает получить из диспетчера нужный функционал. В качестве аргумента прописываем команды, которые обрабатывает декоратор — в данном случае это команда /start , которая запускает бот.

@dp.message_handler(commands=['start']) 

Под декоратором прописываем функцию, которая будет обрабатывать команду /start и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def добавим ключевое слово async :

async def start_handler(message: types.Message): 

Функция приветствует пользователя и обрабатывает сообщение, которое он отправляет в ответ. Из сообщения можно получить информацию о пользователе, который его прислал, время отправки и его ID.

Создаем переменную и сохраняем в ней user id :

user_id = message.from_user.id 

Затем получаем из сообщения короткое и полное имя пользователя:

user_name = message.from_user.first_name user_full_name = message.from_user.full_name 

Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time , чтобы определить время, когда писал пользователь:

logging.info(f'  ') 

Здесь отойдем в сторону и проверим корректность работы модуля time . Сделать это можно в терминале: для этого напишем import time , а затем — time.asctime

Вернемся к коду. Поскольку функция, которую мы используем, асинхронна, вместо обычного для функций return используем await :

await message.reply(f"Привет, !") 

Ответить пользователю в боте можно несколькими способами — в данном случае используем reply. Выше в переменной MSG мы задали стандартное сообщение: «Программировал ли ты сегодня, <>?». Зададим частоту напоминаний: семь раз каждые семь суток (60х60х24 — количество секунд в одних сутках) с момента отправки команды /start боту от пользователя:

for i in range(7): await asyncio.sleep(60*60*24) 

Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:

await bot.send_message(user_id, MSG.format(user_name)) 

Третий этап: финал

Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__ строке «__main__» . Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:

if __name__ == '__main__': 

Теперь делаем нашего бота доступным в сети:

executor.start_polling(dp) 

Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot.py .

Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.

Так выглядит его код целиком:

import time import logging import asyncio from aiogram import Bot, Dispatcher, executor, types TOKEN = "здесьбудетваштокенот@BotFather" MSG = "Программировал ли ты сегодня, <>?" logging.basicConfig(level=logging.INFO) bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) @dp.message_handler(commands=["start"]) async def start_handler(message: types.Message): user_id = message.from_user.id user_name = message.from_user.first_name user_full_name = message.from_user.full_name logging.info(f'  ') await message.reply(f"Привет, !") for i in range(7): await asyncio.sleep(60*60*24) await bot.send_message(user_id, MSG.format(user_name)) if __name__ == "__main__": executor.start_polling(dp) 

В следующий раз подробно расскажем, как написать подобный бот на языке программирования JavaScript. Подписывайтесь, чтобы не пропустить инструкцию.

Следите за новыми постами по любимым темам

Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.

За границей Hello World: полный гайд по разработке Telegram ботов с помощью Python и Aiogram 3. Часть 1

Захотев однажды научиться разрабатывать ботов для Telegram на языке программирования Python, я просто зашёл в Яндекс и вбил что-то вроде «telegram бот на python для новичков» и нашёл казалось бы огромное множество гайдов и туториалов. Однако копнув немного глубже стало понятно, что большая часть гайдов заканчивается на прикреплении клавиатур к сообщениям, или ещё хуже, на написании эхо-бота.

Пришлось копаться в документации, шерстить форумы и учиться на примерах кода с GitHub. Этот гайд создан как полное руководство по разработке полноценного Telegram бота для работы с нейросетями, такими как ChatGPT и Dall-e, начиная установкой IDE и получением токена и заканчивая подключением оплаты, базы данных и загрузки бота на сервер.

Я считаю что гайд будет полезен прежде всего тем, кто уже пробовал разобраться в теме и имеет базовые знания. Чтобы гайд был полезным необходимо иметь базовые знания в Python, всё остальное вы можете изучить в процессе. Продвинутым разработчикам ботов большая часть будет знакома и вряд ли принесёт пользу, однако есть шанс, что и вы найдёте для себя что-то полезное. Жду любую конструктивную критику как по коду и его стилю, так и по изложению.

Что мы получим в итоге?

В конце гайда у нас получится полностью функционирующий бот, с админкой, оплатой, базой данных, реферальной программой и подключенным API OpenAI. По мере выхода статей код будет появляться в репозитории на GitHub.

Используемые технологии

Будут использованы следующие технологии:

  • VS Code (или любой другой удобный редактор или IDE)
  • Python
  • Aiogram 3
  • PostgreSQL
  • API OpenAI

Подготовка окружения

Разработка любой программы начинается с подготовки среды, так что приступим. Для начала устанавливаем VS Code или любую другую вашу любимую IDE или редактор кода. Скачиваем установщик с сайта, запускаем, устанавливаем. По умолчанию среда уже готова к работе, но рекомендую установить дополнительные расширения для Python, а также по желанию темы и другие плюшки.

Конечно же надо установить сам Python, но раз вы читаете это, то уверен, что либо уже сделали это, либо разберётесь сами. Скажу лишь, что использую версию 3.10, однако код также должен работать на версиях Python 3.8 и выше.

В VS Code переходим на вкладку Git, скачиваем и устанавливаем Git. Далее инициализируйте репозиторий и желательно опубликуйте его на GitHub (для удобства дальнейшей работы), это можно сделать прямо из VS Code.

Создание и публикация репозитория на GitHub

После этого создадим виртуальное окружение, чтобы не засорять пакетами глобальyую среду. Подробнее про виртуальные окружения и преимущества их использования можете почитать здесь. Открываем палитру команд (Ctrl-Shift-P на Windows) и запускаем команду Python: Create Environment .

Далее выбираем venv и интерпретатор Python. Чтобы активировать виртуальное окружение, в терминале выполните команду .\.venv\Scripts\activate . Также выберите интерпретатор Python по умолчанию.

Выбранный интерпретатор должен находиться в папке .venv

Выбор интерпретатора по умолчанию

Теперь пришло время установить все используемые библиотеки. Их список вы можете найти у меня на github. Там же я буду выкладывать весь код по мере выхода статей. Если вы скачали файл, то установить библиотеки можно командой:

pip install -r requirements.txt

Обратите внимание что мы будем использовать aiogram версии 3, который ещё находится в бета-тестировании, 3 версия НЕ совместима с предыдущими, так что не забывайте об этом.

Следующий шаг — установка PostgreSQL. Сама установка не является чем-то сложным, поэтому не будем её подробно рассматривать. Для более удобной работы с базами данных можете установить графический клиент, такой как pgAdmin (идущий в комплекте с PostgreSQL), DBeaver или Navicat, самый удобный и используемый мною каждый день в работе (имеет бесплатную пробную версию).

На этом настройка окружения завершена, можно приступать к созданию структуры бота.

Создание структуры

Наш бот будет разделён на несколько логических частей — файлов. Можно писать весь код в одном файле — он будет также работать, однако отладка и поиск нужной функции или класса станет сущим адом.

Файловая структура нашего бота:

  • main.py — точка входа, код запуска бота и инициализации всех остальных модулей
  • config.py — файл со всеми конфигурационными параметрами, такими как токен бота и данные подключения к БД. Хранение настроек в Python-файле является не самой лучшей практикой, однако если настройки меняются очень редко, то такой способ является самым простым. Можно также хранить настройки в переменных окружения или специальных файлах (ini, json) и через config.py лишь предоставлять абстракцию данных, однако в этом боте будет использован самый простой способ
  • db.py — функции подключения и работы с базой данных. Данный файл будет являться абстракцией базы данных от основного кода
  • text.py — все тексты, используемые ботом. В этом файле будут лежать все приветствия, сообщения об ошибках и другие текстовые данные для бота. Хранение текста в Python-файле также является не лучшей практикой, так как изменить тексты можно только через код, однако тексты меняются не так часто (чаще всего никогда), поэтому снова пойдём самым простым путём
  • kb.py — все клавиатуры, используемые ботов. В этом файле будут находиться абсолютно все клавиатуры, как статические, так и динамически генерируемые через функции
  • middlewares.py — название файла говорит само за себя. В этом файле будут лежать все используемые мидлвари (их будет всего две)
  • states.py — будет хранить вспомогательные классы для FSM (машины состояний), а также фабрики Callback Data для кнопок Inline клавиатур
  • utils.py — различные функции. В этом файле будут лежать функции для рассылки, генерации текста и изображений через API и другие
  • handlers.py — основной файл, в котором будет содержать почти весь код бота. Будет состоять из функций-обработчиков с декораторами (фильтрами)
  • admin.py — обработчики событий, клавиатуры, классы и весь остальной код админки бота. Опять же если придерживаться лучших практик, стоило бы вынести это в отдельную папку, в которой уже создать модули клавиатур, текстов, хэндлеров (обработчиков) и всего остального. Наша админка будет иметь базовый функционал, поэтому реализуем всё в одном файле

В итоге ваша папка должна выглядеть так:

Получение токена

На эту тему написано настолько много материала, что крайне не хочется дублировать его, поэтому дам краткую инструкцию по получению токена:

  1. Запустите бота BotFather
  2. Создайте бота командой /newbot
  3. Следуя указаниям бота введите все данные, типа названия
  4. Скопируйте токен и вставьте его в переменную BOT_TOKEN в файле config.py

Можно также произвести настройку бота в BotFather, к примеру настроить описание, аватарку и другие параметры.

Пишем первый код!

Теперь, когда все подготовительные действия сделаны, можем приступить к написанию кода. Мы не будем писать эхо-бота, а сразу перейдём к чему-то более полезному — бот, отправляющий пользователю его ID.

В файле main.py пишем следующий код:

import asyncio import logging from aiogram import Bot, Dispatcher from aiogram.enums.parse_mode import ParseMode from aiogram.fsm.storage.memory import MemoryStorage import config from handlers import router async def main(): bot = Bot(token=config.BOT_TOKEN, parse_mode=ParseMode.HTML) dp = Dispatcher(storage=MemoryStorage()) dp.include_router(router) await bot.delete_webhook(drop_pending_updates=True) await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types()) if __name__ == "__main__": logging.basicConfig(level=logging.INFO) asyncio.run(main())

Сначала мы импортируем все нужные нам классы и модули:

  • asyncio — для асинхронного запуска бота
  • logging — для настройки логгирования, которое поможет в отладке
  • aiogram — основной модуль библиотеки aiogram, из которого мы импортируем классы Bot и Dispatcher
  • aiogram.enums.parse_mode — содержит настройки разметки сообщений (HTML, Markdown)
  • aiogram.fsm.storage.memory — хранилища данных для состояний пользователей
  • config — настройки бота, пока что только токен
  • handlers — пока пустой, но скоро мы напишем в нём функционал нашего бота

Затем мы объявляем функцию main() , в которой будет запускаться бот. Далее мы создаём объект бота с нашим токеном. Обратите внимание на параметр parse_mode , он отвечает за используемую по умолчанию разметку сообщений. Мы используем HTML, чтобы избежать проблем с экранированием символов. Затем мы создаём объект диспетчера, параметр storage=MemoryStorage() говорит о том, что все данные бота, которые мы не сохраняем в БД (к примеру состояния), будут стёрты при перезапуске. Этот вариант является оптимальным, так как хранение состояний диспетчера требуется редко.

Строка dp.include_router(router) подключает к нашему диспетчеру все обработчики, которые используют router, их вы увидите в следующем файле. Строка await bot.delete_webhook(drop_pending_updates=True) удаляет все обновления, которые произошли после последнего завершения работы бота. Это нужно, чтобы бот обрабатывал только те сообщения, которые пришли ему непосредственно во время его работы, а не за всё время. следующая строка запускает бота. Однако если сейчас попытаться запустить файл, бот не запустится, а выдаст исключение, так как файл handlers.py пустой. Давайте исправим это.

from aiogram import Router router = Router()

Давайте запустим и проверим, как работает наш бот. После запуска вы должны увидеть следующий вывод в лог:

Логи при успешном запуске бота

Это означает, что наш бот запущен и слушает обновления, однако пока что он ничего не делает, так как мы не добавили ни одного обработчика. Давайте исправим это, написав в файле handlers.py следующий код:

from aiogram import types, F, Router from aiogram.types import Message from aiogram.filters import Command router = Router() @router.message(Command("start")) async def start_handler(msg: Message): await msg.answer("Привет! Я помогу тебе узнать твой ID, просто отправь мне любое сообщение") @router.message() async def message_handler(msg: Message): await msg.answer(f"Твой ID: ")

Сначала мы импортируем все необходимое из aiogram. После этого создаём роутер для дальнешей привязки к нему обработчиков. Затем мы объявили две функции-обработчика событий, а также назначили им фильтры. Рассмотрим их подробнее. Декоратор @router.message означает, что функция является обработчиком входящих сообщений. Command(«start») запускает обработчик только если входящее сообщение — команда /start . Далее мы объявляем саму функцию и в её теле отвечаем пользователю на сообщение текстом приветствия. Если мы имеем доступ к объекту сообщения, то всегда можем отправить в тот же чат любое сообщение методом msg.answer(«Text») , что является аналогом await bot.send_message(msg.chat.id, «Text») .

Второй обработчик реагирует на все сообщения, так как у него не задан ни один фильтр. В теле функции мы снова отвечаем пользователю сообщением и подставляем в него значение msg.chat.id . Запустим снова код и посмотрим на результат. Обратите внимание, что запускать надо не handlers.py, а main.py, так как именно он является точкой входа в нашу программу. В консоли снова появится аналогичное сообщение об успешном запуске бота, можно перейти в чат с ботом и отправить ему команду /start .

Мы должны получить следующие ответы от бота:

Бот работает исправно

Если у вас получилось также, то поздравляю, вы настроили всё правильно и запустили минимально рабочего бота.

Заключение

В следующей части мы сделаем меню бота и подключим к боту API OpenAI. Так как это моя первая статья на Хабре, жду любой конструктивной критики в комментариях по оформлению, стилю изложения и разумеется коду.

UPD: Обновил код, удалил использование глобального объекта диспетчера, заменил на роутер. Спасибо более опытным коллегам за подсказку

Простой Telegram-бот на Python за 30 минут

На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).

Часть 1: Регистрация бота

Самая простая и описанная часть. Очень коротко: нужно найти бота @BotFather, написать ему /start, или /newbot, заполнить поля, которые он спросит (название бота и его короткое имя), и получить сообщение с токеном бота и ссылкой на документацию. Токен нужно сохранить, желательно надёжно, так как это единственный ключ для авторизации бота и взаимодействия с ним.

Часть 2: Подготовка к написанию кода

Как уже было сказано в заголовке, писать бота мы будем на Python’е. В данной статье будет описана работа с библиотекой PyTelegramBotAPI (Telebot). Если у вас не установлен Python, то сперва нужно сделать это: в терминале Linux нужно ввести

sudo apt-get install python python-pip

Если же вы пользуетесь Windows, то нужно скачать Python с официального сайта .

После, в терминале Linux, или командной строке Windows вводим

pip install pytelegrambotapi

Теперь все готово для написания кода.

Часть 3: Получаем сообщения и говорим «Привет»

Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll’ом.

Открывайте ваш любимый текстовый редактор, и давайте писать код бота!

Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:

import telebot; bot = telebot.TeleBot('%ваш токен%');

Теперь объявим метод для получения текстовых сообщений:

@bot.message_handler(content_types=['text']) def get_text_messages(message):

В этом участке кода мы объявили слушателя для текстовых сообщений и метод их обработки. Поле content_types может принимать разные значения, и не только одно, например

@bot.message_handler(content_types=['text', 'document', 'audio'])

Будет реагировать на текстовые сообщения, документы и аудио. Более подробно можно почитать в официальной документации

Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/help», то скажем пользователю написать «Привет»:

if message.text == "Привет": bot.send_message(message.from_user.id, "Привет, чем я могу тебе помочь?") elif message.text == "/help": bot.send_message(message.from_user.id, "Напиши привет") else: bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")

Данный участок кода не требует комментариев, как мне кажется. Теперь нужно добавить в наш код только одну строчку (вне всех методов).

bot.polling(none_stop=True, interval=0)

Теперь наш бот будет постоянно спрашивать у сервера Телеграмма «Мне кто-нибудь написал?», и если мы напишем нашему боту, то Телеграмм передаст ему наше сообщение. Сохраняем весь файл, и пишем в консоли

python bot.py

Где bot.py – имя нашего файла.

Теперь можно написать боту и посмотреть на результат:

image

Часть 4: Кнопки и ветки сообщений

Отправлять сообщения это несомненно весело, но ещё веселее вести с пользователем диалог: задавать ему вопросы и получать на них ответы. Допустим, теперь наш бот будет спрашивать у пользователя по очереди его имя, фамилию и возраст. Для этого мы будем использовать метод register_next_step_handler бота:

name = ''; surname = ''; age = 0; @bot.message_handler(content_types=['text']) def start(message): if message.text == '/reg': bot.send_message(message.from_user.id, "Как тебя зовут?"); bot.register_next_step_handler(message, get_name); #следующий шаг – функция get_name else: bot.send_message(message.from_user.id, 'Напиши /reg'); def get_name(message): #получаем фамилию global name; name = message.text; bot.send_message(message.from_user.id, 'Какая у тебя фамилия?'); bot.register_next_step_handler(message, get_surnme); def get_surname(message): global surname; surname = message.text; bot.send_message('Сколько тебе лет?'); bot.register_next_step_handler(message, get_age); def get_age(message): global age; while age == 0: #проверяем что возраст изменился try: age = int(message.text) #проверяем, что возраст введен корректно except Exception: bot.send_message(message.from_user.id, 'Цифрами, пожалуйста'); bot.send_message(message.from_user.id, 'Тебе '+str(age)+' лет, тебя зовут '+name+' '+surname+'?') 

И так, данные пользователя мы записали. В этом примере показан очень упрощённый пример, по хорошему, хранить промежуточные данные и состояния пользователя нужно в БД, но мы сегодня работаем с ботом, а не с базами данных. Последний штрих – запросим у пользователей подтверждение того, что все введено верно, да не просто так, а с кнопками! Для этого немного отредактируем код метода get_age

def get_age(message): global age; while age == 0: #проверяем что возраст изменился try: age = int(message.text) #проверяем, что возраст введен корректно except Exception: bot.send_message(message.from_user.id, 'Цифрами, пожалуйста'); keyboard = types.InlineKeyboardMarkup(); #наша клавиатура key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes'); #кнопка «Да» keyboard.add(key_yes); #добавляем кнопку в клавиатуру key_no= types.InlineKeyboardButton(text='Нет', callback_data='no'); keyboard.add(key_no); question = 'Тебе '+str(age)+' лет, тебя зовут '+name+' '+surname+'?'; bot.send_message(message.from_user.id, text=question, reply_markup=keyboard) 

И теперь наш бот отправляет клавиатуру, но если на нее нажать, то ничего не произойдёт. Потому что мы не написали метод-обработчик. Давайте напишем:

@bot.callback_query_handler(func=lambda call: True) def callback_worker(call): if call.data == "yes": #call.data это callback_data, которую мы указали при объявлении кнопки . #код сохранения данных, или их обработки bot.send_message(call.message.chat.id, 'Запомню : )'); elif call.data == "no": . #переспрашиваем 

Остаётся только дописать в начало файла одну строку:

from telebot import types

Вот и всё, сохраняем и запускаем нашего бота:

Telegram Bot

Телеграм бот на Python / #1 – Разработка ботов с нуля. Как создать Telegram Bot?

Телеграм бот на Python / #1 – Разработка ботов с нуля. Как создать Telegram Bot?

Представляем курс для начинающих по разработке Telegram ботов на Python. За курс вы с нуля научитесь создавать Телеграм ботов в разных жанрах и с использованием разных библиотек.

Видеоурок

Разработка ботов

За последние несколько лет боты стали неотъемлемой частью многих интернет компаний. За счет ботов компании могут автоматизировать рутинную работу и могут позволить пользователю быстро получить необходимую информацию.

В связи с этим сфера их разработки сейчас действительно очень популярна. Многие компания хотят иметь своего телеграмм бота и поэтому ищут специализированных разработчиков. Приятно в этом то, что на изучение разработки вам придется потратить всего пару дней (за исключением изучения самого языка программирования). После пары дней тренировок вы уже сможете брать заказы на фрилансе и получать за их выполнение деньги.

Почему Telegram?

В современном мире мессенджеры стали основным способом для общения в интернете. Существует много мессенджеров, но с уверенностью можно сказать что одним из самых популярных является Телеграм.

Поэтому, если вы решили создавать ботов, то логично начать сразу с наиболее популярной платформы в этой сфере. Изучив разработку Telegram ботов вы позже сможете переключиться и на разработку ботов под другие мессенджеры или соц сети. Принцип работы всех ботов примерно одинаков. Разница заключается лишь в использовании разных библиотек и методов в них.

Инструменты разработчика

На самом деле для разработки ботов вы можете использовать любые языки программирования. Можно писать на PHP, C#, Java и даже на JavaScript.

Многие разработчики выбирают тот язык, на котором они пишут в повседневной жизни. Если же такого языка нет, то одним из наилучших в этом плане является язык Python. Он легок в использовании и позволяет быстро добавить необходимый функционал для вашего бота.

Такая легкость в частности обеспечена обилием библиотек, что были разработаны под этот язык для быстрого описания и выполнения команд.

Плюс выбор падает на Питон, так как на его основе можно создавать ботов и под другие мессенджеры, что очень удобно, ведь синтаксис будет такой же.

План курса

В ходе курса вы с нуля научитесь создавать Telegram ботов под разные сферы и цели применения. Вы научитесь работать с несколькими библиотеками для построения ботов, а также внедрите в код разные API системы для интеграции полезных функций.

К концу курса у вас будут хорошие навыки по созданию ботов. Вы сможете создавать ботов, что будут представлять из себя набор полезных действий или даже полноценный магазин с покупками.

Дополнительный курс

На нашем сайте вы также найдете курс « Профессия Python разработчик ». В ходе огромной программы вы изучите язык Python, научитесь работать с базами данных, тестированием и научитесь создавать веб сайты за счёт фреймворка Django.

За курс вы изучите массу нового и к концу программы будете уметь работать с языком Питон, создавать на нём полноценные ПК приложения на основе библиотеки Kivy и создавать веб сайты на основе библиотеки Джанго.

Задание к уроку

Создание бота

Создайте нового бота через Телеграм. Укажите что ваш бот будет иметь название: «ВашеИмяФамилия My Bot».

Посмотреть ответ

Для создания бота зайдите в Телеграм и найдите официального бота @BotFather .

Запустите его и пропишите команду «/newbot». Далее укажите название для бота и его программный адрес.

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *