Токен из бота в Mini App передавать вообще не нужно. У Mini App уже есть подписанные данные о том, кто её открыл, и права на комнату проще проверять по ним на сервере.
Как это обычно делается:
1. Когда пользователь открывает Mini App, на фронте есть строка Telegram.WebApp.initData. В ней user.id, auth_date и hash. Подписана она токеном бота, подделать её без токена нельзя.
2. Фронт отправляет initData на ваш сервер, например первым сообщением в WebSocket или в заголовке при подключении.
3. Сервер проверяет подпись по алгоритму из документации (раздел «Validating data received via the Mini App»): HMAC-SHA256 с ключом, выведенным из токена бота. Заодно проверьте auth_date, чтобы старые initData нельзя было переиграть. Например, не старше часа.
4. В момент /new_room бот уже знает message.from_user.id. Сохраните на сервере связку room_id → owner_id. Когда этот же пользователь откроет Mini App, сервер увидит его user.id в проверенной initData и сам выдаст ему права владельца, а остальным — права участника.
Тогда в ссылке остаётся только room_id, и ничего секретного в ней нет. Ссылку можно спокойно пересылать: владельцем станет только тот, чей Telegram-id совпадает.
Если всё же нужна именно ссылка «с правами» (например, создатель хочет назначить второго модератора), положите в startapp-параметр не сам токен, а одноразовый короткоживущий код. Сервер обменивает его на права один раз, после чего код сгорает. Даже если ссылка утечёт позже, по ней уже ничего не сделать.