Repository navigation
Releases: bruhxax/Link-Bot
Release list
2.8.4 — Компактный статус
2.8.4 — Компактный статус
Обновлена вкладка Админка → Статус в обычной мини-админке.
- Карточки бота, панели, сборки, обновлений и системы стали ниже и плотнее. Данные и действия сохранены.
- Состояние бота, Remnawave и базы данных показывается светящимися точками: зелёной при нормальной работе, красной при потере связи и нейтральной, если данных нет. Световые кольца мягко пульсируют; при включённом системном режиме уменьшения движения анимация отключается.
- Текстовые состояния доступны экранным читалкам и во всплывающей подсказке. Отдельная админка на субдомене сохраняет прежнее представление.
Проверено в обычной мобильной мини-админке на ширине 390 и 320 px, включая состояния работающего и недоступного сервиса. Пройдены тесты JavaScript и Go для мини-приложения, проверка синтаксиса и git diff --check.
Язык и шрифт
- В обычной мини-админке убраны лишние промежутки между четырьмя настройками языка и шрифтов. Высота блока уменьшилась с 510 до 236 px на мобильном экране.
- Убраны нижние карточки предпросмотра шрифтов. Поля и сохранение настроек работают как прежде.
- Проверено на ширине 390 и 320 px, пройдены тесты JavaScript и Go для мини-приложения.
Интеграции
- В обычной мини-админке карточки платёжных систем и служебных интеграций плавно раскрываются и сворачиваются. Стрелка и содержимое анимируются вместе с высотой карточки.
- При открытии другой карточки страница не пересоздаётся, введённые значения сохраняются. Содержимое закрытых карточек загружается при первом открытии; выпадающие списки внутри них работают.
- При системном ограничении анимации переходы отключаются. Проверены YooKassa, Platega, PayHot, P2P и служебная карточка на мобильном экране.
Мой налог
- Показатели чеков «В журнале», «Создано» и «Требуют внимания» отображаются отдельными компактными карточками в обычной мини-админке.
Редактор контента
- Убраны длинные пояснения о закреплённом сообщении, его предпросмотр оформлен отдельной карточкой.
- Раскрывающиеся настройки получили скруглённые карточки, стрелки и плавную анимацию.
Оформление
- Предпросмотр фонов использует реальные слои и движки Mini App, включая собственный фон и видео.
- Убраны лишние пояснения, миниатюры нижнего меню стали компактнее, поля цвета выровнены.
- Шаблоны цветов убраны в раскрывающуюся карточку с анимацией.
Пользователи
- Показатели баланса, приглашений, покупок и пробных подписок оформлены компактными карточками.
- Вкладки подписок занимают ширину экрана в зависимости от их количества.
- Действия с подпиской собраны в анимированной раскрывающейся карточке.
- Кнопка истории использует общую иконку обновления; переключатель удаления подписки расположен справа.
Исправления вкладки пользователя
- Исправлен переключатель удаления подписки при блокировке.
- Блок изменения подписки расположен перед балансом; кнопка списания — перед пополнением.
- Убран значок рядом с заголовком истории действий.
Оформление торрентов
- Убраны декоративные иконки из карточек отчётов, показателей и уведомлений.
- Стрелка подключения и кнопка обновления используют иконки Mini App.
- Добавлена анимация раскрытия подключения к Remnawave, выровнен фон строки поиска.
2.8.3 — Абузы в админке
2.8.3 — Абузы в админке
Добавлена отдельная вкладка Админка → Абузы с компактными карточками, плавным раскрытием, сводкой, поиском и фильтрами «Шаринг» и «Триалы».
- Возможный шаринг: бот запрашивает снимок IP в Remnawave и показывает случаи, когда уникальных IP больше лимита устройств подписки. В раскрытой карточке видны все IP, ноды и время последнего появления.
- Повторный триал: совпадающий HWID на двух и более пробных подписках отображается вместе со списком этих подписок. В раскрытой карточке видны HWID и все найденные совпадения.
- Действия: «Заблокировать», «Отозвать подписку», а для повторного триала — «Отозвать последнюю подписку» и «Отозвать все подписки». Перед действием требуется подтверждение. Используются действующие операции блокировки и удаления доступа; автоматических блокировок нет.
- Добавлено отдельное право администратора Абузы. Кнопки блокировки и отзыва дополнительно требуют прав
users.blockиusers.subscription. - Проверка выполняется в фоне, обновляется каждые 5 минут. Ошибки и неполные данные показываются на экране.
Для получения IP токен Remnawave должен иметь доступ к API подключений (connections:by-user и connections:by-user-result в 3.x; соответствующие права IP control в 2.x), а для HWID — к списку устройств. Проверяются подписки, связанные с ботом и существующие в панели. IP могут меняться без шаринга; повторный HWID — повод для проверки, а не автоматический приговор. Удалённые ранее пробные подписки без зарегистрированного HWID не восстанавливаются из истории.
Проверено: полный набор тестов Go и JavaScript, сборка админки и Linux amd64, локальный предпросмотр интерфейса. Реальные аккаунты и подписки не блокировались.
Исправление интерфейса
- Убраны повторный верхний текст и кнопки обновления. Сводка сокращена до «Всего», «Шаринг» и «Триал» без иконок и лишних подписей.
- Поиск и фильтры занимают всю ширину, карточки стали компактнее и повторяют стиль мини-админки. Декоративные иконки случаев удалены; детали IP и HWID раскрываются плавно.
- Поиск и раскрытие больше не пересоздают всю вкладку. Содержимое закрытых карточек создаётся только при открытии, фоновый опрос не перерисовывает неизменившийся список — прокрутка стала плавнее.
- Проверены мобильный предпросмотр, раскрытие, поиск, тесты Go и JavaScript и сборка админки.
Исправление обычной мини-админки
- Проверена обычная мобильная мини-админка с нижней навигацией и списком из 40 случаев.
- Поиск использует существующую SVG-иконку бота; ввод фильтрует карточки один раз за кадр и не пересоздаёт страницу.
- Вместо «Подробнее» показана штатная стрелка раскрытия; рядом с числом указано, что посчитано: подписки или IP.
- Закрытые карточки пропускают лишнюю отрисовку при прокрутке. Проверены поиск, раскрытие и конец длинного списка.
- Пройдены 386 тестов JavaScript, тесты Go для мини-приложения и проверка синтаксиса.
2.8.2 — Торренты в админке
2.8.2 — Торренты в админке
В релиз 2.8.2 добавлена отдельная вкладка Админка → Торренты для отчётов Torrent Blocker из Remnawave. Это обновление существующего релиза и тега 2.8.2.
Улучшение интерфейса: убран повторный верхний блок, подключение к Remnawave перенесено под карточки сводки, вкладки «Отчёты» и «Уведомления» занимают всю ширину, иконка совпадает с мини-админкой. Уведомления и переключатели сохраняются автоматически после изменения; редактор показывает состояние сохранения и ошибки проверки.
- Общая лента с карточками отчётов: пользователь панели, нода, IP, результат, срок и время снятия блокировки. Есть сводка, поиск по пользователю, ноде, IP и UUID, фильтры активных, завершённых и неприменённых блокировок, постраничная загрузка и переход к связанному аккаунту.
- Отдельное право администратора Торренты. Ссылка на аккаунт доступна только при дополнительном праве просмотра пользователей.
- Два независимых редактора Telegram HTML с переключателями, переменными и предпросмотром. Пользователь получает уведомление о действующей блокировке с нодой и сроком; владелец — подробности отчёта, включая IP. Переменные:
{node},{duration},{unblock_at},{time},{username},{status}; в шаблоне владельца также{ip}и{user_uuid}. - Подписанный
torrent_blocker.reportпринимается на/api/remnawave/webhook. Правила, длительность и снятие блокировки IP задаёт плагин Remnawave; Link-Bot сохраняет его отчёт и отправляет уведомления. Приblocked=falseотчёт виден в ленте и владельцу, но пользователь не получает сообщения о блокировке. - Отчёты и отметки доставки сохраняются в базе. Повторные вебхуки после перезапуска не дублируют успешные уведомления; временная ошибка одного получателя не повторяет сообщение другому. Старая история связанных пользователей переносится в общую ленту миграцией 72. Непривязанные старые отчёты восстановить нельзя, поскольку предыдущая версия их не сохраняла.
- Сохранены фильтр Торренты в истории действий пользователя и защита вебхука HMAC-SHA256.
Включение
- Обновите Link-Bot:
cd /opt/Link-Bot && bash ./update.sh. Миграции 71 и 72 применятся при запуске. - В
.envLink-Bot задайтеREMNAWAVE_WEBHOOK_SECRETдлиной не менее 32 символов. В Remnawave задайте тот же секрет вWEBHOOK_SECRET_HEADER, включитеWEBHOOK_ENABLED=trueи укажитеWEBHOOK_URL=https://ВАШ_ДОМЕН/api/remnawave/webhook. - В Remnawave 2.7.0+ включите Torrent Blocker на нужных нодах и событие
torrent_blocker.reportдля webhook-канала. Если webhook уже настроен для событий входа, URL и секрет сохраняются. - Откройте Админка → Торренты → Уведомления, проверьте тексты и переключатели. Владелец и пользователи должны начать чат с ботом, чтобы получать сообщения.
Проверено: тесты Go и JavaScript, миграция с откатом на изолированной PGlite, сборка Linux amd64, интерфейс на экранах компьютера и телефона. Отправка Telegram проверена имитацией API; реальные сообщения и блокировки не запускались.
2.8.1 — Исправление Platega и защита от повторных начислений
Исправлена обработка новых статусов Platega и усилена защита от повторной выдачи покупки.
DISPUTEDпринимается без отмены уже выданной услуги и без сброса отметки об оплате. ПовторныйCONFIRMEDпосле завершения спора не начисляет подписку, подарок, устройства или трафик повторно.PARTIALLY_REFUNDEDи события подписок не запускают выдачу покупки.CANCELEDиCHARGEBACKEDотменяют только ещё не исполненные покупки; ранее выданная услуга автоматически не отзывается.- Запоздавший вебхук отмены больше не может перезаписать оплаченное состояние: условие проверяется атомарно в базе. Сохранённый
paid_atтакже защищает от повторной выдачи, если статус покупки ранее был перезаписан. - Сохранены проверка
X-MerchantId/X-Secret, поиск покупки по ID транзакции и существующая блокировка исполнения между экземплярами бота. Добавлена проверка наличия ID транзакции.
Проверено: полный набор Go-тестов, отдельный интеграционный тест на изолированной базе PGlite со всеми миграциями, цепочки повторных статусов и запоздавшая отмена, сборка Linux amd64. Реальные платежи не выполнялись.
Новых настроек и миграций не требуется. Для обновления существующей установки:
cd /opt/Link-Bot
bash ./update.shПротокол Platega: https://docs.platega.io/disputed-46157462e0 и https://docs.platega.io/confirmed-29209725e0.
2.8.0 — Опросы, Лавешка и улучшения кабинета
Исправлены переключатели и анимации рассылок
- Переход между сообщением и опросом проигрывается один раз; загрузка результатов и автосохранение больше не перезапускают его.
- Переключатели сохраняют последнее выбранное состояние при быстрых нажатиях и медленных ответах сервера, включая выключение таймера во время его сохранения.
- Обновление редактора сохраняет подключённые элементы управления: нажатия, фокус, раскрытые сквады и открытые списки выбора не теряются при фоновом сохранении.
- Повторное раскрытие плавно продолжается от текущей высоты без наложения анимаций. Исправления применены в обеих админках.
Проверено: 371 JavaScript-тест, Go-тесты Mini App и cmd/app, сборка интерфейса и Linux amd64. Браузерные проверки воспроизводят задержку сохранения, быстрое включение и выключение, ответ между нажатием и отпусканием кнопки, управление клавиатурой, выбор в открытом списке и подтверждение отправки. Реальные рассылки не запускались.
Плавные карточки и сообщения опросов из Telegram
- «Кому отправлять» свёрнуто в компактную строку с переключателем. Настройки раскрываются плавно; выбранные фильтры сохраняются при сворачивании.
- Добавлены плавное появление и изменение высоты вопросов, вариантов ответа, кнопок сообщения, таймера, автоответа и результатов. Учитывается системное уменьшение движения.
- Приглашение, вопросы и завершение опроса редактируются сообщением в чате бота. Сохраняются стили Telegram, ссылки, цитаты, спойлеры и premium emoji; в админке отображается оформленный пузырь с кнопкой замены на всю ширину.
- Незавершённый опрос сохраняется автоматически. Ожидание ввода переживает перезапуск; отмена сохраняет прежний текст. При возвращении открывается нужный вопрос.
Проверено: 369 JavaScript-тестов, Go-тесты рассылок, Mini App и cmd/app, интеграционные проверки на локальной базе с имитацией Telegram, сборка интерфейса и Linux amd64. В браузере проверены обе админки, раскрытие и сворачивание, сохранение фильтров, ввод и отмена сообщений, обновление предпросмотра и ширины 320–1440 px. Реальные рассылки при проверке не запускались.
Из русского и английского README удалены подробные описания отдельных функций.
Автосохранение рассылок и карточки вопросов
- У каждого вопроса появилась отдельная оболочка и тонкая стрелка, как у списков выбора. Открытие и закрытие плавно поворачивает стрелку без пересоздания заголовка.
- Поле названия опроса убрано из редактора; в списке результатов используется дата отправки.
- Убраны кнопки ручного сохранения кнопок сообщения, опроса, автоответа, письма и аудитории. Настройки сохраняются автоматически после короткой паузы при вводе; количество получателей пересчитывается после изменения фильтров.
- Запросы сохранения выполняются последовательно. Запоздавший ответ не заменяет более новый текст, выбор аудитории или настройки. Повторный уход из неизменённого поля не создаёт лишнее сохранение.
- Предпросмотр и подтверждение отправки дожидаются сохранения. При ошибке введённые изменения остаются в редакторе, отправка не запускается; обязательные поля проверяются до сохранения и отправки.
- Кнопка «Заменить сообщение» занимает всю ширину карточки. Изменения действуют во встроенном редакторе и отдельной админке.
Проверка: 368 JavaScript-тестов, включая 9 проверок очереди автосохранения, Go-тесты Mini App и cmd/app, сборка интерфейса и Linux amd64. В браузере с тестовым API проверены сохранение опроса, кнопок, фильтров и числа получателей, таймера, автоответа и письма; задержки и ошибки ответов, повторная загрузка, сохранение фокуса и блокировка подтверждения при ошибке. Карточки вопросов и стрелки проверены на ширинах 320–1440 px с рамками и без них, в обычном и стеклянном оформлении; отдельно проверена веб-админка.
Тонкие стрелки выпадающих списков
- Справа у списков выбора добавлены тонкие стрелки с плавным поворотом при открытии и закрытии.
- Стрелки рисуются как отдельные иконки и больше не пропадают при отключении рамок. Цвет берётся из настройки иконок.
- Общий вид применён к спискам языка, шрифтов, рассылок, тарифов и других настроек, а также стандартным спискам отдельной админки.
- При системной настройке уменьшения анимации поворот происходит без движения.
Проверка: 359 JavaScript-тестов, Go-тесты Mini App и cmd/app, сборка интерфейса и Linux amd64. В браузере проверены 120 индикаторов на ширинах 320–1440 px с рамками и без них, в обычном и стеклянном оформлении. Проверены открытие и закрытие, выбор с клавиатуры, уменьшение движения и нативный список отдельной админки.
Обновлён редактор рассылок
- Сообщение отображается в отдельном пузыре внутри карточки. Кнопка замены увеличена и расположена справа.
- «Кнопки сообщения» и «Кнопки завершения» вынесены в отдельные, постоянно видимые карточки. Раскрывающееся действие убрано; добавление и редактирование доступны сразу.
- У полей сообщения, опроса, получателей, таймера и автоответа единые размеры, скругления и отступы. Обновлены поля и кнопки почтового редактора.
- Исправлен конфликт локальных стилей с настройкой «Показывать рамки»: при отключении рамки скрыты у полей, кнопок и переключателей, включая раскрытые настройки и стеклянное оформление. Переключатели сохраняют различимые фон и положение бегунка.
- «Предпросмотр» и «Отправить» увеличены до 46 px. Отправка выделена акцентным цветом с автоматически подобранным контрастным текстом; на узком экране действия располагаются вертикально.
- Тот же редактор сообщения и опроса используется в отдельной админке.
Проверка: 359 JavaScript-тестов, Go-тесты Mini App и cmd/app, сборка интерфейса и Linux amd64. Локально проверены 32 сочетания ширины, типа сообщения, видимости рамок и материала; 16 раскладок почтового редактора и 4 раскладки отдельной админки. Проверены добавление, изменение и удаление кнопок, раскрытые настройки, отсутствие переполнения и наложения карточек, а также окно подтверждения отправки.
Исправлено оформление админки
- Из главного меню убраны «Обращения», «Список нод», «Вознаграждение за отзыв» и «Отзывы» из блока «Другие действия».
- Цвет обычных рамок применяется и к стеклянному оформлению. Цвет выделения настраивается отдельно; настройка видимости рамок продолжает работать.
- Убраны лишние подложки и рамки у строк переключателей, сквадов и разрешений. У Push-уведомлений восстановлена такая же оболочка, как у остальных пунктов меню.
- Сокращено пояснение личного управления устройствами. Категории «Бот» и «Профиль» оформлены отдельными карточками с разделителями, без номеров.
- Между группами цветов добавлены отступы; карточки больше не сливаются.
Проверка: 359 JavaScript-тестов, Go-тесты Mini App, сборка интерфейса и Linux amd64. Локально проверены 160 сочетаний раздела, ширины 320–1440 px и материала, ещё 20 раскладок отдельной админки. Проверены смена цвета рамок, независимое выделение, скрытие рамок, оболочка Push и отсутствие лишних подложек у сквадов.
Компактный интерфейс рассылок и опросов
- В Telegram оставлены две вкладки: Сообщение и Опрос. Блок Ответы на опросы находится под отправкой опроса и загружается автоматически.
- Между карточками заданы стабильные зазоры. Поля и кнопки отличаются от фона карточек, в том числе при одинаковых цветах в настройках темы и выключенных рамках.
- Убраны декоративные номера карточек и вопросов, счётчик вопросов и повторяющиеся подписи каждого варианта ответа. Строки вариантов стали компактнее; доступные подписи для экранных дикторов сохранены.
- Название опроса и кнопка начала расположены рядом. Финальные кнопки находятся внутри карточки завершения, кнопки обычной рассылки — внутри сообщения.
- Временная рассылка и автоответ показываются сразу отдельными компактными строками. Общий раскрывающийся блок дополнительных настроек удалён.
- Убран текст «Проверьте предпросмотр. Перед отправкой покажем получателей и запросим подтверждение.». Кнопка отправки помещается в одну строку; очистка черновика перенесена в иконку с подписью.
- Сохранены независимые тексты и кнопки сообщения и опроса, предпросмотр в Telegram и подтверждение с числом получателей.
Проверка: 359 тестов интерфейса, тесты Mini App и сборка Linux amd64. Проверены скриншоты мобильного интерфейса на ширине 320 и 390 px, открытые настройки, варианты ответов, результаты внутри опроса и веб-панель администратора.
Опросы в Telegram-рассылках
- Добавлен компактный редактор опроса в Рассылки → Telegram: название, кнопка начала, вопросы с вариантами ответов и финальный текст. Вопросы и завершение поддерживают обычный текст и Telegram HTML.
- Получатель получает одно приглашение. Кнопка начала, ответы на вопросы и завершение меняют это же сообщение — новые сообщения на каждом шаге не отправляются.
- Кнопки завершения опроса настраиваются отдельно от кнопок обычной рассылки: ссылка, промокод, поддержка и другие существующие действия. Автоматическая выдача подписки за прохождение не включается; вознаграждение можно настроить финальной кнопкой с промокодом.
- В разделе Ответы доступны доставленные приглашения, начатые и завершённые опросы, сводка по вариантам и ответы конкретных пользователей с постраничной загрузкой.
- Предпросмотр можно пройти в боте; он не попадает в результаты. Отправленные вопросы сохраняются отдельно от черновика, поэтому дальнейшее редактирование их не меняет. Прогресс и ответы переживают перезапуск; повторные клики не записывают ответ второй раз.
- Настройки опроса сохраняются в шаблоне рассылки. Поддерживаются до 64 вопросов и до 100 вариантов в вопросе; приглашение должно быть текстовым, без вложений. Временная рассылка удаляет ту же копию сообщения по настроенному сроку.
Проверка: 351 тест интерфейса, общий прогон Go, сборка админки и Linux, все 70 миграций на новой базе. На отдельной базе и имитации Telegram проверены редактирование одного сообщения, ошибка Telegram, повторные клики, перезапуск, неизменность отправленного...
2.7.9 — Подарки с баланса
В разделе «Подарить» теперь можно оплатить подписку другому пользователю внутренним балансом.
- Выбор: «Подарить → Способ оплаты → Баланс». Используется существующая настройка покупок с баланса в разделе «Рефералы и баланс».
- До оплаты видны остаток баланса и сумма к списанию. При нехватке средств показана точная недостающая сумма, включая копейки.
- Поддерживаются промокоды; цена и доступность оплаты обновляются при изменении скидки. Исправлено сохранение данных промокода при покупке подарка.
- Средства списываются с отправителя, подписка выдаётся получателю. Если получатель ещё не заходил в бот, подарок ожидает его входа.
- Повторное нажатие во время оплаты не отправляет второй запрос. При ошибке выдачи до подтверждения покупки используется возврат на баланс отправителя.
Проверка: полный набор Go-тестов, 323 JavaScript-теста, сборка интерфейса и Linux amd64. Мобильный интерфейс проверен локально; реальные списания при проверке не выполнялись.
2.7.8 — Документы на лендинге
Внизу лендинга добавлены две небольшие кнопки: «Пользовательское соглашение» и «Политика конфиденциальности».
- Документы открываются прямо на лендинге без авторизации: на телефоне — во весь экран, на ПК — в окне поверх страницы.
- Показывается полный текст: разделы, списки, контакты и подпись документа.
- Тексты берутся из Редактор контента → Кабинет → Политика / Соглашение. Стандартные тексты используются из общего с кабинетом источника; бренд и контакты подставляются из настроек.
- Выход через «Назад», крестик, Esc и кнопку «Назад» браузера. Прокрутка лендинга и фокус возвращаются к прежнему месту.
- Поддерживаются прямые ссылки
/#termsи/#privacy, цвета лендинга, стекло, отключение рамок и уменьшение анимации.
Проверено: Go-тесты проекта, 11 проверок JavaScript, сборка Linux/amd64 и визуальная проверка в браузере на широком экране и при ширине 390 px. Тесты проверяют полные длинные документы, HTML-экранирование, навигацию, возврат фокуса и обновление текста без сброса прокрутки. Стандартные тексты документов перенесены в общий модуль без изменения содержания.
Обновление:
cd /opt/Link-Bot && bash ./update.shИсправление переключателей в админке и кабинете
- Убраны оставшиеся квадратные галочки и отдельно появляющиеся кружки в интеграциях и «Мой налог»: дорожка и бегунок теперь всегда относятся к одному элементу.
- Скрытые служебные поля готовых переключателей больше не получают второй бегунок. Сохраняются управление с клавиатуры, фокус и отключённое состояние.
- Колонки выбора в таблицах и место под переключатель в меню столбцов увеличены, чтобы он полностью помещался. Частичный выбор и выбор всех строк продолжают работать.
- Проверены обе версии админки на телефоне и ПК; прошли 99 проверок JavaScript, Go-тесты проекта и сборка Linux/amd64.
Анимации текста и три карточки оплаты
- Вертикальная прокрутка используется для изменившихся цифр цены, выбранного тарифа в блоке оплаты и при смене языка интерфейса. Остальные названия, статусы, даты, трафик и прочие надписи плавно появляются за 180 мс.
- Буквы и цифры двигаются только по вертикали. Убрана анимация ширины, создававшая движение слева направо; быстрые переключения сохраняют последний текст без оставшихся слоёв.
- В тарифах блок оплаты разделён на три близкие карточки: выбранный тариф, способ оплаты, промокод и кнопка оплаты. Промежуток — 4 px; внешние углы — 12 px, внутренние — 8 px.
- Способ оплаты оформлен как в подарках: логотип, небольшая подпись, название и стрелка. Каждый блок поддерживает стекло и настройки оформления.
- Проверены смена тарифа, сохранение введённого промокода и выбор способа оплаты на телефоне и ПК. Прошли 315 проверок JavaScript, Go-тесты проекта и сборка Linux/amd64.
Полировка карточек оплаты
- Внутренние углы между тремя карточками уменьшены до 8 px; внешние углы сохранены. Цвет карточки способа оплаты совпадает с соседними карточками, включая режим стекла.
- Поле промокода видно до ввода: добавлены фон, отступы и цельная внутренняя рамка. При фокусе нет обрезанных полос сверху и снизу; отключение рамок сохраняется.
- Выбранный тариф меняется с той же вертикальной прокруткой, что и цена. Остальные надписи сохраняют простое появление.
- Проверены пустое и заполненное поле, фокус, цвета, стекло и направление анимации на телефоне и ПК. Прошли 316 проверок JavaScript, Go-тесты проекта и сборка Linux/amd64.
- Расстояние между тремя частями блока оплаты уменьшено с 8 до 4 px. Проверено в браузере: оба промежутка составляют 4 px; сборка интерфейса прошла.
2.7.7 — Название тарифа в уведомлениях
В редактор уведомлений об оплате добавлена переменная {{plan_name}} — название тарифа.
Использование
В Редактор контента → Уведомления оплат замените {{sub}} на {{plan_name}} в строке тарифа:
<b>Тариф:</b> <b>{{plan_name}}</b>{{sub}} по-прежнему выводит срок подписки, например «1 месяц». Название берётся из настроек конкретного тарифа по его ID, поэтому тарифы с одинаковым сроком не путаются. Если название не задано или тариф удалён, выводится срок. Для отдельной покупки устройств или трафика пустая строка тарифа скрывается.
Новая переменная работает в обычных уведомлениях и P2P-заявках. Кнопка «Отправить тест» использует один из включённых именованных тарифов, если такой есть. Названия безопасно экранируются для Telegram HTML, а текст вида {{price}} внутри названия не превращается во вложенную переменную. Сохранённый текст уведомления остаётся доступен для редактирования.
Проверено: Go-тесты проекта, синтаксис интерфейса и сборка Linux/amd64. Отдельные проверки покрывают разные тарифы с одинаковым сроком, подарки, дневные и удалённые тарифы, покупки устройств/трафика и тестовый пример.
Обновление:
cd /opt/Link-Bot && bash ./update.sh2.7.6 — Smerch
Добавлена платёжная система Smerch для Telegram и кабинета.
Подключение
- В Админка → Интеграции → Smerch введите рабочий API-ключ
live_…. - Скопируйте показанный Webhook URL в кабинет Smerch, включите webhook и сохраните интеграцию.
- Настройте методы в Тарифы → Способы оплаты → Smerch → карандаш. Для отдельных кнопок СБП и криптовалюты создайте копию Smerch и назначьте каждой её метод.
Секрет вебхука необязателен. Если он уже выдан Smerch, его можно указать в свёрнутом разделе «Дополнительно: подпись вебхука». Обычное сохранение Link-Bot не меняет секрет в Smerch.
Возможности
- Оплата тарифов, подарков, устройств и трафика.
- Копии Smerch с отдельными методами, названиями, описаниями и логотипами в редакторе тарифов.
- Оригинальный логотип, история платежей, финансовая статистика и выбор способов для «Мой налог».
Подтверждение оплаты
- Запросы к API подписываются HMAC v2, суммы передаются целыми копейками.
- Перед выдачей покупки бот обязательно запрашивает транзакцию через защищённый API Smerch и сверяет ID, заказ, сумму, RUB, метод и статус
paid. - Если секрет вебхука сохранён, дополнительно проверяется подпись исходного тела. Неверная или отсутствующая подпись в этом режиме отклоняется.
- Повторные уведомления не начисляют покупку повторно. Тестовые, неполные и возвращённые платежи не выдают подписку. Временные ошибки допускают повторную доставку.
Исправлено в этом же релизе
- Убрано обязательное заполнение webhook secret, отсутствующего в показанной форме кабинета Smerch.
- Убраны дублирующие галочки методов из интеграции. Выбор методов полностью остаётся в существующем редакторе тарифов.
- Сохранённые предыдущей версией настройки интеграции не ограничивают методы, назначенные отдельным копиям Smerch.
- Дополнительный выбор покупателю показывается только если администратор назначил несколько методов одной строке в тарифах. При одном методе он открывается сразу.
Метод должен поддерживать RUB и возвращать payment_url. H2H-реквизиты без ссылки и рекурренты не входят в эту интеграцию. Подробнее: инструкция, документация Smerch.
Проверено: Go-тесты проекта, проверки интерфейса оплаты и сборка Linux/amd64. Создание и подтверждение платежей проверены на локальном HTTP-стенде; реальный платёж без ключей мерчанта не проводился.
Обновление:
cd /opt/Link-Bot && bash ./update.sh2.7.5 — Свои логотипы платёжных способов
Добавлено
- Смена логотипа платёжки в том же окне, где редактируются её название, описание и методы оплаты: Тарифы → Способы оплаты → карандаш.
- Загрузка изображения файлом PNG, JPG или WebP до 2 МБ, либо установка HTTPS-ссылки с предпросмотром.
- Кнопка корзины скрывает логотип, кнопка «Стандартный» возвращает исходный логотип платёжной системы.
- Логотипы настраиваются независимо для каждой платёжки и её копий; отображаются при выборе и оформлении оплаты, включая подарки и дополнительные пакеты.
Поведение
- «Готово» применяет изменения в черновик тарифов; затем нужно сохранить настройки. «Отмена» оставляет прежний логотип.
- Загруженные файлы находятся в постоянном хранилище uploads и сохраняются при обновлении бота.
- Загрузка доступна владельцу и администраторам с правом редактирования тарифов. Бот проверяет формат, размер и размеры изображения; небезопасные ссылки не сохраняются.
- Внешние изображения загружает браузер. Если свой логотип недоступен, в оплате показывается стандартный.
Проверено
- Тесты Go: загрузка и выдача файлов, права доступа, валидация ссылок, сохранение и независимость копий.
- Все 302 проверки JavaScript и сборка админки.
- Предпросмотр, скрытие и восстановление логотипа на экранах 390 и 1280 px, в кабинете и полной админке.
Основной бот на VPS не обновлялся.
Исправлено: обновление с локальными настройками
- Кнопка обновления больше не блокирует установку только из-за локальных изменений
docker-compose.yamlиCaddyfile. Обычная командаbash ./update.shиспользует ту же обработку настроек. - Перед обновлением сохраняются закрытые резервные копии в
.git/link-bot-update-backups/. Неконфликтующие изменения объединяются с новой версией; Compose проверяется до применения, синтаксис Caddyfile проверяется через работающий Caddy. - При конфликте или ошибке проверки рабочие файлы остаются на месте, перезапуск бота не начинается. Если Git не смог выполнить fast-forward, локальные настройки возвращаются из резервной копии.
.envи незарегистрированные пользовательские файлы сохраняются. Изменения исходников и подготовленные правки Git требуют ручной проверки.- После ручного обновления сервис Mini App перезапускается с новым кодом. Если установка запущена из самого сервиса, он не прерывает свою задачу.
Для подключения исправления к ранее установленной версии один раз выполните обычное обновление:
cd /opt/Link-Bot && bash ./update.shДальше обновление доступно через Mini App с сохранением локальных настроек. Новый тег и релиз не создавались: исправление входит в 2.7.5.
Проверено: тесты Go, сборка сервиса для Linux и 10 сценариев с настоящими временными Git-репозиториями — объединение настроек, конфликты, отказ проверок, сохранение файлов, повторный запуск и перезапуск сервиса. Docker и systemd в этих сценариях заменены тестовыми командами; на основном VPS исправление не устанавливалось.
Исправление загрузки фонов
- Исправлена загрузка файлов больше 2 МБ в Docker-образе бота: обработка больше не требует системной временной папки. Поддерживаемые изображения, GIF и видео загружаются напрямую в пределах прежнего лимита 50 МБ.
- Ошибки чтения и повреждённого запроса больше не маскируются сообщением о превышении 50 МБ. Для фактического превышения размера возвращается отдельная ошибка.
- Если ссылка ведёт на HTML-страницу сервиса обмена, вместо файла, показывается объяснение о необходимости прямой ссылки на изображение или видео.
Проверено: воспроизведение исходной ошибки без системной временной папки; WebM 3 733 315 байт, MP4 24 381 533 байта, GIF и PNG больше 2 МБ; граница 50 МБ, превышение лимита, повреждённые и дублирующиеся части запроса; тесты пакетов cmd, internal, utils и translations; сборка приложения для Linux/amd64.
Исправление опубликовано в текущем релизе 2.7.5, без нового тега и релиза. Для установки выполните обычное обновление:
cd /opt/Link-Bot && bash ./update.sh