Найти в Дзене
Канал Сусанина

Аватарка для телеграма, которая показывает время. Пишем на Python. Исходный код прилагается.

Всем привет! Сегодня я хочу показать вам, как сделать аватарку в телеграме, которая показывает время. Для этого мы будем использовать две библиотеки: Pillow - для создания изображения и telethon - она предназначена для работы с аккаунтом. В первую очередь, для подключения к аккаунту из скрипта, надо получить App api_id и App api_hash. Для этого перейдите по ссылке, войдите в свой аккаунт и создайте новое приложение: https://my.telegram.org/apps После ввода всех нужных данных нажмите "Create application". Откроется страница с нужными нам данными: Нажимаем "Save changes". Копируем api_id и api_hash, создаем файл config.py (для удобства) и вставляем туда скопированное: Теперь создадим файл imgen.py (можете назвать как угодно). В нём создадим две функции: gentime() для генерации времени в виде текста и genimg() для генерации изображения. Пишем: Импортируем нужные библиотеки: datetime и PIL (Pillow). С функцией gentime, думаю, всё более-менее понятно. Если коротко, в переменную t записываем

Всем привет! Сегодня я хочу показать вам, как сделать аватарку в телеграме, которая показывает время. Для этого мы будем использовать две библиотеки: Pillow - для создания изображения и telethon - она предназначена для работы с аккаунтом.

В первую очередь, для подключения к аккаунту из скрипта, надо получить App api_id и App api_hash. Для этого перейдите по ссылке, войдите в свой аккаунт и создайте новое приложение: https://my.telegram.org/apps

После ввода всех нужных данных нажмите "Create application". Откроется страница с нужными нам данными:

-2

Нажимаем "Save changes". Копируем api_id и api_hash, создаем файл config.py (для удобства) и вставляем туда скопированное:

-3

Теперь создадим файл imgen.py (можете назвать как угодно). В нём создадим две функции: gentime() для генерации времени в виде текста и genimg() для генерации изображения. Пишем:

-4

Импортируем нужные библиотеки: datetime и PIL (Pillow).

С функцией gentime, думаю, всё более-менее понятно. Если коротко, в переменную t записываем текущее время, в h - часы, в m - минуты (берем из t). Потом по очереди проверяем длину этих двух переменных. Если она равна 1, вначале добавляем 0 для красоты (например, чтобы было не 9:5, а 09:05).

Перейдём к следующей функции - genimg. Там переменной text присваиваем то, что получили в прошлой функции (время в виде чч:мм). Далее в переменную im открываем картинку-фон. У меня это черный квадрат 500 на 500 пикселей (вы можете взять любу другую картинку, но тогда расчет положения текста (25 и 27 строки) у вас может отличаться от моего). Далее, с 22 по 27 строку, - наложение текста на изображение (im), применение шрифта, размера и цвета. 28 строка - сохранение результата (картинка с именем 3.jpg).

Теперь создадим файл main.py и напишем в нём скрипт, который будет менять аватарку:

-5

Импортируем всё как на скриншоте. 9 и 10 строка - подключение к аккаунту телеграм. В переменную lasttime будем записывать минуту, в которую последний раз меняли аватарку. В цикле проверяем, изменилась ли минута. Если изменилась (старая не равна новой) - генерируем новое изображение (19 строка), ждём 2 секунды, удаляем старую аватарку (удалятся все аватарки) и ставим новую - сгенерированную, обновляем время в переменной lasttime. В 26 строке запускаем функцию main.

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

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

Исходный код: https://gist.github.com/susanin3/309d29910284109154201472ed97cc6f

Так же можете заценить моего телеграм-бота:) http://t.me/what_prazdnik_bot

А на этом всё. Надеюсь, я всё понятно расписал. Если эта статья помогла вам или вы считаете её полезной (а если и то и то, то вообще супер), то можете поставить лайк для продвижения статьи. Всем спасибо!