first init

This commit is contained in:
2026-07-09 23:39:40 +03:00
parent 31281ad8cc
commit cb573a52d5
17 changed files with 1067 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
from __future__ import annotations
import argparse
import asyncio
import logging
from aiogram import Bot
from vpn_bot.config import Config
from vpn_bot.db import Database
from vpn_bot.handlers import BotApp, build_dispatcher
from vpn_bot.marzban import MarzbanClient
async def run(config_path: str) -> None:
config = Config.load(config_path)
logging.basicConfig(level=logging.INFO)
db = Database(config.database_path)
db.init()
bot = Bot(config.telegram_bot_token)
marzban = MarzbanClient(
base_url=config.marzban_url,
username=config.marzban_username,
password=config.marzban_password,
)
app = BotApp(config=config, db=db, marzban=marzban)
dp = build_dispatcher(app)
try:
await dp.start_polling(bot)
finally:
await marzban.close()
await bot.session.close()
def main() -> None:
parser = argparse.ArgumentParser(description="Telegram bot for Marzban VPN panel")
parser.add_argument("-c", "--config", default="config.toml", help="Path to config TOML file")
args = parser.parse_args()
asyncio.run(run(args.config))
if __name__ == "__main__":
main()