🖼️ Адвент своими руками в XXI веке
Картинку сгенерил StableDiffusion. Юзал вот этот фронтенд [1], очень рекомендую.
Эта идея возникла у меня относительно спонтанно. Мы купили несколько адвент-календарей. Один из The Body Shop, второй из DM (Balea Men) и третий вообще со сладостями. Посмотрели на адвенты и обнаружили, что по католической традиции у двух из них 24 окошка. У бодишопа, кстати, 25.
Но, как говорится, есть один нюанс...
Мы не католики. Сегодня вот у половины мира праздник, а у нас обычный день. Мы отмечать будем в ночь с 31-го на 1-е, как и большинство людей, выросших на территории (бывшего) СССР.
Итак, имеем задачу: продлить радость ещё на 6 дней (с 26 по 31). Выбрать шесть подарков — задача относительно несложная. Но коробки уже размечены с завода, так что приходится выходить за их рамки и использовать всё оставшееся жилище. Стратегия простая: вместо складывания в коробку, подарки прячем оставшиеся подарочки туда, где их сложно обнаружить случайно. Выдвижной ящик стола не подойдёт — туда заглядывают регулярно. Пакет с летней одеждой подойдёт — вероятность случайно залезть туда в целом довольно низка. Звучит как план — можно делать.
Вчера, когда закончился огромный бодишоповский адвент, мы разобрали все сложенные внутрь коробочки и выкинули. Получился знатный пакет картона. Была бы переработка в пешей доступности — отнесли бы туда, но увы. А ведь адвентов было целых три...
Думаю, подобный подход при желании можно применить на любой срок, если хватит фантазии для такого количества покупок и такого же количества потайных мест в доме. Но определённо спрятанные подарки уделывают магазинные коробки по количеству ущерба, наносимого природе.
Да, есть неплохой вариант — купить готовый набор для адвентов с кармашками или коробочками. Но с ним тоже всё не так просто: не всякий подарок из числа задуманных влезет в кармашек. А ещё этот набор, если не будет одноразовым (экология же?), будет 11 месяцев валяться где-то в шкафах. Не катит.
Итак, решено. Прячем пробные шесть подарков в квартире. Что для этого потребуется:
Вообще, бот, как ни странно, должен реализовывать не одну функцию, а две. Первая — выдавать место подарка по запросу. Запросом может быть сообщение вида «где», не обязательно прописывать команду. Но на всякий случай я написал целый массив разных сообщений. Моё решение совмещено с ботом, который занимается домашней автоматизацией, поэтому нельзя было положиться на совсем любое сообщение.
Вторая функция предусмотрительная. На случай ошибки при написании конфига, хочется знать, какое место бот выдаст завтра. Для этого придумывается секретное сообщение, в ответ на которое бот выдаст сообщение для даты, соответствующей завтрашней, заодно добавив подсказку о том, что надо прятать в указанном месте (если вы, как и я, любите всё делать в последний момент)
Ну и конфигурация, конечно. Сильно не заморачиваясь, я написал простенький json-файл. Компромисс между человеком и машиной: и мне несложно читать, и десериализация быстрая. Дабы оставить возможность вносить изменения на лету, не перезапуская бота, не стал считывать конфиг при инициализации — он читается каждый раз при подходящем сообщении.
[🖼️ ] [1] Получилось как-то так. Пока переносил код, написал несколько заглушек и перевёл тексты и команды на английский. Перевести обратно, впрочем, легко.
Получилось неплохо. Немножко поколдовав, выделил код выдачи подарков в полностью самостоятельного бота (напоминаю, что он у меня совмещён с ботом для автоматизации некоторых домашних задач) и получилось что-то такое [2]. В этом году вряд ли уже получится воспользоваться, но можно сохранить в закладки и использовать в следующем. А я, наверное, чуть позже дополню этот пост, когда бот пройдёт испытания в боевых условиях.
UPD: итоги
Это в целом работает. Самая большая сложность — хранить где-то запланированные подарки. Сильно заранее прятать их в финальное место не стоит — риск спалить всё-таки очень высокий. А так — понравилось. Жена ждала полуночи каждый день с нетерпением, чтобы получить от бота новые указания.