Можно через бота, для этого пользователь с сайта должен приконнектиться к Телеграм.
В базе данных для пользователя добавить два столбца, telegram_hash, telegram_id.
Когда пользователь пытается приконнектиться, создавать уникальный хеш, после чего открывать окно коннекта, у меня через javascript и на Laravel так:
window.open('https://t.me/{{ config('telegram.bots.mybot.username') }}?start={{ $hash }}', 'telegram', 'left=0,top=0,height=500,width=600');
Когда бот пришлёт ответ с хешем, сверять его с пользователем, и пользователю присвоить id Телеграма.