from telethon import TelegramClient, events import json import config from utils import parse_menu_message, InvalidMenuMessageError client = TelegramClient(config.session_name, config.api_id, config.api_hash) @client.on(events.NewMessage(chats=[config.channel_id])) async def handler(event): msg = event.message if not msg.message is None: try: courses = parse_menu_message(msg.message) except InvalidMenuMessageError as e: print(e) return with open(config.menu_history_file_path, "r", encoding='utf-8') as f: menus = json.load(f) menus[msg.date.strftime("%d-%m-%Y")] = {"courses": courses, "message": msg.message} with open(config.menu_history_file_path, "w", encoding='utf-8') as f: json.dump(menus, f, ensure_ascii=False, indent=4) async def main(): await client.start() await client.run_until_disconnected() if __name__ == '__main__': import asyncio asyncio.run(main())