init commit
This commit is contained in:
84
app/bots/editor/oop_app.py
Normal file
84
app/bots/editor/oop_app.py
Normal file
@@ -0,0 +1,84 @@
|
||||
from __future__ import annotations
|
||||
from telegram import Update
|
||||
from telegram.ext import (
|
||||
Application, CommandHandler, MessageHandler, ConversationHandler,
|
||||
CallbackQueryHandler, CallbackContext, filters,
|
||||
)
|
||||
|
||||
from app.core.config import settings
|
||||
from .states import States
|
||||
from .session import SessionStore
|
||||
from .wizard import EditorWizard
|
||||
|
||||
|
||||
def build_app() -> Application:
|
||||
sessions = SessionStore()
|
||||
wizard = EditorWizard(sessions)
|
||||
|
||||
app = Application.builder().token(settings.editor_bot_token).build()
|
||||
|
||||
# Мастер поста
|
||||
post_conv = ConversationHandler(
|
||||
entry_points=[CommandHandler("newpost", wizard.newpost)],
|
||||
states={
|
||||
States.CHOOSE_CHANNEL: [CallbackQueryHandler(wizard.choose_channel, pattern=r"^channel:")],
|
||||
States.CHOOSE_TYPE: [CallbackQueryHandler(wizard.choose_type, pattern=r"^type:")],
|
||||
States.CHOOSE_FORMAT: [CallbackQueryHandler(wizard.choose_format, pattern=r"^fmt:")],
|
||||
|
||||
States.ENTER_TEXT: [
|
||||
MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.enter_text),
|
||||
CallbackQueryHandler(wizard.choose_template_open, pattern=r"^tpl:choose$"),
|
||||
],
|
||||
States.SELECT_TEMPLATE: [
|
||||
CallbackQueryHandler(wizard.choose_template_apply, pattern=r"^tpluse:"),
|
||||
CallbackQueryHandler(wizard.choose_template_preview, pattern=r"^tplprev:"),
|
||||
CallbackQueryHandler(wizard.choose_template_navigate, pattern=r"^tplpage:"),
|
||||
CallbackQueryHandler(wizard.choose_template_cancel, pattern=r"^tpl:cancel$"),
|
||||
],
|
||||
States.PREVIEW_VARS: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.preview_collect_vars)],
|
||||
States.PREVIEW_CONFIRM: [
|
||||
CallbackQueryHandler(wizard.preview_confirm, pattern=r"^pv:(use|edit)$"),
|
||||
CallbackQueryHandler(wizard.choose_template_cancel, pattern=r"^tpl:cancel$"),
|
||||
],
|
||||
|
||||
States.ENTER_MEDIA: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.enter_media)],
|
||||
States.EDIT_KEYBOARD: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.edit_keyboard)],
|
||||
|
||||
States.CONFIRM_SEND: [CallbackQueryHandler(wizard.confirm_send, pattern=r"^send:")],
|
||||
States.ENTER_SCHEDULE: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.enter_schedule)],
|
||||
},
|
||||
fallbacks=[CommandHandler("start", wizard.start)],
|
||||
)
|
||||
|
||||
# Мастер шаблонов
|
||||
tpl_conv = ConversationHandler(
|
||||
entry_points=[CommandHandler("tpl_new", wizard.tpl_new_start)],
|
||||
states={
|
||||
States.TPL_NEW_NAME: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.tpl_new_name)],
|
||||
States.TPL_NEW_TYPE: [CallbackQueryHandler(wizard.tpl_new_type, pattern=r"^tpltype:")],
|
||||
States.TPL_NEW_FORMAT: [CallbackQueryHandler(wizard.tpl_new_format, pattern=r"^tplfmt:")],
|
||||
States.TPL_NEW_CONTENT: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.tpl_new_content)],
|
||||
States.TPL_NEW_KB: [MessageHandler(filters.TEXT & ~filters.COMMAND, wizard.tpl_new_kb)],
|
||||
States.TPL_CONFIRM_DELETE: [
|
||||
CallbackQueryHandler(wizard.tpl_delete_ok, pattern=r"^tpldelok:"),
|
||||
CallbackQueryHandler(wizard.choose_template_cancel, pattern=r"^tpl:cancel$"),
|
||||
],
|
||||
},
|
||||
fallbacks=[CommandHandler("start", wizard.start)],
|
||||
)
|
||||
|
||||
app.add_handler(CommandHandler("start", wizard.start))
|
||||
app.add_handler(post_conv)
|
||||
app.add_handler(tpl_conv)
|
||||
app.add_handler(CommandHandler("tpl_list", wizard.tpl_list))
|
||||
|
||||
return app
|
||||
|
||||
|
||||
def main():
|
||||
app = build_app()
|
||||
app.run_polling(allowed_updates=Update.ALL_TYPES)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user