Обновляем фото в telegram по расписанию

На фоне повторного хайпа приложения FaceApp, решил-таки попробовать состарить свое фото. Результат получился так себе, и вообще, я больше проникся фильтром, который накладывает улыбку. Я зашел в телеграм, чтобы поделиться результатом с друзьями, и меня осенило. Почему бы не менять протокольную фотку в профиле на такую же, только с наложенным фильтром “улыбки”, в зависимости от дня недели? В течении рабочей недели твой профиль деловой и серьезный, а по выходным “можешь себе позволить” :-)


Самой сложной задачей оказалось найти библиотеку, которая бы работала, как полноценный клиент к telegram. Дело в том, что для обновления изображения профиля, распространенное bot-api не подходит. В результате была найдена библиотека MadelineProto, написанная на php. Авторы большие молодцы - дали возможность управлять даже звонками. Но мне хватило только функции удаления и загрузки фото профиля.


После изучения документации, был рожден скрипт: https://gist.github.com/dmkuznetsov/452dfd30f0b4fd9a17f2149037f2afc3

При первом запуске он скачает все зависимости и выдаст интерактивную инструкцию (manual-режим), по ходу которой будет настроено подключение. По факту, достаточно скопировать скрипт и выполнить его в консоли. После того, как скрипт скорректирован, а фотки выбраны - нужно добавить его вызов в cron.


В моем случае, это выглядит так:
0 1 * * 1,6 /usr/bin/php /opt/avatimer/avatimer.php >> /dev/null
В результате, моя фотка в профиле telegram, серъезная по будням и улыбчивая по выходным.



Эксперементируйте, друзья!