Доброго времени суток,
В последнем уроке, мы с вами делали каталог напитков на PyTelegramBotApi,
Но уже в этом уроке я покажу вам как быстро перейти c PyTelegramBotApi на Aiogram, заставим нашего бота присылать нам фото кабинок
Напомню, что бота под телеграм я пишу на языке программирования Python в библиотеке PyTelegramBotApi, Но уже перешёл на Aiogram, с устройством установки и запуска кода на PyTelegramBotApi, вы можете более познакомиться в ранних статьях(Урок 1 и Урок 2).
Знакомство с Aiogram.
Если раньше на начальном этапе мы написали бы конструкцию бота так, как на скрине выше,
то теперь она будет выглядет так:
Тут уже куда больше библиотек надо импортировать.
После крупного обновления библиотеки aiogram 3.*.*,
Многие функции поменялись и мы с вами по ходу с ними разберёмся.
Даже привычные inline кнопки здесь объявляются уже по другому.
Для начала работы не забудьте в командной строке прописать:
pip install aiogram
и
pip install asyncio
После этого можете перевести свой код с PyTelegramBotApi на Aiogram.
Если с обычными функциями это ещё просто, то с отправкой изображения в группе придётся добавить ещё строчки кода.
-Зато надёжно!
Ладно, перейдём к коду.
Начнём с того, что я хочу чтобы бот на старте приветствовал, отправлял фотографию с описанием и к ней уже прикреплялись inline кнопки.
Как получить file_id фотографии, мы можем узнать тут.
добавлю эти строки в наш код.
Теперь когда пользователь будет отправлять нашему боту фотографию (не файлом), то бот будет писать нам в консоль 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'ов во второй части :)
__________________________________________________________________________________________
-Спасибо, что дочитали данную статью до конца, Надеюсь, она была вам полезна. Также если что-то осталось не разобранным и непонятным - пишите в комментарии. Подписывайтесь, дальше будет ещё интереснее.