Этот урок посвящен базовым аспектам работы с библиотекой aiogram для создания ботов в Telegram.
Установка и подключение aiogram
Для работы с aiogram установите её с помощью pip:
pip install aiogram
Вместо полного импорта библиотеки (import aiogram), рекомендуется импортировать только необходимые классы:
from aiogram import Bot, Dispatcher, executor, types
- Bot: Класс для создания объекта бота.
- Dispatcher: Класс для обработки событий.
- executor: Для запуска бота в режиме постоянной работы.
- types: Для создания кнопок и работы с типами данных.
Создание и настройка бота
После установки библиотеки, создайте объект Bot, передав ему токен вашего бота:
bot = Bot(token='YOUR_BOT_TOKEN')
Замените YOUR_BOT_TOKEN на ваш собственный токен. Далее создайте объект Dispatcher:
dp = Dispatcher(bot)
Для постоянной работы бота используйте функцию start_polling:
executor.start_polling(dp)
Обработка команд и сообщений
Для обработки команд используется message_handler с указанием обрабатываемой команды:
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
await message.answer("Hello")
Обратите внимание на ключевое слово async перед функцией, указывающее на асинхронность. Для отправки сообщения можно использовать message.answer() вместо bot.send_message().
Без указания параметров в message_handler, функция будет обрабатывать любые сообщения:
@dp.message_handler()
async def process_any_message(message: types.Message):
await message.answer("Сообщение получено")
Для обработки определенных типов контента, можно использовать параметр content_types:
@dp.message_handler(content_types=['text'])
async def process_text_message(message: types.Message):
await message.answer("Текстовое сообщение получено")
Создание и обработка кнопок
Для создания inline-кнопок используется InlineKeyboardMarkup:
markup = types.InlineKeyboardMarkup()
markup.add(types.InlineKeyboardButton(text="Сайт", url="https://itproger.com"))
markup.add(types.InlineKeyboardButton(text="Hello", callback_data="hello"))
await message.answer("Hello", reply_markup=markup)
Обработка нажатия на кнопку осуществляется через callback_query_handler:
@dp.callback_query_handler(lambda call: call.data == 'hello')
async def process_callback(call: types.CallbackQuery):
await call.message.answer("Сообщение от кнопки")
Для создания Reply-кнопок используется ReplyKeyboardMarkup:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.add(types.KeyboardButton("Сайт"), types.KeyboardButton("Вебсайт"))
await message.answer("Выберите действие:", reply_markup=markup)
Свойство resize_keyboard=True позволяет автоматически изменять размер клавиатуры.
Отправка файлов
Для отправки файлов используются методы answer_photo, answer_video и т.д.:
await message.answer_photo(open('path/to/your/photo.jpg', 'rb'))
Библиотека aiogram предоставляет удобные инструменты для создания ботов в Telegram. Её использование схоже с другими библиотеками, такими как telebot, но отличается асинхронным характером работы, что повышает эффективность. Изучив этот урок, вы сможете создавать собственных ботов, используя aiogram.