Profile Title Update

Здравствуйте. Хотим уточнить поведение Remnawave по кастомному названию подписки.

В панели в Subscription Settings → Profile Title мы можем вручную указать название с пробелами, кириллицей и emoji, например:
:rocket: Крутой VPN”

Это работает как глобальный profileTitle.

Но нам нужно задавать разное название подписки программно для разных пользователей/ботов. Для этого мы ставим в Subscription Settings → Profile Title значение:
{{TAG}}

Дальше через API/SDK обновляем пользователя и передаём user.tag, например:
tag = “Non VPN”
tag = “Kostetvpn”
tag = “:rocket: Крутой VPN”

Ожидание: profile-title в подписке должен стать значением user.tag.

Фактически Python SDK / DTO UpdateUserRequestDto падает с validation error до выполнения обновления:

1 validation error for UpdateUserRequestDto
tag
String should match pattern ‘[1]+$’

Также для длинных значений:
String should have at most 16 characters

Примеры:
tag=“Non VPN” → ошибка из-за пробела
tag=“Kostetvpn” → ошибка из-за lowercase
tag=“bugsis vpn | Ускоритель Интернета” → ошибка из-за длины/символов

Вопрос:

  1. Это ожидаемое ограничение именно для поля user.tag?
  2. Есть ли другой per-user field/template variable, куда можно записать произвольный title с пробелами, кириллицей и emoji?
  3. Можно ли через API обновлять profileTitle персонально для пользователя, а не глобально?
  4. Если нет, планируется ли расширить user.tag или добавить отдельное поле для display title?

Смотрели код backend:

  • profile-title формируется из settings.profileTitle через TemplateEngine.formatWithUser:
  • {{TAG}} подставляется как user.tag:
  • update/create user DTO используют command schemas: не могу вставить ещё 2 ссылки.

Хотим понять, можно ли штатно сделать per-user/per-bot profile-title с кириллицей, пробелами и emoji через API.


  1. A-Z0-9_ ↩︎

К сожалению не могу подставить ссылки в “Смотрели код backend”.

Создайте разные конфиги страницы подписки для разных ботов. Разным ботам отдайте разные внешние сквады по умолчанию, а в самих внешних сквадах переопределите используемый конфиг страницы подписки.

Добрый день! Речь не про отдельные страницы подписки, а о выводе названия для каждого клиента в самих приложениях (Happ, INCY).

Это реализовано в API, но с ограничениями по какой-то причине. Хотя на сайте можно и на русском и эмодзи ставить и @ ! ) ( и так далее.

Вот пример на фото. На русском выводится такое.

но когда через саму панель ставишь, то всё выводится отлично.

А вот, что при попытке поставить нормальный текст, а не биться в ограничения (пробелы заменяются на _, нельзя @ и так далее).

bot | String should match pattern '^[A-Z0-9_]+$' [type=string_pattern_mismatch, input_value='Non VPN', input_type=str]

Эм

Чистейший client side = closed issue

Внешние сквады к вашим услугам

Если мы используем данный метод, о котором я выше писал, значит нам не подходят внешние сквады. Это уже второе сообщение о внешнем скваде, но оно нам не подходит.

Я думаю, это баг, поэтому сюда и написал. Пожалуйста, давайте без советов “Используйте внешние сквады”. Буду ждать “официального” ответа.

Добра вам :blush:

Бага нет, у поля TAG в объекте пользователя есть строгая валидация.

Внешние сквады созданы как раз именно для этого, не вижу ни одной причины их не использовать.

У вас есть группа пользователей условно говоря от сервиса “Зайчик КВН”, есть вторая группа от сервиса “Песик КВН”.

Вместо того, чтобы в каждого пользователя из обоих сервисов хардкодить название – вы можете с помощью внешнего сквада сразу и красиво сделать переопределение profileTitle сразу для огромной группы пользователей.

О чем речь? Каком сайте?

Поле tag у пользователя никогда не подразумевалось для использования в той ситуации, которую описали вы. У него всегда были ограничения и строгая валидация.

Если вы выше говорили о разделе profile-title в Subscription Settings – там русские буквы и эмоджи можно только из-за того, что панель перед выдачей подписки кодирует значение в base64, потому что согласно RFC – в хедерах не может быть ни эмоджи, ни кириллицы.

У нас франшиза и каждый человек в автоматическом режиме может создать своего бота. Внешний сквад создавать в ручном формате п - это с ума сойти.

Жалко, придётся оставить, как есть.

Почему нельзя при автоматическом создании так же создать внешний сквад, сохранить его в вашу базу данных (привязать к созданному боту), и потом уже при создании пользователей назначить им внешний сквад?

При создании пользователя ведь можно указать внешний сквад.

Или вы хотели на каждого пользователя создавать внешний сквад? В этом вообще смысла нет..

А система выдержит то 10000+ внешних сквадов?

Зачем на каждого пользователя создавать внешний сквад?

Так не на каждого пользователя, а на каждого бота. У нас франшиза открытая будет с созданием бота в один клик. У нас другой проект подобный этому насчитывает 30000+ ботов и не просто зеркал, а именно люди зашли и создали и настроили под себя.

Ладно, жаль, оставляем TAG, спасибо в любом случае. Хотелось бы, конечно, видеть красоту, но не получится.

Ограничений на количество внешний сквадов нет. Однако, на таком количестве тесты не проводились.

Можете попробовать реализовать подобное, если будут проблемы с производительностью или еще с чем – вы в любой момент можете отписаться здесь на форуме, будем смотреть в каких местах могут быть проблемы и при возможности исправлять.

А быть возможно TAG чуть подправить :lying_face: