Что нового в Echo
История обновлений бота, сайта и игр.
Последнее обновление — 15 октября·159 записей
Август2026103 записи
- 25вт
Гарант: страница сделки, файлы в переписке и репутация участников
Страница сделки собрана заново
Раньше она была одной длинной лентой: переписка внизу, поле ввода в середине, действия закопаны между блоками. Теперь две колонки. Слева то, чем занимаются: приглашение второй стороны, кнопки действий, спор и жалобы, переписка. Справа закреплённая панель со сводкой по деньгам, сторонами, условиями и историей — они всегда перед глазами и не отнимают экран.
Подсказка «что сейчас»
Под полосой прогресса появилась строка, написанная от лица вашей роли: покупателю — «внесите оплату», исполнителю в той же сделке — «ждём, пока покупатель внесёт оплату». Статус на этот вопрос не отвечал: «Деньги на хранении» одинаково выглядит и для того, кто ждёт, и для того, кто должен работать.
Файлы в переписке
К сообщению можно приложить скриншоты, PDF и текстовые файлы — до 10 МБ. Раньше спор разбирался по пересказу сторон, теперь доказательства лежат прямо в сделке, включая личные ветки с арбитром. Ссылки принимаются только на файлы, загруженные в сервис: чужой адрес в поле вложения отбрасывается.
Переписка стала перепиской
Новые сообщения появляются без перезагрузки страницы, а набранный, но не отправленный текст при этом не пропадает. Лента и поле ввода теперь вместе, с вкладками: общий чат и личные ветки. Случайно написать при второй стороне то, что предназначалось арбитру, больше нельзя.
Договор одним документом
У каждой сделки есть печатная версия: стороны, предмет, условия, расчёты и состояние. Печать браузера сохраняет её в PDF.
Отзывы и репутация
После завершённой сделки каждая сторона ставит оценку от 1 до 5 и пишет пару слов. Отзыв привязан к сделке, один на сделку, изменить нельзя; на отзыв о себе можно один раз ответить. В профиле виден рейтинг, число завершённых сделок и все отзывы, а по номеру участника открывается его публичная карточка — её можно посмотреть до того, как соглашаться на сделку.
Профиль и имя
Номер участника, рейтинг, баланс, привязки входа и почта в одном месте. Имя раньше намертво бралось из способа входа — ником из мессенджера. Теперь оно меняется в профиле, и его видят вторая сторона и все, кто читает отзывы.
Поиск, фильтры и сводка
В списке сделок появился поиск по названию и номеру, фильтры по статусу и роли, сортировка по дате и сумме. Сверху — сколько сделок в работе, сколько денег заморожено и сколько свободно. У арбитража свой поиск по номеру: очередь показывает текущие дела, а спрашивают чаще про старую сделку.
Уведомления выключены по умолчанию
Бот не пишет никому, пока это не включено в профиле. Каналы включаются по одному: Discord, Telegram, почта. Приходят только смены статуса — присоединение, оплата, сдача работы, спор и решение по нему. Переписка сторон в личку не дублируется, а вот сообщение арбитра доходит всегда, в том числе в личной ветке: пропущенный вопрос арбитра стоит дела, пропущенное «ок» — ничего.
Защита от злоупотреблений
Создание сделок, жалобы, сообщения, письма и заявки на вывод ограничены по частоте. Одновременно можно вести не больше 20 незакрытых сделок. Поле срока сделки убрали: оно ни на что не влияло и создавало ложное впечатление, что по его истечении что-то произойдёт.
Гарант: споры разбирают внутри сделки, а не по пересказу сторон
Пожаловаться можно на любом этапе
Раньше спор открывался, только пока деньги на хранении. Теперь кнопка «Пожаловаться» есть всегда — и до оплаты, и после того, как сделка закрыта: обман вскрывается и через день. Пока деньги в эскроу, арбитр делит их как раньше. Если выплата уже прошла, возврат идёт с баланса второй стороны — и только в пределах того, что там есть: сервис не рисует деньги, которых нет, и пишет это прямо в решении.
Одно разбирательство и одно обжалование
Раньше по сделке можно было подать сколько угодно жалоб подряд — проигравшая сторона просто пробовала снова. Теперь жалоба одна. Если решение не устроило, есть «Оспорить решение»: дело возвращается арбитру с пометкой, что это последний круг, и после него закрывается окончательно.
Арбитр читает сделку, а не сводку
Раньше вердикт выносился из отдельного списка — вслепую, без переписки сторон. Теперь арбитр открывает саму сделку: читает условия и разговор, пишет сторонам от своего имени и там же выносит решение. Список споров стал очередью со входом в сделку, а не местом, где всё решается одной кнопкой.
Личный канал с арбитром
У переписки появились личные ветки. Арбитр выбирает, куда пишет: в общий чат или лично одной из сторон, а участник может написать арбитру кнопкой в своей сделке. Вторая сторона этих сообщений не видит — туда идут доказательства и то, о чём при оппоненте не говорят. При этом всё остаётся внутри сделки: следующий арбитр увидит переписку целиком, в отличие от разговора, уведённого в личку мессенджера.
Меры к участникам
Появился запрет вывода средств: человек продолжает вести сделки, но забрать деньги не может, пока идёт разбирательство. Это мягче полной блокировки и решает главную проблему споров — деньги не должны уехать, пока их судьба не определена. Блокировка закрывает новые сделки, оплату и вывод; раньше заблокированный участник спокойно забирал деньги. О любой мере человек получает уведомление с причиной.
Гарант-сервис заработал: сделки, в которых деньги ждут результата
Сделки под гарантом — на deal.echo-assistants.tech
Сервис открыт. Покупатель замораживает деньги на счёте Echo, исполнитель делает работу, выплата уходит только после подтверждения приёма. Привычный garant.echo-assistants.tech ведёт туда же: адрес один, входа два, поэтому ссылка не «раздваивается» ни для людей, ни для поиска.
Как проходит сделка
Создаёте сделку, указываете предмет, условия и сумму — и отправляете второй стороне одноразовую ссылку. Она видит те же условия ещё до входа. Дальше: оплата, работа, «сдано», подтверждение приёма. Каждый шаг виден обоим и записывается в историю сделки со временем.
Деньги
У каждого участника свой счёт: пополнение картой через ЮMoney, вывод — заявкой. Комиссия сервиса 4%, её платит покупатель сверх суммы: исполнитель получает ровно то, о чём договорились.
Выплата ждёт три дня
После подтверждения приёма деньги зачисляются исполнителю сразу — он видит их на балансе и понимает, что сделка закрыта. Вывести их можно через трое суток: ровно в этом окне вскрывается «работа была, а наутро её нет», и жалоба должна успеть вернуть оплату. Внутри сервиса деньги доступны без ожидания, а в кошельке видно, сколько под удержанием и когда оно снимется.
Вход
Discord, Telegram или VK — любой способ ведёт в один и тот же аккаунт, можно войти сегодня одним, завтра другим. Второй способ добавляется в профиле: потеряете доступ к одному — войдёте другим, сделки и деньги останутся. Почта обязательна и подтверждается кодом: связь со сторонами должна пережить смену мессенджера.
Правила отдельным документом
- 24пн
Быстрая настройка сервера и журнал заходов поддержки
Быстрая настройка. Бота добавили — и человек оставался один на один с тремя десятками модулей. Теперь на главной панели появляется мастер из пяти шагов: журнал событий, приветствие новичков, роли на входе, защита и карточка в мониторинге. Каждый шаг сохраняется сразу, а не «в конце», и настраивается подробнее в своём разделе. Приглашение исчезает, когда пройдено больше половины.
Видно, кто из поддержки заходил на ваш сервер. Сотрудник Echo может открыть панель любого сервера — только на чтение, изменить он ничего не может. Раньше следа от этого не оставалось. Теперь в «Журнале изменений» вашего сервера есть блок «Заходы поддержки»: кто, когда и сколько пробыл. Пусто — значит, никто не заходил, и это тоже ответ.
Плановые работы на странице состояния. На
/statsпоявился блок о предстоящих и идущих работах с историей прошедших. Красные полоски аптайма в это окно — не авария, и теперь это написано прямо там.Ночной режим: сервер сам себя успокаивает
Ночью на большом сервере происходит худшее, а дежурного модератора нет: разговор идёт вразнос, и утром модерация разбирает вчерашнее.
Новый модуль включает по расписанию медленный режим в чатах, а самые бойкие каналы, если попросите, закрывает на запись. Утром возвращает как было: прежние задержки каналов запоминаются при включении, а у закрытых каналов снимается только наша пометка — если канал был закрыт до нас, он таким и останется.
- 22сб
Свои команды стали конструктором
Раньше команда сервера была подписью и готовым текстом:
!правила— и всё. Теперь у неё есть аргументы, права, условия, действия и кнопки.Аргументы. Команда спрашивает участника, роль, канал, число, файл или текст — Discord подсказывает их прямо при наборе. В ответе они подставляются по имени: «Выдал {роль} игроку {кого} на {срок} дней». Можно задать готовый список значений или свои подсказки, а из двух слов в названии получается подкоманда:
/заявка подать,/заявка статус.Права. Команду можно закрыть правами Discord — тогда её просто не видно тем, кому нельзя. Сверху свои условия: нужные роли, запрещённые роли, разрешённые каналы, кулдаун на человека и на весь сервер, лимит запусков, «один раз на человека», расписание «с 18:00 до 23:00».
Действия. Команда теперь не только отвечает: выдаёт и снимает роли (в том числе на срок), начисляет и списывает монеты, ставит тайм-аут, меняет ник, пишет в канал, открывает тикет или заявку на одобрение. Движок общий с «Панелями действий» — что умеет кнопка, то умеет и команда.
Кнопки и меню под ответом. У каждой кнопки своё действие и свои условия. Меню ролей, участников и каналов Discord собирает сам, а выбранное подставляется в действие: меню ролей + «выдать роль» — и получилась выдача любой роли из списка.
Форма перед выполнением. До пяти полей: причина, срок, ссылка на доказательства. Ответы уходят и в текст, и в действия.
Свои команды и автоответы
- Теперь можно создавать собственные команды-ответы: пишете
!правила,!ip,!дискорд— бот отвечает вашим текстом или эмбедом. Настраивается в панели: echo-assistants.tech/dashboard → «Свои команды». - Автоответчик по ключевым словам: сообщение содержит нужное слово — бот сам отвечает.
- В ответах работают подстановки: {user}, {server}, {membercount} и другие.
- Бесплатно — до 15 команд (префиксные). На Premium — до 50 и можно делать полноценные слэш-команды (/команда).
Статистика в каналах
- Голосовой канал-счётчик: бот держит в названии живое число — «Участников: 1 234», а также люди, боты, бусты, каналы, роли. Настройка в панели → «Статистика в каналах».
Роли по реакциям
- Теперь можно создавать собственные команды-ответы: пишете
Куда написать, если функции не хватает
- В панели сервера под списком модулей и на главной сайта появилась ссылка на форму предложений. Раньше форма была, работала и собирала ответы, но найти её можно было только по прямой ссылке.
- Предложения читает отдел тестирования — там же, где разбирают сообщения об ошибках.
Модули показываем в движении
- На главной и на страницах игр вместо статичных макетов теперь короткие ролики: видно, как включаются тумблеры модулей, как Echo убирает фишинг и пишет в журнал, как заполняется полоса опыта, как открывается тикет и как идут партии в Мафию, Бункер и Каракули.
- На телефоне и планшете ролики не грузятся сами: видно кадр с кнопкой, а анимация приезжает по нажатию и в облегчённом виде. Полная прокрутка главной с телефона весит около полумегабайта вместо семи.
- Ролики нарисованы на двух языках: русская версия сайта показывает русские подписи, остальные четыре — английские.
Починили вёрстку на телефонах
- 21пт
7 дней Premium — бесплатно
- Серверам от 100 участников, которые живут дольше недели, стала доступна пробная неделя Premium. Включается кнопкой в панели сервера: карта не нужна, ничего не продлевается само.
- В неделю входит всё, ради чего Premium и берут: музыка с панелью управления, точка восстановления после каждого изменения, откат сервера в один клик после налёта и расширенные лимиты модулей.
- Свой бот — единственное, что в пробный период не входит: он запускается только на оплаченном Premium.
- Оплата во время пробной недели её остаток не съедает, а прибавляется сверху: заплатили на третий день — оплаченный месяц пойдёт с восьмого. Ждать конца недели незачем.
- Пробный период даётся один раз на сервер и один раз на владельца.
- Ближе к концу недели придёт напоминание — в колокольчик и в личные сообщения. Когда неделя закончится, премиум просто выключится: настройки, бэкапы и очередь останутся на месте и вернутся в ту же секунду, как Premium подключат.
- 20чт
Оплата на сайте
- Баланс теперь пополняется картой прямо на сайте — страница «Пополнить баланс» в профиле. Раньше для этого нужно было создать тикет и дождаться, пока пополнят руками.
- Комиссию платёжной системы платит покупатель: на баланс приходит ровно выбранная сумма.
- Деньги зачисляются автоматически по уведомлению от ЮMoney, с проверкой подписи и защитой от повторного зачисления. Платёж без метки или с протекцией не теряется — он попадает в журнал штаба, чтобы его разобрал человек.
- После зачисления приходит уведомление с новой суммой баланса; Premium с баланса покупается прежней кнопкой.
Автопродление
- Автопродление Premium теперь включается при покупке. Оно и раньше умело списывать с баланса, но флаг по умолчанию стоял выключенным, и подписка просто заканчивалась при полном балансе.
- За три дня до продления, если на балансе не хватает, приходит предупреждение со ссылкой на пополнение. Раньше человек узнавал о нехватке в момент неудачного списания — когда премиум уже отваливался.
Обновление
Команда /rollcall убрана
- Перекличка личного состава удалена: команда, кнопка отметки, планировщик отчётов и обе таблицы в базе.
- Команд у бота стало 40.
Формат ника не придирается к пробелам
- Пробелы вокруг разделителя больше не обязательны: «PD| Alexandr | 197897» и «A |Vanek Zolo | 201240» считаются правильными наравне с «A | Vanek Zolo | 201240».
- Раньше каждый вариант расстановки пробелов приходилось перечислять отдельным форматом, и забытый пробел делал человека нарушителем.
- Пробел между двумя блоками без разделителя по-прежнему обязателен — иначе блоки слились бы в один и правило потеряло смысл.
Значки на карточке — по старшинству
- Значки в профиле выводились в порядке выдачи: должность могла оказаться после «Партнёра» или «Владельца сервера».
- Теперь порядок один и тот же везде — на сайте, в публичном профиле и на карточке из команды /profile: руководство проекта, руководители отделов, сотрудники, затем партнёрство, Premium и владение сервером, в конце достижения.
- 18вт
Сеть серверов: связки и панели ролей
- Появился раздел «Сеть серверов» в панели — настраивают только руководитель проекта и заместитель.
- Связка серверов: назначается главный сервер и подчинённые ему. Как только человек покидает главный — неважно, вышел сам, кикнули или забанили, — бот убирает его со всех подчинённых и пишет об этом в журнал связки.
- С подчинённых именно кикает, а не банит: вернётся на главный — сможет вернуться и в остальные.
- Есть исключения: роли и люди, которых связка не трогает, чтобы первая же чистка не выкинула администрацию.
- Панели ролей между серверами: кнопка на сервере Б проверяет роль на сервере А и выдаёт роль здесь. Настраивается всё — заголовок, текст панели, надпись на кнопке, набор ролей-условий («любая» или «все») и ответы бота при успехе и отказе своими словами.
- Панель можно опубликовать в канал прямо из панели управления; повторная публикация правит то же сообщение, а не плодит новые.
Бункер: комната больше не застревает с ботом-ведущим
- 17пн
Защита от @everyone: один пинг — одно наказание
Правило «Пинг @everyone / @here» записывало одно нарушение три раза: Discord присылает отдельное событие на каждое действие правила автомодерации (блокировка, оповещение, тайм-аут), а у заблокированного сообщения нет id, по которому их можно было бы связать.
На сроке бана это не сказалось — он назначался один, — но в журнале защиты одно происшествие выглядело тремя, а сервер с порогом «3 пинга» наказывал бы за один.
Теперь происшествие узнаётся по серверу, автору и тексту, на котором поймали: сколько бы событий Discord ни прислал, наказание одно.
Генератор достижений
Новая общедоступная страница — echo-assistants.tech/achievement: плашка в духе игровых достижений с вашей подписью.
Меняется заголовок, строка достижения, цвет (золото, изумруд, аметист, лёд, графит) и значок-эмодзи. Картинку можно скачать или взять ссылкой — она рисуется на лету, поэтому в Discord подставляется сама и не требует загрузки файла.
Ширина подгоняется под текст: короткая подпись не болтается в пустой плашке, длинная не обрезается.
Гайды: семь новых статей
Раздел гайдов дополнен модулями, которых в нём не было: их писали до того, как эти функции появились.
Новые статьи: Кадровая система и выговоры, Игры Echo (Мафия, Бункер, Каракули), Музыка, Активность: баллы, задачи и топы, , , .
- 16вс
Обновление
Команда /hr-deploy убрана
Команда
/hr-deployудалена — её заменила кнопка «Опубликовать панель» в разделе «Кадры» на сайте.Панель по-прежнему обновляется сама при сохранении настроек, а если нужно выложить её заново (пост удалили, форум пересоздали) — это делается кнопкой, без захода в Discord.
Главный рубильник — только у руководства проекта
Переключатель «Бот на этом сервере» убран со страницы обзора сервера: администрации он всё равно был виден только как надпись, а место занимал.
Управление переехало туда, где выдаётся Premium — в раздел «Серверы проекта» (Штаб → Разработка). Там весь список серверов Echo: главный рубильник, Premium и автобэкапы в одной таблице.
Доступ расширен: раньше это мог только разработчик, теперь — руководитель проекта и заместитель. Выдача значков осталась за разработчиком.
Данные ушедших серверов удаляются через месяц
Если бота убрали с сервера, его данные хранятся ещё 30 дней и затем удаляются полностью — настройки, логи, кадры, экономика.
Месяц отсрочки не случаен: сервер часто возвращают — перепутали, чистили роли, потеряли права. Вернули бота раньше — отсчёт отменяется, ничего не теряется. В списке серверов у таких строк видно, сколько дней осталось.
Мониторинг серверов: тройка лидеров и липкий поиск
Страница каталога стала удобнее:
Обновление
Защита от @everyone и @here
В «Защите» появилось правило «Пинг @everyone / @here». Кто дёрнул всех — сообщение удаляется, а нарушитель получает наказание, которое вы выберете.
Наказание на срок. У правил защиты новое действие «Забанить на срок»: рядом указываете дни (по умолчанию 3), бот сам снимает бан, когда время вышло. «Забанить навсегда» осталось отдельным пунктом. Срок по умолчанию задаётся один раз в настройках защиты.
Кнопка «Поставить правило в Discord». Ставит правило автомодерации Discord на слова @everyone и @here: сообщение с пингом просто не публикуется — звонить он ни у кого не будет. Echo ловит срабатывание и наказывает автора по вашему правилу. Кнопка на странице «Защита», рядом с правилами; исключения берутся из белого списка защиты, оповещения — в канал журнала защиты.
Правило работает и с автомодерацией, заведённой раньше вручную. По умолчанию всё выключено — включается на странице «Защита».
Поддержка видит настройки сервера
Сотрудники отдела поддержки теперь могут открыть дашборд любого сервера с Echo — только на просмотр. Разбирать обращение по скриншотам и описаниям на словах больше не нужно.
Менять что-либо в этом режиме нельзя: сохранение, переключатели и удаление закрыты — и в интерфейсе, и на сервере. Сверху страницы висит пометка о режиме просмотра. Настройки правит только администрация сервера.
Кадры: кнопка «Опубликовать панель»
В разделе «Кадры» появилась кнопка «Опубликовать панель» — рядом с заголовком «Общие». Она выкладывает панель заново, ничего не меняя в настройках: пригодится, если пост удалили, форум пересоздали или панель нужна в новом канале заявлений.
- 15сб
Музыка: треки перестают молча пропадать
YouTube примерно в половине случаев отдаёт ссылку на звук, которая тут же отвечает отказом (403) — от этого трек мог молча не заиграть.
Бот и раньше пробовал ещё раз, но узнавал об отказе только через шесть секунд тишины и делал всего три попытки. Теперь отказ виден сразу — повтор уходит через секунду-две, попыток пять, и лишь потом бот ищет ту же песню на SoundCloud.
На слух: меньше пауз перед началом трека и заметно реже «песня пропустилась сама».
Канал с другого сервера больше не слетает
Пикер «🔗 Указать канал на другом сервере» есть почти во всех настройках, но сохранялся такой канал только в логах — в остальных модулях он молча превращался в «— не логировать —».
Теперь чужой канал сохраняется везде: тикеты (журнал событий и транскрипты), приветствия, модерация и автомодерация, защита, ролевые панели, панели действий, анкеты и панели анкет, тесты, состав, смены, голосования.
Бот научился слать в такие каналы во всех этих модулях — раньше часть из них искала канал только на своём сервере.
Исключение — канал-ловушка в защите: она ловит участников этого сервера, поэтому там только свои каналы.
Кадровая система тоже: заявки и журнал HR уходят в канал другого сервера, если он указан.
Надёжность: команды модерации, отставшая вкладка и фон баннера
Разобрали свежие логи бота и сайта и починили всё, что там нашлось.
Команды модерации больше не отваливаются с «приложение не отвечает». У Discord на ответ есть три секунды, а
/warn,/ban,/kick,/mute,/unmuteдо ответа успевали сходить в Discord по нескольку раз: найти участника, выдать наказание, отписать в мод-лог, написать нарушителю в личные сообщения. Все эти запросы стоят в общей очереди ограничений, и ожидания по 4–8 секунд в логах — обычное дело. К моменту ответа окно закрывалось: модератор видел ошибку, хотя наказание было применено, а дело заведено. Теперь такие команды сразу занимают место под ответ и дописывают его, когда работа закончена.Кнопки «заглушить всех» и очистка списков в голосовых каналах — та же причина, то же лечение: заглушка каждого участника отдельный запрос, и в полном канале обход не укладывался в три секунды.
Отказы остались скрытыми. «У тебя нет прав», «роль выше моей» по-прежнему видит только тот, кто нажал.
Кнопка на сайте не пропадает после обновления. Когда сайт выкладывают заново, у открытых вкладок остаётся старый код, и нажатие уходит к действию, которого на сервере уже нет — со стороны кнопка просто перестаёт работать. Плашка «сайт обновился» была и раньше, но появлялась в течение пяти минут, и всё это время можно было жать впустую. Теперь несработавшее нажатие само её показывает — сразу.
Аналитика сервера, заявки на сотрудничество, жалобы в играх
🧰 Под капотом
Это не видно в интерфейсе, но объясняет, почему дальше будет меньше поломок.
- У проекта появились автотесты. Раньше их не было вовсе. Теперь перед каждой выкладкой прогоняются проверки самых хрупких мест: ограничения Discord для панели музыки, доступ к категориям тикетов, подбор замены трека по длительности и вся денежная математика — промокоды, скидки, подписи сумм. Не прошли — выкладки не будет. Проверено на настоящей ошибке: тест на лимит кнопок падает ровно на той панели, которая недавно не отправлялась.
- Правила игр теперь под проверкой. Отдельно проверяются раздача цепочек в «Каракулях» (чтобы человеку не возвращалась его же работа и двое не получали одну цепочку) и условия победы в «Мафии» — включая пограничные: равенство сил, размен до пустого стола, маньяк один на один. Такие ошибки не роняют игру, а тихо заканчивают партию не тем исходом.
- Страница узнаёт, что сайт обновился. Если вкладка была открыта во время выкладки, кнопки в панели переставали работать: браузер отправлял действие старой версии, а сервер такого уже не знал. За сутки набегали сотни таких отказов, и выглядело это как «сайт сломался». Теперь снизу появляется полоска «Сайт обновился» с кнопкой обновления.
- 14пт
Большое обновление: музыка, «Каракули», журналы и надёжность
🎵 Музыка в голосовых
Новый модуль для серверов с Премиумом. Очередь по запросам, панель с кнопками, права и настройки.
Как включить: команда
/music playс названием или ссылкой — либо кнопка «Включить» на панели. Саму панель можно прислать в нужный канал командой/music panel.- Играет с YouTube, YouTube Music и SoundCloud — ссылки, плейлисты и поиск по названию. Ссылки Spotify и Apple Music тоже принимаются: бот читает исполнителя и название и находит запись на площадках выше.
- Панель: пауза, пропуск, стоп, перемешать, повтор, предыдущий трек, «Тише»/«Громче», очередь, очистка. Полоса прогресса идёт сама.
- Выбор из поиска: по названию бот показывает пять вариантов с исполнителем и длительностью — видно, где официальный клип, а где чужая перезаливка.
Разбор логов: убрали лишние запросы к Discord и простой сайта при обновлении
Прошлись по логам бота и сайта и починили всё, что там накопилось.
Реакции больше не дёргают Discord впустую. На каждую реакцию на любом сообщении бот сначала запрашивал само сообщение и только потом смотрел, реакция-роль это вообще или нет. В 99% случаев — нет. Из-за этого он часами стоял в очереди ограничений Discord: 725 запросов, каждый по ~4 секунды ожидания. Теперь сперва дешёвая проверка, запрос — только если панель действительно нашлась.
Роли владельцев и премиума раздаются пачкой. Синхронизация каждые 15 минут спрашивала Discord про каждого владельца по отдельности — под восемьдесят запросов подряд, и бот упирался в ограничения ровно раз в 15 минут, как по часам. Теперь тот же список запрашивается одним запросом мимо этих лимитов.
Сайт больше не падает при обновлении. Сборка стирала рабочую папку прямо под работающим сервером: он умирал, поднимался заново, а вы в это время ловили 500. Так набежало 102 перезапуска. Теперь сборка идёт в отдельную папку и подменяется готовой — проверили на живом деплое: 42 проверки подряд, ни одного сбоя. Если новая сборка не поднимется, автоматически вернётся предыдущая.
Фон авто-баннера переживает перезапуск сайта. Раньше одна неудачная попытка — и баннер рисовался без фона. Теперь три попытки с паузой.
Журнал изменений чистится как обещано. Срок в 31 день выдерживался только на серверах, где продолжают менять настройки; на остальных записи лежали дольше. Теперь чистка идёт раз в сутки по всей базе.
Ещё: логи бота больше не забиваются короткими ожиданиями очереди (полная статистика всё так же собирается), и сайт переведён на новое имя прослойки в Next 16 — чтобы не отвалилось на следующем обновлении фреймворка.