caFICteria-aaS/bot/get_history.py

49 lines
1.5 KiB
Python

from telethon import TelegramClient
import asyncio
import json
from utils import parse_menu_message, InvalidMenuMessageError
import config
async def get_message_history(chat_id, limit=None):
async with TelegramClient(config.session_name, config.api_id, config.api_hash) as client:
chat_info = await client.get_entity(chat_id)
messages = await client.get_messages(entity=chat_info, limit=limit)
return messages
def parse_message_history(chat_id, limit=None):
messages = asyncio.run(get_message_history(
chat_id=chat_id, limit=limit))
menus = {}
for msg in messages:
# Ignore messages without text conent and info messages (these usually include ! symbol)
if msg.message is None or "!" in msg.message:
continue
try:
courses = parse_menu_message(msg.message)
except InvalidMenuMessageError as e:
print(e)
continue
menus[msg.date.strftime("%d-%m-%Y")] = {"courses": courses,
"message": msg.message}
return menus
if __name__ == "__main__":
menus = parse_message_history(config.channel_id)
# We manually include menus in photos from July 2022
with open("menu_photos_history.json", 'r') as file:
data = json.load(file)
menus.update(data)
with open(config.menu_history_file_path, "w", encoding='utf-8') as f:
json.dump(menus, f, ensure_ascii=False, indent=4)