Don't run asyncio.run(), its a common issue, use asyncio.get_event_loop().run_until_complete() and then use client.run_until_disconnected()
Caution: Do not use asyncio.run() in Telethon!
Edit: Also, first connect the client and then use the connected client in all gathering functions directly, Do not again and again connect in those gathering client for database locked issue!