• Telegram API (Client): Как получить ID чата/канала по ссылке-приглашению или титлу?

    @master_clown Автор вопроса
    Отлично, я нашёл решение.

    Пример пригласительной ссылки: https://t.me/joinchat/some_chat. Для удобства TL-типы буду описывать как TL{TypeName}. "TypeName" взят из данной схемы.

    1. Сперва нужно послать messages.checkChatInvite с параметром hash равным последней части ссылки (some_chat в данном случае).

    2. Приходит ответ с типом TLChatInvite. В нём будет первичная информация о группе: её вид (чат или канал?), кол-во участников и, возможно, они сами в виде вектора TLUser.

    [Вот здесь я был в тупике]
    3. Вызываем метод messages.importChatInvite с тем же параметром hash. В ответ приходит объект типа TLUpdates или TLUpdatesCombined. Оба будут содержать вектор чатов. Взять можно первый элемент вектора (проверив на пустоту, естественно). Собственно, это и есть результат: в объекте будет и ID, и прочее.

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

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

    UPD: messages.importChatInvite добавит пользователя в группу при вызове. Ну ёлки-палки.
    Ответ написан
    1 комментарий