Всем привет! Иногда интересно устроить рыбалку по чатам и посмотреть что находится в файлах. Данный скрипт позволяет автоматизировать скачивание файлов из чата.
Устанавливаем библиотеку: pip install telethon
Устанавливаем библиотеку: pip install telethon
bot.py:
Python:
from telethon.sync import TelegramClient
from telethon.errors import SessionPasswordNeededError
from telethon.tl.functions.messages import GetDialogsRequest
from telethon.tl.types import InputPeerEmpty
# Получаем параметры для подключения к API по адресу:
# api_hash from https://my.telegram.org, under API Development, данные в переменных ниже указаны левые для понимания что нужно вписывать.
api_id = 10460555
api_hash = '205e1be31a7e7a61c103bac1ddee5555'
client = TelegramClient('komandos_kolya', api_id, api_hash, device_model="AMD B550", system_version="Windows 10")
client.connect()
phone = input("Enter phone: ")
client.send_code_request(phone, force_sms=False)
value = input("Enter login code: ")
try:
me = client.sign_in(phone, code=value)
#Если на акке выставленно 2Ф, будет запрос на авторизацию
except SessionPasswordNeededError:
password = input("Enter password: ")
me = client.sign_in(password=password)
# Работа со списком чатов, для последующего выбора
chats = []
last_date = None
chunk_size = 1000
groups = []
# Запрос на получение списка групп
result = client(GetDialogsRequest(
offset_date=last_date,
offset_id=0,
offset_peer=InputPeerEmpty(),
limit=chunk_size,
hash=0
))
chats.extend(result.chats)
for chat in chats:
try:
if chat.megagroup:
groups.append(chat)
except:
continue
print("Выберите номер группы из перечня:")
i = 0
for g in groups:
print(f"{i} - {g.title}")
i += 1
g_index = input("Введите нужную цифру: ")
target_group = groups[int(g_index)]
# Скачивание файлов
for message in client.get_messages(f'{target_group.title}', limit=1000): # Будет проверены последние 1000 сообщений в чате, если нужно выставляйте больше.
print(message)
message.download_media()
Последнее редактирование: