Получить user_id по имея только username в телеграм / get user id by user name

Рейтинг: 0Ответов: 1Опубликовано: 12.08.2023

Мне с сайта на Тильде в телеграм прилетает оповещение, когда заполняют форму. В тексте оповещения есть ник в телеграм. Я могу вытащить из текста ник. Подскажите, что написать в тот же pyrogram или aiogram, чтобы он поискал по нику и нашёл user_id, чтоб я мог от своего имени потом человеку отправить ссылку-приглашение?

п.с. Да, можно на сайт в форму вставить ссылку на телеграм-бота, чтоб не морочиться с этим. Но нельзя так сделать, требования чтоб просто ник оставляли. Не по христиански это, заставлять людей с сайта в телегу и обратно бегать))

Ответы

▲ 0Принят

Вот пример асинхронной функции с использованием библиотеки Pyrogram:

from pyrogram import Client

async def get_tg_id_by_username(username: str):
    async with Client(
        name="my_admin_bot", 
        api_id=GlobalConfig.env("my_admin_id"), 
        api_hash=GlobalConfig.env("my_admin_hash"),
        parse_mode=ParseMode.HTML) as ubot:
        try:
            user = await ubot.get_users(username)
            return {"tg_id": user.id}
        except Exception as err:
            return {"tg_id": None, "error": err}

Чтобы сделать её синхронной нужно убрать все async и await.