from telegram.ext import Updater, CommandHandler, ConversationHandler, MessageHandler, Filters from telegram import Update, User, Bot # Typing from config import TG_TOKEN from enums import UtilStates, MainStates from views import UtilViews, MainStatesView from keyboards import MenuKeyboard, BACK from logger_config import logger def error(bot, update, error): logger.warning('Update "%s" caused error "%s"', update, error) def main(): conversation = ConversationHandler( entry_points=[ CommandHandler('start', UtilViews.start), ], states={ UtilStates.WAIT_FOR_USERNAME: [MessageHandler(Filters.text, UtilViews.wait_for_username)], MainStates.MAIN_MENU: [ MessageHandler(Filters.regex(MenuKeyboard.NEW_CLIENT), MainStatesView.new_client_name), MessageHandler(Filters.regex(MenuKeyboard.LIST_CLIENTS), MainStatesView.list_clients), ], MainStates.ENTERING_NAME: [ MessageHandler(Filters.regex(BACK), MainStatesView.main_menu), MessageHandler(Filters.text, MainStatesView.new_client), ], }, fallbacks=[ MessageHandler(Filters.text, UtilViews.fallback), ] ) updater = Updater(TG_TOKEN) dp = updater.dispatcher dp.add_error_handler(error) dp.add_handler(conversation) updater.start_polling() updater.idle() if __name__ == "__main__": main()