from telegram.ext import Application, CommandHandler, MessageHandler, CallbackQueryHandler from functools import partial from config import BotConfig from models import Users from services import GatesService, AVConnectService from repository import GatesRepository from handlers import * bot_config = BotConfig("lagomareGateKeeperBot") gates_repository = GatesRepository() avconnect_service = AVConnectService() gates_service = GatesService(gates_repository, avconnect_service) users = Users() def main(): app = Application.builder().token(bot_config.token).post_init(partial(post_init, bot_config=bot_config)).build() app.add_handler(MessageHandler(None, partial(updateuser, users=users)), group=1) app.add_handler(CommandHandler("start", partial(start, users=users))) app.add_handler(CommandHandler("setcredentials", partial(setcredentials, users=users))) app.add_handler(CommandHandler("opengate", partial(opengate, users=users, gates=gates_service))) app.add_handler(CommandHandler("requestaccess", partial(requestaccess, users=users))) app.add_handler(CommandHandler("grantaccess", partial(grantaccess, users=users))) app.add_handler(CallbackQueryHandler(partial(handle_main_menu_callback, users=users, gates=gates_service), pattern="^(open_gate_menu|request_access)$")) app.add_handler(CallbackQueryHandler(partial(handle_gate_open_callback, users=users, gates=gates_service), pattern="^opengate_")) app.run_polling() if __name__ == "__main__": main()