Урок №10. Изучение библиотек для создания ботов aiogram

В этом уроке мы изучим базовые аспекты работы с библиотекой aiogram.

Зачем изучать еще одну библиотеку?

У вас, наверное, возник вопрос, зачем нам изучать библиотеку aiogram, если мы уже можем создавать ботов с помощью telebot. Дело в том, что умение работать сразу с несколькими библиотеками позволит вам лучше понять построение ботов, а также в случае заказа telegram ботов, некоторые заказчики могут попросить написать бота определенной библиотеке. При изучении еще одной библиотеки вы убедитесь, насколько они схожи, и что изучение новой библиотеки не займет у вас много времени.

Установка и настройка aiogram.

Для работы с библиотекой aiogram ее необходимо сначала установить. Для этого совершите следующие действия: File -> Settings -> Project: (ваш проект) -> Python Interpreter -> над словом "package" нажмите на + -> в поиске введите название библиотеки aiogram -> Install Package.

Урок №10. Изучение библиотек для создания ботов aiogram

Теперь, когда библиотека установлена, мы можем ее подключить. Вместо полного подключения библиотеки, я предлагаю подключить только определенные классы, которые нам понадобятся. Для этого мы импортируем из библиотеки aiogram такие классы, как Bot, Dispatcher, executor и types. Затем нам нужно создать объект bot, который будет ссылаться на наш токен в telegram. Для этого мы создаем бота и обращаемся к Bot, а в качестве значения указываем наш токен. Также, чтобы бот корректно работал, нам нужно воспользоваться классом Dispatcher. Создаем объект, например, dis, где обращаемся к Dispatcher, и устанавливаем нашу переменную bot. Теперь мы можем работать с нашим ботом. Также давайте в самом низу пропишем то, что наша команда будет работать постоянно. Для этого нам необходимо обратиться к executor и вызвать start_polling, куда передаем наш объект dis. Это будет базовым синтаксисом для настройки бота.

Урок №10. Изучение библиотек для создания ботов aiogram

Отслеживание команд.

Давайте для начала отследим команду /start. Для этого мы прописываем почти один и тот же синтаксис. Мы обращаемся к диспетчеру (то есть объекту dis), затем обращаемся к message_handler() и также указываем commands = ['start']. Затем мы должны создать функцию, например, start, и здесь будет использоваться принцип асинхронности, поэтому перед функцией мы должны прописать ключевое слово async. Также перед всеми действиями, которые вы будете выполнять, нужно прописывать await. В функции мы указываем точно такой же параметр message и указываем тип этого параметра. Для этого ставим двоеточие, затем указываем types и тип этого параметра, то есть message. Теперь давайте выведем сообщение пользователю. Сначала мы прописываем await, затем обращаемся к bot.send_message(), указываем message.chat.id, а затем в фигурных скобках пишем наше сообщение пользователю.

Урок №10. Изучение библиотек для создания ботов aiogram

Если запустить бота и нажать кнопку /start, то все будет работать корректно.

Урок №10. Изучение библиотек для создания ботов aiogram

Типы получаемых данных. Также, как и ранее, если мы внутри диспетчера напишем не commands = ['start'], а, например, content_types = ['photo'], то наш бот будет отвечать только тогда, когда ему будут отправлять фотографию.

Урок №10. Изучение библиотек для создания ботов aiogram
Урок №10. Изучение библиотек для создания ботов aiogram

То же самое будет происходить, если мы в content_types пропишем video - наш бот будет отслеживать видео, если audio - аудио, если text - текст.

Отправка файлов.

Чтобы отправить нашему пользователю какой-либо файл в ответ на его сообщение, мы сначала открываем файл с помощью функции open, затем асинхронно прописываем message.answer_ и выбираем тип файла, который мы хотим отправить пользователю.

Урок №10. Изучение библиотек для создания ботов aiogram
Урок №10. Изучение библиотек для создания ботов aiogram

Можно заметить, что библиотеки для создания ботов очень схожи.

Создание кнопок inline.

Теперь давайте создадим функцию, которая будет отслеживать наши кнопки. Для этого обращаемся к диспетчеру, далее обращаемся к message_handler() и здесь прописываем commands = ['text']. То есть, когда мы напишем текст, то наши кнопки будут срабатывать. Далее прописываем async, потом прописываем функцию, например, second, и тут мы указываем также параметр message и его тип types. Для создания кнопок мы будем делать почти все то же самое. Мы прописываем markup, далее обращаемся к types, и если мы делаем встроенные кнопки, то обращаемся к InlineKeyboardMarkup(). Далее для добавления кнопок я пишу markup.add и внутри обращаемся к types.InlineKeyboardButton. Здесь мы указываем текст, который будет на наших кнопках. Например, создадим кнопку на нашу группу в Telegram. Напишу текст 'Telegram канал', тут же пропишем url и пишем ссылку на нашу группу. По схожему принципу добавим еще одну кнопку 'Привет', только вместо url мы добавим callbackdata. Также вместе с этими кнопками давайте будем выводить текст, например, 'Привет!'. Для этого мы пишем await, потом bot.send_message(message.chat.id, 'Привет!') и дополнительно описываем replymarkup = markup, чтобы наши кнопки работали.

Урок №10. Изучение библиотек для создания ботов aiogram
Урок №10. Изучение библиотек для создания ботов aiogram

Теперь давайте создадим обработчик callback_data. Для этого обращаемся к диспетчеру, далее к callback_query_handler(). Здесь же мы с вами создаем асинхронную функцию, например, callback, которая принимает параметр call. И здесь мы будем выводить сообщение на экран. Для этого мы пишем await, обращаемся к call.message.answer и будем выводить те данные, которые передаются при нажатии (в моем случае это будет help).

Урок №10. Изучение библиотек для создания ботов aiogram
Урок №10. Изучение библиотек для создания ботов aiogram

Создание кнопок reply.

Теперь давайте создадим кнопки reply. Для этого также обращаемся к регистру, к message_handler() и пусть наши кнопки будут появляться при команде /reply. Для этого пишем внутри commands = 'reply'. Теперь создаем функцию, например, reply. Тут также мы принимаем один параметр и указываем его тип. Далее мы прописываем почти то же самое, что писали ранее. Создаем объект markup, далее обращаемся к types, потом ReplyKeyboardMarkup. Далее мы добавляем кнопки с помощью markup.add. Тут же мы указываем types.KeyboardButton и далее указываем название кнопки, например, help. Потом мы выводим некое сообщение с помощью await bot.send_message(message.chat.id, 'Приветствуем вас в нашем Telegram боте') и также указываем reply_markup=markup.

Урок №10. Изучение библиотек для создания ботов aiogram
Урок №10. Изучение библиотек для создания ботов aiogram

Также вы можете подписаться на telegram канал, где будут выкладываться все коды с моих уроков, а также сами уроки: https://t.me/pythotelegram.

А также после каждого урока вы можете заходить на моего telegram бота, чтобы посмотреть результат работы, после каждого урока:

3
Начать дискуссию