← все обновления
v6.0.0ядро v6 Ubique

Полный ребилд: кроссплатформа, микросервисы, контейнеры и .NET 10

Шестое ядро под кодовым названием Ubique (от лат. “везде”). Ровно про это релиз, все и везде изменено, улучшено и доработано.

Всё на кнопках

  • Все кнопки, списки и формы теперь построены на интеракшенах Discord. Реакции-кнопки ушли в прошлое: больше никаких «нажми 1️⃣ под сообщением», залипаний и двойных срабатываний.
  • Нажатие проверяет, кто жмёт и где: чужую панель не перелистнёшь, а музыкой управляет только тот, кто сидит в том же войсе.
  • Панели настроек, статуса и почтовых ящиков открываются эфемерно, их видишь только ты.
  • Где нужно ввести текст, открывается форма: приветствие, статус бота, выбор трека из очереди, причина тех. работ.
  • Единая листалка для всех длинных списков: помощь, очередь, инфа о сервере. Одна логика страниц ◀️ ▶️ везде, без перескоков через страницу.

Кроссплатформа

  • Сын живёт в Telegram: @sblngavnabot. Работает он там через собственный мост DTF: команда из Telegram выполняется тем же кодом, что и в Discord, а ответ перерисовывается текстом или картинкой почти один в один с эмбедом.
  • В группах команды пишутся через слэш (/погода Москва), в личке можно просто текстом. Что работает в Telegram, видно по метке Tg в списке команд.
  • /хелп также может сразу отобразить доступные команды.
  • Кнопки Discord превращаются в инлайн-кнопки Telegram и нажимаются так же: погода листается по вкладкам прямо в чате.
  • Telegram-чат привязывается к серверу, а аккаунт к Discord-аккаунту, поэтому команды видят тебя как участника сервера.
  • /инфа в Telegram показывает чат или человека: по @упоминанию, по ответу на сообщение или про тебя самого в личке.

Музыка Audio8

  • Новый музыкальный модуль Audio8 на Lavalink4NET вместо Victoria: быстрее, стабильнее и переписан целиком.
  • Новая панель «сейчас играет» на кнопках: ⏭️ скип, ⏮️ назад, ⏸️ пауза и продолжение, 🔁 повтор, 📜 лист. Кнопка i разворачивает панель с дополнительными действиями, а состояние (пауза, повтор) видно прямо по цвету кнопок.
  • Лист с формой: из очереди можно выбрать трек по номеру, сразу его включить и при желании выкинуть всё, что стоит перед ним.
  • Играй+: если поиск пустой, сын говорит, какой источник отвалился, ищет сразу во всех источниках и предлагает до трёх умных вариантов запроса (раскладка, транслит, обрезки). Выбор кнопками 1️⃣ 2️⃣ 3️⃣.
  • В начало листа: под сообщением «добавлено в очередь» кнопка ставит твой трек следующим, а потом можно сразу скипнуть текущий. Работает, пока трек в очереди, без таймера.
  • Недавние плейлисты сервера (х нед) возвращаются в очередь одной кнопкой.
  • Резерв на yt-dlp: если YouTube отдал трек, но играть не даёт, х резерв достаёт его через наш агент. А если и резерв не справился, теперь честно говорит почему: протухли куки, YouTube просит доказать, что ты не бот, или пора обновить yt-dlp.
  • Источник по умолчанию настраивается на сервер: х источник ютуб | спотик | склауд. Spotify и SoundCloud ищутся напрямую, миксы и радио YouTube грузятся нормально, битые ссылки на плейлисты чинятся сами.
  • Умный шафл (треки одного автора не идут пачкой), фильтры найткор, слоу, 8д, караоке и вибрато и триумфальное возвращение басс буста.
  • Плееры переживают рестарт: очередь, позиция трека, громкость и фильтры сохраняются и восстанавливаются, музыка продолжается с той же секунды.
  • х лавастат расширен дополнительной сервисной информацией.

Картинки

Совершенно новый (старый) модуль, теперь перестроенный на SkiaSharp:

  • х демот заголовок | подпись: демотиватор на картинку, ответ на сообщение с картинкой или аватарку. Без текста выдаёт случайный демотиватор от говорилки.
  • х шфгр: нейросеть находит все лица на картинке и превращает их в шефа, а с @юзер в этого кента.
  • х скан: распознаёт текст на картинке, можно указать рус или енг.
  • х монетка @кент: 3D-монетка с аватарками крутится и решает спор.
  • х обоссать @кент: анимированная гифка, без комментариев.
  • Картинки работают и в личке с ботом =)

Говорилка 2.0

  • Говорилка собирает не только фразы, но и картинки из чата и иногда сама отвечает демотиватором со своей подписью.
  • Генератор цепи Маркова переписан, база переехала в MariaDB: повторы отсеиваются, мусор чистится, упоминания людей вырезаются.
  • Из базы говорилки строится семантическое ядро: самые частые слова и связи между ними живым графом на сайте во вкладке Семантика.

Подсказки вместо пустоты

  • Если команда введена неправильно, сын пишет, что не так («не хватает: <текст>», «ожидал число вместо abc», «не нашёл участника»), как надо и пример.
  • Опечатался в названии или набрал в английской раскладке: «🤔 такой команды нет, может х погода?».
  • У внутренних ошибок появился код, по которому её сразу видно в логах.
  • х памаги показывает команды вместе с аргументами, а все подсказки, справка и список команд на сайте берутся из одной базы.

Настройки, удобства, исправления

  • Настройки на каждый сервер свои. х инфа показывает сводку, а кнопка ⚙️ открывает панель: выбор роли-суперюзера, канала и роли приветствия, канала стримов прямо из списков Discord, текст приветствия через форму. Сброс одним снятием выбора.
  • Роль-суперюзер открывает доступ к настройкам и служебным командам на конкретном сервере.
  • Приветствия: новичок получает сообщение в канале и роль автоматически, роль выдаётся даже без канала приветствий.
  • Twitch: сын пишет в канал стримов сервера, когда отслеживаемый стример выходит в эфир, с превью и ссылкой.
  • Погода переписана: сейчас, 24 часа и 5 дней, переключение кнопками и в Discord, и в Telegram.
  • Статус сына х ст: панель со списками статуса и активности и формой для текста и ссылки стрима. Тот же статус видно в карточке на сайте.
  • Почта х почта @кент <текст>: письмо в личку от имени сына, можно анонимно (анон) и с вложениями, а получатель может ответить прямо на письмо.
  • Ротация карт Apex х карты, курсы и крипта, рецепты, шутки, гонки и сапёр переведены на общие хелперы и работают стабильнее.
  • Убраны мусорные команды которые выводили только картинку…
  • Слэш-команды больше не двоятся.

Портал

  • sbln.portal переписан с нуля: история всех версий с первой, таймлайн по ядрам, живой статус сына в карточке Discord, общие лайки (тысяча кликов всё ещё ШЕФ).
  • База знаний: как всё устроено и как этим пользоваться, плюс справочник команд прямо из бота.

Экосистема Lois Media

Этим пользуемся только мы, но рассказать стоит, тут половина работы релиза.

  • R-WATCHER: дозор за нодами Remnawave. Регулярно проверяет ноды и клиентские порты по TCP, TLS и QUIC (включая Reality), следит за сроками сертификатов и шлёт алерты в Telegram, когда нода падает и когда поднимается.
  • рв: панель управления нодами на кнопках. Выбор ноды из списка, рестарт одной или всех, тех. работы с причиной через форму и снятие одной кнопкой «Работы завершены».
  • рв диаг: диагностика одной карточкой: API, бэкенд, упавшие ноды, проблемные порты и падения за сутки с простоем.
  • ragent: агент на нодах, рв рагент управляет им из Discord. Показывает диск, сканирует SNI и подбирает лучший домен, чистит место кнопкой, а заодно держит музыкальный резерв на yt-dlp с cookies, через который х резерв достаёт треки.
  • Печкин (PPM): собственная временная или постоянная доменная почта. х печкин открывает панель ящиков: создать временный на 15 минут или постоянный, открыть инбокс, обновить и удалить кнопками. Письма видишь только ты, лимиты на временные ящики в сутки и на постоянные защищают от спама.
  • Книжный клуб: получил новый внешний вид системы оценивания с динамической формой.
  • Говорилка получила единую админку говор и свою БД.

Под капотом

  • Пул воркеров. На старте сын сразу поднимает прогретый пул рабочих потоков, не меньше 32 и по 8 на каждое ядро процессора. Обычно .NET добавляет потоки по одному-два в секунду, и при наплыве команд всё ждало бы разгона. Теперь воркеры уже стоят наготове и подхватывают команды мгновенно.
  • Все команды и кнопки асинхронные. Каждая уходит своему воркеру и выполняется независимо, без общей очереди. Пока у кого-то качается трек, рисуется демотиватор или грузится погода, остальные получают ответ сразу, а одна зависшая команда больше не тормозит бота целиком.
  • Порядок там, где он нужен. У каждого сервера свой замок на плеер: команды одного сервера выполняются по очереди и не ломают друг другу очередь треков, а разные серверы друг друга не ждут вообще.
  • Тяжёлое под контролем. Картинки рендерятся не больше двух одновременно, yt-dlp на агенте работает в двух потоках, поэтому даже лавина команд не кладёт сервер.
  • Всё в едином контейнере: .NET 10, ffmpeg для звука, Tesseract для распознавания текста, нейросеть для поиска лиц, отдельно живёт только Lavalink.
  • Версии собираются автоматически из git-тегов: номер теперь честно читается как ядро.фича.фикс.
  • Новая структура ядра: все сервисы через DI, аккуратный запуск и остановка, сын не стартует без базы и честно об этом говорит.
  • Один конфиг вместо зоопарка с автосинхронизацией, общие хелперы вместо повторов, уборка кода по всему проекту.
  • Общий обработчик ошибок для команд, кнопок и Telegram.

Спасибо всем, кто пользовался сыном последние 5 лет, смеялся, ловил баги и наслаждался его музыкой. Надеюсь, Ubique понравится ещё больше.

infrafeaturemusicfun