Files

56 lines
1.6 KiB
Python
Raw Permalink Normal View History

2024-11-20 15:29:44 +05:30
from hydrogram.types import Message
2023-11-05 22:02:58 +05:30
from datetime import datetime
from mimetypes import guess_type
from bot import TelegramBot
from bot.config import Telegram
from bot.server.error import abort
2023-11-13 11:51:58 +05:30
async def get_message(message_id: int) -> Message | None:
2023-11-05 22:02:58 +05:30
message = None
try:
2024-11-20 15:29:44 +05:30
message = await TelegramBot.get_messages(Telegram.CHANNEL_ID, message_ids=message_id)
if message.empty: message = None
2023-11-05 22:02:58 +05:30
except Exception:
pass
return message
2024-11-20 15:29:44 +05:30
async def send_message(msg: Message, send_to: int = Telegram.CHANNEL_ID) -> Message:
return await TelegramBot.send_message(entity=send_to, message=msg)
def get_file_properties(msg: Message):
attributes = (
'document',
'video',
'audio',
'voice',
'photo',
'video_note'
2023-11-13 11:51:58 +05:30
)
2024-11-20 15:29:44 +05:30
for attribute in attributes:
media = getattr(msg, attribute, None)
if media:
file_type = attribute
break
if not media: abort(400, 'Unknown file type.')
2023-11-05 22:02:58 +05:30
2024-11-20 15:29:44 +05:30
file_name = getattr(media, 'file_name', None)
file_size = getattr(media, 'file_size', 0)
2023-11-05 22:02:58 +05:30
if not file_name:
2024-11-20 15:29:44 +05:30
file_format = {
2023-11-05 22:02:58 +05:30
'video': 'mp4',
'audio': 'mp3',
'voice': 'ogg',
'photo': 'jpg',
'video_note': 'mp4'
2024-11-20 15:29:44 +05:30
}.get(file_type)
2023-11-13 11:51:58 +05:30
date = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
file_name = f'{file_type}-{date}.{file_format}'
2024-11-20 15:29:44 +05:30
mime_type = guess_type(file_name)[0] or 'application/octet-stream'
2023-11-09 14:01:00 +05:30
return file_name, file_size, mime_type