Get filename even if it is not the first attribute

This commit is contained in:
Baruch Odem 2020-05-24 19:09:45 +03:00
parent 7996dfdeaf
commit e994094cf2

View file

@ -8,7 +8,7 @@ from os import getenv
from sessionManager import getSession, saveSession from sessionManager import getSession, saveSession
from telethon import TelegramClient, events from telethon import TelegramClient, events
from telethon.tl.types import PeerChannel from telethon.tl.types import PeerChannel, DocumentAttributeFilename
import logging import logging
logging.basicConfig(format='[%(levelname) 5s/%(asctime)s]%(name)s:%(message)s',level=logging.WARNING) logging.basicConfig(format='[%(levelname) 5s/%(asctime)s]%(name)s:%(message)s',level=logging.WARNING)
@ -40,12 +40,16 @@ proxy = None
async def sendHelloMessage(client, peerChannel): async def sendHelloMessage(client, peerChannel):
entity = await client.get_entity(peerChannel) entity = await client.get_entity(peerChannel)
print("Hi! Ready for you files!")
await client.send_message(entity, "Hi! Ready for you files!") await client.send_message(entity, "Hi! Ready for you files!")
async def log_respond(event, respond): async def log_respond(event, respond):
print(respond) print(respond)
await event.respond(respond) await event.respond(respond)
def getFilename(event: events.NewMessage.Event):
return next(x for x in event.media.document.attributes if isinstance(x, DocumentAttributeFilename)).file_name
with TelegramClient(getSession(), api_id, api_hash, proxy=proxy).start() as client: with TelegramClient(getSession(), api_id, api_hash, proxy=proxy).start() as client:
@ -62,7 +66,7 @@ with TelegramClient(getSession(), api_id, api_hash, proxy=proxy).start() as clie
print(event) print(event)
if event.media: if event.media:
filename=event.media.document.attributes[0].file_name filename=getFilename(event)
await log_respond(event, f"Downloading file {filename} ({event.media.document.size} bytes)") await log_respond(event, f"Downloading file {filename} ({event.media.document.size} bytes)")
await client.download_media(event.message, downloadFolder) await client.download_media(event.message, downloadFolder)