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
|