Отправка сообщений Telegram с помощью Telethon: некоторые параметры объекта работают, а другие нет? - PullRequest
0 голосов
/ 24 августа 2018

Я использую функцию Telethon send_message для отправки сообщений в различные чаты.

Иногда местом назначения является другой пользователь (просто обычный пользователь в одном чате), иногда группа, иногда супергруппа, а иногда и канал (администратором которого я являюсь).

Если я правильно понимаю, синтаксис должен быть:

client.send_message(entity,text)

Но я не могу понять, каким должен быть параметр entity в разных случаях. Что меня особенно смущает, так это то, что указание целочисленного идентификатора для некоторых групп работает нормально, но не для других.

Например:

У меня нормальный чат 1-к-1 с кем-то, у кого есть user_id 11111, а также с другим человеком, у которого есть user_id 22222.
Кроме того, я нахожусь в двух группах (на самом деле супергруппы), которые имеют channel_id 33333 и 44444.

Я могу указать 11111 или 33333 как сущность, и сообщение будет отправлено правильно (первому человеку или первой группе соответственно). Однако если я укажу 22222 или 44444, я получу сообщение об ошибке:

Невозможно найти объект, соответствующий "{}" '. Format (string)
ValueError: Не удается найти объект, соответствующий «22222»

Я также получаю сообщений от всех 4 чатов с использованием этого же экземпляра Telethon, и это прекрасно работает.

Итак, мой вопрос: как мне получить правильные данные сущности для send_message ()?

1 Ответ

0 голосов
/ 25 августа 2018

Предлагаю прочитать этот раздел документа ( сущностей )

например, я хочу отправить сообщение пользователю с именем пользователя: alix

client = TelegramClient('session_name',
                    api_id,
                    api_hash,
                    )
client.start()
destination_user_username='alix'
entity=client.get_entity(destination_user_username)
client.send_message(entity=entity,message="Hi")

или я хочу отправить сообщение на канал с именем пользователя: test_ali3

client = TelegramClient('session_name',
                    api_id,
                    api_hash
                    )
client.start()

destination_channel_username='test_ali3'
entity=client.get_entity(destination_channel_username)
client.send_message(entity=entity,message="Hi")

или я хочу отправить сообщение в группу с помощью Invite_link : https://t.me/joinchat/Bn4WIhMF1T_ZAF-yM6WbHw

client = TelegramClient('session_name',
                    api_id,
                    api_hash
                    )
client.start()
destination_group_invite_link='https://t.me/joinchat/Bn4WIhMF1T_ZAF-yM6WbHw'
entity=client.get_entity(destination_group_invite_link)
client.send_message(entity=entity,message="Hi")

Я надеюсь быть полезным для вас.

...