コード例 #1
0
 def send_callback_query(self, data: str, markup_message: Message = None):
     if markup_message is None:
         last = self.messages().first()
         if last is None or last.reply_markup is None:
             raise ValueError("No ReplyMarkup to response")
         else:
             markup_message = last
     callback_query = types.CallbackQuery(
         id=self._next_callback_query_id(),
         from_user=self._telegram_user(),
         chat_instance=self._next_callback_query_id(),
         message=types.Message(
             message_id=markup_message.message_id,
             chat=self._telegram_chat(),
             date=markup_message.date,
         ),
         data=data,
     )
     update = types.Update(
         update_id=self._next_update_id(),
         callback_query=callback_query,
     )
     self.dispatcher.dispatch(
         update_data=update.to_dict(date_as_timestamp=True)
     )
コード例 #2
0
    def test_send_callback_query_default_message(
        self,
        mocked_next_update_id: Mock,
        mocked_next_message_id: Mock,
        mocked_now: Mock,
        mocked_dispatcher: Mock,
    ):
        now = timezone.datetime(2000, 1, 1, tzinfo=timezone.utc)
        mocked_now.return_value = now
        mocked_next_message_id.return_value = 42
        mocked_next_update_id.return_value = 142
        test_user = ClientUser(self.bot, username="******")
        message = Message.objects.create(
            chat=test_user.chat,
            date=timezone.now(),
            message_id=test_user._next_message_id(),
            text="Yes of No?",
            _reply_markup=types.InlineKeyboardMarkup(inline_keyboard=[
                [types.InlineKeyboardButton("Yes", callback_data="yes")],
                [types.InlineKeyboardButton("No", callback_data="no")],
            ]).to_dict(),
        )

        test_user.send_callback_query(data="yes")

        user = types.User(id=START_USER_ID,
                          is_bot=False,
                          username="******",
                          first_name="u",
                          last_name="u")
        chat = types.Chat(
            id=START_USER_ID,
            type="private",
            username="******",
            first_name="u",
            last_name="u",
        )
        message = types.Message(
            message_id=message.message_id,
            date=message.date,
            chat=chat,
        )
        callback_query = types.CallbackQuery(id="1",
                                             from_user=user,
                                             chat_instance="1",
                                             message=message,
                                             data="yes")

        update = types.Update(update_id=142, callback_query=callback_query)
        update_data = update.to_dict(date_as_timestamp=True)
        test_user.dispatcher.dispatch.assert_called_with(
            update_data=update_data)