Ура! Долгожданный релиз @DickGrowerBot v1.3.9!
Прошло всего-то больше года с предыдущего! Вау!
Этот релиз по числу нововведений внушительный, но по сути там в основном исправления накопившихся багов:
1️⃣ Полностью пересмотрена работа с примитивными числами, чтобы избежать вечных проблем с арифметическим переполнением в экстремальных условиях (ивенты, багоюзы), для многих параметров размерность структур данных в памяти была увеличена. Теперь со старых должников времён 8 марта 2024 года должны начать списываться старые кредиты.
2️⃣ Исправлен баг с множественным кредитованием обеспеченных граждан, когда они создавали множество заявок, будучи в минусе, а потом активировали все заявки разом, ибо проверка выполнялась не в момент исполнения, а только на этапе создания. Кредиты теперь снова включены, скукоживание тоже вернулось. Более того, в ближайшее время всем, кто не успел проиграть незаконно приобретённые сантиметры и сидит с огромным состоянием, пользуясь беспроцентным кредитованием и сидя по уши в долгах для обеспечения роскошной жизни, будут принудительно закрыты их кредиты.
3️⃣ Вновь возвращаемся к более умному алгоритму выбора Писюна дня. Теперь он должен быть более справедлив и плавен в распределении побед.
4️⃣ Перки Писюна дня теперь тоже считаются корректно: для победителя, а не для того, кто вызвал команду.
5️⃣ Горе спамерам: веб-ссылки в именах больше не будут подсвечиваться в конце сообщений бота (вообще я думал, что этот PR вошёл ещё в прошлый релиз, но оказалось, что нет).
Появилась пара улучшений:
1️⃣Неактивные пользователи, которые ничего не растили уже более недели и не участвуют в ежедневном розыгрыше, в топе теперь подсвечиваются символами [~].
2️⃣Добавлены новые локализации: на итальянском языке (восстановлена из уже закрытого PR) и тайваньском варианте китайского (чем бы они ни различались). Кроме того, силами Клода наконец-то переведены все справочные сообщения на все поддерживаемые языки!
Но появилась и пара новых ограничений, которые сделают игру справедливее, я надеюсь:
1️⃣Анонимные админы больше не смогут играть от имени групп/каналов. Более того, в ближайшее время такие аккаунты будут удалены (если Клод мне не наврал, что это два общих для всех специально захардкоженных user_id).
2️⃣Поскольку функция импорта позволяет забрать данные только по десяти топовым игрокам из ботов-конкурентов, что не очень справедливо по отношению к остальным участникам, если игроков в чате больше, то теперь существует ограничение и использовать её можно только на начальных этапах игры, пока количество участников не вырастет за пределы лимита.
По сути, большую часть работы здесь заняла кропотливая работа по изучению и написанию макросов, чтобы построить инфраструктуру для рефакторинга по DDD и изолировать функции конвертации данных в отдельных типах, туда же засунуть и часть вычислений (пока не всё успели вынести, но надеюсь, что ещё доделаем эту работу в будущем). Потому что без макросов это превратилось бы в сущий кошмар из постоянного копирования одного и того же кода, что создавало бы сильное нежелание заморачиваться с тем, чтобы вместо примитива создавать отдельный тип. На работе прохавали — знаем. Когда-нибудь отдельно про это обязательно напишу!
До конца месяца (надеюсь этого) хотелось бы выпустить ещё v1.3.10, где доисправляем насущные проблемы, с которыми приходят чаще всего. В частности, с переключением языков и inline-режимом в несупергруппах.
Надеюсь, хоть и не все баги получилось закрыть сразу, возвращение к разработке бота (во многом благодаря возможностям современного ИИ и уже наработанному за полгода опыту работы с ними, которым я бы тоже хотел как-нибудь поделиться) вас порадует! А чтобы было ещё веселее, держите традиционный релизный промокод: RVER139, где бонус равен количеству коммитов в релизе, а количество активаций — количеству дней между релизами