Необработанный API Telegram может сбивать с толку, особенно когда речь идет о «чатах», «каналах», «группах», «мегагруппах» и всех этих понятиях.
В этом разделе объясняется, что представляет собой каждое из этих понятий.
Содержание:
- Понятие «Chat»;
- Понятие «Channel»;
- Преобразование идентификаторов;
- Примечание по необработанному API.
Понятие «Chat»
Chat можно использовать для обсуждения любых общих тем «подкласса», который используется как для чатов, так и для каналов, либо для конкретного типа Chat .
Технически и Chat , и Channels являются разновидностью типа Chat .
В большинстве случаев термин *Chat* используется для обозначения небольших групповых чатов. Когда создается группа через официальное приложение, то получается именно такой тип. В официальных приложениях они называются «Группой».
И API бота, и Telethon добавят знак минус ( — ) к реальному идентификатору чата, чтобы можно было с первого взгляда определить тип объекта с помощью числа.
How to Remove Person from Telegram Group Chat
Например, если создается чат с помощью functions.messages.CreateChatRequest , реальный идентификатор чата может быть, например, 123. Если распечатать его из message.chat_id , то увидим -123. Этот идентификатор помогает Telethon понять, что речь идет о чате.
from telethon.sync import TelegramClient from telethon import functions with TelegramClient(name, api_id, api_hash) as client: result = client(functions.messages.CreateChatRequest( users=[‘username’], title=’My awesome title’, ttl_period=42 )) print(result.stringify())
Понятие «Channel»
Официальные приложения создают канал трансляции при создании нового канала (используется для трансляции сообщений, сообщения могут публиковать только администраторы).
Официальные приложения неявно переносят существующий Chat в Channel мегагруппы, когда выполняются определенные действия (превышается лимит пользователей, добавляется общедоступное имя пользователя, устанавливаются определенные разрешения и т. д.).
Канал можно создать непосредственно с помощью functions.messages.CreateChannelRequest как мегагруппу или трансляцию.
Официальные приложения используют термин Channel только для каналов вещания.
API относится к различным типам каналов с определенными атрибутами:
- Широковещательный канал — это канал с атрибутом channel.broadcast , установленным в значение True .
- Канал мегагруппы — это канал с атрибутом channel.megagroup , установленным в значение True . В официальных приложениях это называется «супергруппой».
- Канал гигагруппы — это канал с атрибутом channel.gigagroup , установленным в значение True . В официальных приложениях это называется «широковещательными группами» и используется, когда мегагруппа становится очень большой и администраторы хотят превратить ее во что-то, где только они могут публиковать сообщения.
И API бота, и Telethon «объединят» -100 с реальным идентификатором чата, чтобы можно было с первого взгляда определить тип объекта по номеру.
Например, если создается новый широковещательный канал, то реальный идентификатор канала может быть, например, 456. Если распечатать его из message.chat_id , увидим -1000000000456 . Этот идентификатор помогает Telethon понять, что речь идет о канале.
Преобразование идентификаторов
Можно конвертировать между «помеченными» идентификаторами (со знаком минус) и реальными с помощью utils.resolve_id() . Метод вернет кортеж с реальным идентификатором и типом узла (классом):
from telethon import utils real_id, peer_type = utils.resolve_id(-1000000000456) print(real_id) # 456 print(peer_type) # peer = peer_type(real_id) print(peer) # PeerChannel(channel_id=456)
Обратная операция может быть выполнена с помощью utils.get_peer_id() :
print(utils.get_peer_id(types.PeerChannel(456))) # -1000000000456
Обратите внимание, что эта функция также может работать с другими типами, такими как экземпляры чата или канала.
Если нужно преобразовать другие типы, такие как имена пользователей, которым, возможно, потребуется выполнить вызовы API для определения идентификатора, то необходимо использовать client.get_peer_id() :
print(await client.get_peer_id(‘me’)) # напечатает собственный ID
Если «пометки» (знак минус) НЕТ, то Telethon будет считать, что идентификатор относится к типу User . Если это не так, то это можно исправить вручную:
from telethon import types # явный тип узла await client.send_message(types.PeerChannel(456), ‘hello’)
Примечание по необработанному API
Некоторые методы работают только c типом Chat , а некоторые другие работают только с Channel (т.е. работают только в трансляции или мегагруппе). Скорее всего код знает, с чем работает, поэтому это не должно быть большой проблемой.
Если все таки нужно найти канал из чата, который был перенесен на него, то необходимо использовать chat.migrated_to :
# chat это `Chat` channel = await client.get_entity(chat.migrated_to) # channel теперь является `Channel`
У типа Channel нет метода .migrated_from , но у ChannelFull есть. Можно использовать GetFullChannelRequest , чтобы это получить:
from telethon import functions full = await client(functions.channels.GetFullChannelRequest(your_channel)) full_channel = full.full_chat # переменная `full_channel` — имеет тип `ChannelFull` print(full_channel.migrated_from_chat_id)
Таким образом, также можно получить доступ к связанной дискуссионной мегагруппе вещательного канала:
# выводит идентификатор связанной дискуссионной группы или `None` print(full_channel.linked_chat_id)
Не нужно использовать метод client.get_entity() для доступа к чату migred_from_chat_id или каналу linked_chat_id . Они находятся в атрибуте full.chats :
if full_channel.migrated_from_chat_id: migrated_from_chat = next(c for c in full.chats if c.id == full_channel.migrated_from_chat_id) print(migrated_from_chat.title) if full_channel.linked_chat_id: linked_group = next(c for c in full.chats if c.id == full_channel.linked_chat_id) print(linked_group.username)
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Понимание сущностей entity библиотеки Telethon
- Все о получении обновлений модулем Telethon
- Файл сессии сеанса модуля Telethon
- Понятие типов Chats и Channels в модуле Telethon
- Освоение asyncio для использования с Telethon
- Переход с Telegram Bot API на библиотеку Telethon
- Двухфакторная авторизация (2FA) с модулем Telethon
- Ошибки RPCError модуля Telethon
- События еvents модуля Telethon
- Класс TelegramClient() модуля telethon
- Методы объекта TelegramClient модуля Telethon
- Свойства и методы объекта Message модуля Telethon
- Объект File модуля Telethon
- Объект Conversation модуля Telethon
- Объект Dialog модуля Telethon
- Класс Button модуля Telethon
- Объект InlineResult модуля Telethon
Источник: docs-python.ru
Юзернейм в Телеграмме
Юзернейм в Телеграмме – это специальное имя, по которому можно производить поиск других пользователей. После того как ник будет добавлен, он автоматически отразится в основном профиле, чатах и приватных переписках. Это во многом упрощает общение, поскольку можно найти собеседника. Рассмотрим подробнее, что такое ник в Telegram и для чего он нужен.
Для чего нужен ник
Главное назначение юзернэйма в Телеграмм заключается в том, что можно быстро найти нужного человека. Это позволит найти вас людям, которых нет в вашей записной книге. Некоторых пользователей подобное пугает. Ведь тогда совершенно посторонние люди смогут без труда найти номер телефона.
На самом деле вся информация остается скрытой и доступна только пользователям из ваших контактов. Другие пользователи смогут получить к ним доступ, если вы сами с ними поделитесь контактными данными.
Особенность никнейма в Телеграмме в том, что при использовании одного ника в нескольких социальных сетях вы можете установить его и тут. Если он будет занят другим пользователем, то подтвердив, что у вас в других соцсетях этот же юзернэйм, вы получите его и в Телеграмме.
Правила добавления юзернейма
Для добавления пользовательского ника в социальной сети Телеграмм необходимо выполнять следующие действия:
Перейдите в настройки приложения. На экране должен отобразиться основной профиль пользователя и отдельные параметры настройки.
Затем необходимо выбрать «добавить имя пользователя». После этого появится поле для ввода с некоторыми правилами для набора.
Впишите тот ник, который вы себе хотите, а затем нажмите на галочку, расположенную в самом низу страницы. Этим вы сохраните ввод данных.
.
Все теперь вы знаете, как установить юзернейм. Однако придумывая себе ник, важно придерживаться некоторых правил , например:
- Ограничение по длине. Никнейм не может состоять меньше чем из пяти символов.
- Язык. Допускается использование юэернейма, написанное только латиницей.
- Дополнительные символы. Telegram допускает использование только цифр от 0 до 9 и нижнего подчеркивания.
Можно ли изменить ник
Для изменения юзернэйма достаточно просто повторить всю описанную выше процедуру еще один раз и сохранить новое имя. Никаких ограничений по количеству изменений в системе не предусмотрено. При необходимости ник можно совсем удалить, оставив поле пустым. Например, если вы хотите, чтобы вас не могли найти через поиск.
Источник: www.allmessengers.ru
Миграция коллективных чатов Telegram
Одно из последних обновлений отличается множеством замечательных возможностей, одна из которых является предметом сегодняшней статьи. Речь идет о новом способе попадания пользователей в существующие коллективные чаты Telegram: администраторы (создатели бесед) могут приглашать в них с помощью url.
С течением времени появляется все больше новых поводов для перехода со старых социальных сетей на сервис Telegram.
Среди них можно выделить:
- функцию сохранения истории переписки;
- моментальный полнотекстовый поиск;
- обмен файлами без ограничений;
- общедоступная платформа;
- разные виды предпросмотров;
- нативные настольные приложения;
- хэштеги;
- упоминания;
- многие другие преимущества.
Тем не менее, каждый, кто однажды пробовал перейти в свои существующие беседы через другие приложения, знает, какие трудности с этим связаны. Нужно было преодолеть разные препятствия: собирать и добавлять по очереди имена участников чата или номера их телефонов.
Теперь все это позади.
Приглашение по ссылкам
С появлением возможности делать приглашения в группу по ссылкам единственное, что нужно предпринять – это разослать url на свою существующую коллективную беседу с помощью любого сервиса, поддерживающего возможность обмена сообщениями. Главное, чтобы этим мессенджером пользовались ваши друзья. Когда они перейдут к Telegram, то смогут сразу вступить в вашу группу, перейдя по приглашению.
Как создать url? Для этого нужно:
- создать группу в Telegram;
- выберите пункт «добавить участника»;
- выберите инструмент «пригласить по ссылке в группу».
Это все, что нужно сделать.
Источник: telegramzy.ru