Example #1
0
def register(dispatcher: Dispatcher) -> None:
    start_schedule = ConversationHandler(
        entry_points=[RegexHandler(START_KEYBOARD[0][0], on_schedule)],
        states={
            SCHEDULE: [
                RegexHandler(SCHEDULE_KEYBOARD[1][0], on_week),
                RegexHandler(SCHEDULE_KEYBOARD[0][0], on_day),
                RegexHandler(SCHEDULE_KEYBOARD[0][1], on_tomorrow),
                RegexHandler(BACK_KEY[0], on_back),
                # RegexHandler(TRIGGERS['all'], on_spam)
            ],
            DAY_OF_WEEK: [MessageHandler(Filters.text, choose_dow)]
        },
        fallbacks=[CommandHandler('start', start)])
    dispatcher.add_handler(start_schedule)
Example #2
0
def register(dispatcher: Dispatcher) -> None:
    settings = ConversationHandler(
        entry_points=[
            RegexHandler(START_KEYBOARD[1][0], on_settings),
            CommandHandler('settings', on_settings)
        ],
        states={
            ASK_EMAIL: [MessageHandler(Filters.text, get_email)],
            ASK_CITY: [MessageHandler(Filters.text, get_city)],
            SETTINGS: [MessageHandler(Filters.text, choose_menu)]
        },
        fallbacks=(CommandHandler('start', start), )
    )
    dispatcher.add_handler(settings)
    dispatcher.add_handler(CommandHandler('help', show_about))
Example #3
0
 def test_non_context_deprecation(self, dp):
     with pytest.warns(TelegramDeprecationWarning):
         Dispatcher(dp.bot,
                    dp.update_queue,
                    job_queue=dp.job_queue,
                    workers=0,
                    use_context=False)
Example #4
0
    def test_error_while_saving_chat_data(self, dp, bot):
        increment = []

        class OwnPersistence(BasePersistence):
            def __init__(self):
                super(BasePersistence, self).__init__()
                self.store_user_data = True
                self.store_chat_data = True
                self.store_bot_data = True

            def get_bot_data(self):
                return dict()

            def update_bot_data(self, data):
                raise Exception

            def get_chat_data(self):
                return defaultdict(dict)

            def update_chat_data(self, chat_id, data):
                raise Exception

            def get_user_data(self):
                return defaultdict(dict)

            def update_user_data(self, user_id, data):
                raise Exception

        def start1(b, u):
            pass

        def error(b, u, e):
            increment.append("error")

        # If updating a user_data or chat_data from a persistence object throws an error,
        # the error handler should catch it

        update = Update(1,
                        message=Message(1,
                                        User(1, "Test", False),
                                        None,
                                        Chat(1, "lala"),
                                        text='/start',
                                        entities=[
                                            MessageEntity(
                                                type=MessageEntity.BOT_COMMAND,
                                                offset=0,
                                                length=len('/start'))
                                        ],
                                        bot=bot))
        my_persistence = OwnPersistence()
        dp = Dispatcher(bot, None, persistence=my_persistence)
        dp.add_handler(CommandHandler('start', start1))
        dp.add_error_handler(error)
        dp.process_update(update)
        assert increment == ["error", "error", "error"]
Example #5
0
    def test_construction_with_bad_persistence(self, caplog, bot):
        class my_per:
            def __init__(self):
                self.store_user_data = False
                self.store_chat_data = False

        with pytest.raises(TypeError,
                           match='persistence should be based on telegram.ext.BasePersistence'):
            Dispatcher(bot, None, persistence=my_per())
Example #6
0
 def test_less_than_one_worker_warning(self, dp, recwarn):
     Dispatcher(dp.bot,
                dp.update_queue,
                job_queue=dp.job_queue,
                workers=0,
                use_context=True)
     assert len(recwarn) == 1
     assert (
         str(recwarn[0].message) ==
         'Asynchronous callbacks can not be processed without at least one worker thread.'
     )
Example #7
0
def _setup():
    bot = Bot(settings.BOT_TOKEN)
    d = Dispatcher(bot, None, workers=0)

    d.add_handler(CommandHandler("bets", bets))
    d.add_handler(CommandHandler("help", help))
    d.add_handler(CommandHandler("start", start))
    d.add_handler(bet_conv_handler)

    return d
Example #8
0
def register(dispatcher: Dispatcher) -> None:
    start_admin = ConversationHandler(
        entry_points=[
            CommandHandler('mail', whom_to_send, pass_user_data=True)
        ],
        states={
            WHOM_TO_SEND: [
                MessageHandler(Filters.text, recipients, pass_user_data=True)
            ],
            PREPARE_MAILING: [
                RegexHandler(BACK_KEY[0], recipients, pass_user_data=True),
                MessageHandler(
                    Filters.text,
                    prepare_mailing,
                    pass_user_data=True
                )
            ],
        },
        fallbacks=[CommandHandler('start', start)]
    )
    dispatcher.add_handler(start_admin)
Example #9
0
    def test_custom_context_init(self, bot):
        cc = ContextTypes(
            context=CustomContext,
            user_data=int,
            chat_data=float,
            bot_data=complex,
        )

        dispatcher = Dispatcher(bot, Queue(), context_types=cc)

        assert isinstance(dispatcher.user_data[1], int)
        assert isinstance(dispatcher.chat_data[1], float)
        assert isinstance(dispatcher.bot_data, complex)
Example #10
0
    def test_custom_context_error_handler(self, bot):
        def error_handler(_, context):
            self.received = (
                type(context),
                type(context.user_data),
                type(context.chat_data),
                type(context.bot_data),
            )

        dispatcher = Dispatcher(
            bot,
            Queue(),
            context_types=ContextTypes(context=CustomContext,
                                       bot_data=int,
                                       user_data=float,
                                       chat_data=complex),
        )
        dispatcher.add_error_handler(error_handler)
        dispatcher.add_handler(
            MessageHandler(Filters.all, self.callback_raise_error))

        dispatcher.process_update(self.message_update)
        sleep(0.1)
        assert self.received == (CustomContext, float, complex, int)
def add_news_handlers(dispatcher:Dispatcher):
    dispatcher.add_handler(CommandHandler("news", news))
    return
def add_email_handlers(dispatcher:Dispatcher):
    dispatcher.add_handler(email_conv_handler)
    dispatcher.add_handler(CommandHandler("mymailtemplates", show_email_templates))
    return
def add_stock_handlers(dispatcher:Dispatcher):
    dispatcher.add_handler(CommandHandler("stock", stock))
    dispatcher.add_handler(CommandHandler("deletestockalert", delete_stock_alert))
    dispatcher.add_handler(stock_alert_conv_handler)
    return
def add_common_handlers(dispatcher: Dispatcher):
    dispatcher.add_handler(CommandHandler("help", help))
    dispatcher.add_handler(CommandHandler("start", start))
    return
Example #15
0
def add_handlers(dispatcher: Dispatcher):
    dispatcher.add_handler(
        CommandHandler('hw', handle_hw, Filters.private, pass_user_data=True))
    dispatcher.add_handler(CallbackQueryHandler(on_choose,
                                                pass_user_data=True))
Example #16
0
def register(dispatcher: Dispatcher) -> None:
    registration = ConversationHandler(
        entry_points=[RegexHandler(REGISTER_KEYBOARD[0][0], ask_email)],
        states={
            ASK_EMAIL:
            [MessageHandler(Filters.text, get_email, pass_user_data=True)],
            ASK_CITY: [
                MessageHandler(Filters.text,
                               lambda bot, update, user_data: get_city(
                                   bot, update, user_data, verbose=True),
                               pass_user_data=True)
            ],
        },
        fallbacks=(CommandHandler('start', start), ))

    dispatcher.add_handler(CommandHandler('about', show_about))
    dispatcher.add_handler(CommandHandler('stop', on_stop))
    dispatcher.add_handler(CommandHandler('start', start))
    dispatcher.add_handler(registration)
    dispatcher.add_handler(RegexHandler(REGISTER_KEYBOARD[1][0], show_about))
    dispatcher.add_handler(RegexHandler(TRIGGERS['info'], show_about))
Example #17
0
 def telegram_dispatcher_callback():
     dispatcher = Dispatcher.get_instance()
     update = Update.de_json(update_message_text, dispatcher.bot)
     dispatcher.process_update(update)
Example #18
0
def clear_dispatcher():
    """Clear the singleton that telegram.ext.dispatcher.Dispatcher sets on itself."""
    yield
    Dispatcher._set_singleton(None)
    # This is how python-telegram-bot resets the dispatcher in their test suite
    Dispatcher._Dispatcher__singleton_semaphore.release()