Найти тему
#<Код своими руками!>

Telegram-bot с нуля. Создание бота по бронированию кабинок. PyTelegramBotApi на Aiogram.

Оглавление

Доброго времени суток,
В последнем уроке, мы с вами делали каталог напитков на
PyTelegramBotApi,
Но уже в этом уроке я покажу вам как быстро перейти c
PyTelegramBotApi на Aiogram, заставим нашего бота присылать нам фото кабинок

Напомню, что бота под телеграм я пишу на языке программирования Python в библиотеке PyTelegramBotApi, Но уже перешёл на Aiogram, с устройством установки и запуска кода на PyTelegramBotApi, вы можете более познакомиться в ранних статьях(Урок 1 и Урок 2).

Знакомство с Aiogram.

PyTelegramBotApi
PyTelegramBotApi

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

Aiogram
Aiogram

Тут уже куда больше библиотек надо импортировать.
После крупного обновления библиотеки aiogram 3.*.*,
Многие функции поменялись и мы с вами по ходу с ними разберёмся.
Даже привычные inline кнопки здесь объявляются уже по другому.

Для начала работы не забудьте в командной строке прописать:

pip install aiogram

и

pip install asyncio

После этого можете перевести свой код с PyTelegramBotApi на Aiogram.
Если с обычными функциями это ещё просто, то с отправкой изображения в группе придётся добавить ещё строчки кода.

-Зато надёжно!

Ладно, перейдём к коду.

Начнём с того, что я хочу чтобы бот на старте приветствовал, отправлял фотографию с описанием и к ней уже прикреплялись inline кнопки.

Как получить file_id фотографии, мы можем узнать
тут.

добавлю эти строки в наш код.

-4

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

Ну разве что отправить её нам в закомментированной строке.
Только надо написать ваш user_id

Затем отправляете боту картинку и копируете её file_id, ну или тот набор букв и цифр который вам выведется.

Вы можете спросить, а зачем тут 3 функции, а вот...

Если картинка в "отличном" качестве, то выведет её file_id,
если в "хорошем", то её file_id,
если в "удовлетворительном", то его....

Почему же здесь нет, а вот "если совсем картинки не будет?",
ну такое невозможно, т.к. если это картинка, то в функцию бот уже зайдёт, а в плохом качестве картинка уж точно будет.
Хоть у нас и стоит в последнем блоке "
try: ____ except:" их от туда можно вообще убрать, но на всякий случай стоит обработка, что фото функция вообще не найдёт.

Мы получили file_id.

Теперь напишем простое приветствие.

функция:
await bot.send_photo(user_id, "file_id", caption="", parse_mode="HTML", reply_markup=markup)

Ну чтобы вы знали порядок параметров.

-Да-Да, опытные программисты и так всё знают и даже лучше...

скрин приветствия
скрин приветствия

Вот наше приветствие.
Не супер конечно, но текст вы всегда можете поменять.

Приветствие в коде.
Приветствие в коде.

Теперь добавим к нему inline-кнопки,
Если раньше мы бы писали
btn1 = types.inlinekeyboardbutton....
И затем добавляли кнопки в клавиатуру,
Ну или кому как удобнее было делал.

То теперь мы сразу объявляем все кнопки.

И вот как у нас изменится функция на старте:

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

Название у меня дано, callback тоже есть, теперь надо его "поймать", чтобы в пустоту не уходил, а для этого написать надо обработчик callback'a,
Буду только callback "
Sterling" ловить, ведь именно там и есть кабинки...

А обработчик callback'ов во второй части :)

__________________________________________________________________________________________

-Спасибо, что дочитали данную статью до конца, Надеюсь, она была вам полезна. Также если что-то осталось не разобранным и непонятным - пишите в комментарии. Подписывайтесь, дальше будет ещё интереснее.