J'utilise Téléthon et Python 3.6xx
J'ai pu récupérer le message des groupes, pas de problème mais en ce qui concerne les canaux je suis bloqué.
dialogs = client(get_dialogs)
for chat in dialogs.chats:
getmessage = client.get_messages(chat.id, limit=400)
for message in getmessage:
print(message.message)
J'ai cherché dans la documentation du téléthon mais la plupart des réponses étaient en réponse à l'ancien get_message_history
.
Lorsque j'essaie avec le chat.id = 1097988869
Suivant (news.bitcoin.com), j'obtiens une erreur ci-dessous (pour les groupes, le chat.id
Fonctionne bien):
PeerIdInvalidError: un pair non valide a été utilisé. Assurez-vous de passer le bon type d'homologue
vous pouvez utiliser ce code pour obtenir des messages:
client = TelegramClient('session_name',
api_id,
api_hash,
update_workers=1,
spawn_read_thread=False)
assert client.connect()
if not client.is_user_authorized():
client.send_code_request(phone_number)
me = client.sign_in(phone_number, input('Enter code: '))
channel_username='tehrandb' # your channel
channel_entity=client.get_entity(channel_username)
posts = client(GetHistoryRequest(
peer=channel_entity,
limit=100,
offset_date=None,
offset_id=0,
max_id=0,
min_id=0,
add_offset=0,
hash=0))
# messages stored in `posts.messages`
La réponse acceptée est bonne, mais les versions récentes du Téléthon vous permettent d'y parvenir plus facilement. Cela itérera sur tous les messages dans chat
:
from telethon.sync import TelegramClient
with TelegramClient(name, api_id, api_hash) as client:
for message in client.iter_messages(chat):
print(message.sender_id, ':', message.text)
Où les variables doivent être évidentes, par exemple (notez que ces valeurs d'API ne fonctionneront pas, vous avez besoin des vôtres):
name = 'anon'
api_id = 123
api_hash = 'abcdefgh'
chat = 'me'