This commit is contained in:
kislovdm
2026-04-08 23:56:38 +03:00
commit 3ca8f7545f
12 changed files with 620 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import asyncio
import logging
from pymax import MaxClient, Message
from dotenv import load_dotenv
from bridge import MaxToTelegramBridge
from config import load_settings
from storage import BridgeStorage
from telegram_api import TelegramClient
def _setup_logging() -> None:
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
)
def build_client() -> tuple[MaxClient, MaxToTelegramBridge]:
settings = load_settings()
max_client = MaxClient(
phone=settings.max_phone,
work_dir=settings.max_work_dir,
)
telegram_client = TelegramClient(
bot_token=settings.telegram_bot_token,
fallback_user_id=settings.telegram_fallback_user_id,
)
storage = BridgeStorage(settings.sqlite_path)
bridge = MaxToTelegramBridge(max_client=max_client, telegram=telegram_client, storage=storage)
return max_client, bridge
def main() -> None:
load_dotenv()
_setup_logging()
max_client, bridge = build_client()
logger = logging.getLogger("max2telegram")
@max_client.on_start
async def on_start() -> None:
logger.info("Max client started as %s", max_client.me.id)
@max_client.on_message()
async def on_message(message: Message) -> None:
try:
await bridge.forward_message(message)
except Exception:
logger.exception("Failed to forward Max message")
asyncio.run(max_client.start())
if __name__ == "__main__":
main()