def de_json(cls, data, bot): if not data: return None data = super(Update, cls).de_json(data, bot) message = data.get('message') if message: message['default_quote'] = data.get('default_quote') data['message'] = Message.de_json(message, bot) edited_message = data.get('edited_message') if edited_message: edited_message['default_quote'] = data.get('default_quote') data['edited_message'] = Message.de_json(edited_message, bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) callback_query = data.get('callback_query') if callback_query: callback_query['default_quote'] = data.get('default_quote') data['callback_query'] = CallbackQuery.de_json(callback_query, bot) data['shipping_query'] = ShippingQuery.de_json(data.get('shipping_query'), bot) data['pre_checkout_query'] = PreCheckoutQuery.de_json(data.get('pre_checkout_query'), bot) channel_post = data.get('channel_post') if channel_post: channel_post['default_quote'] = data.get('default_quote') data['channel_post'] = Message.de_json(channel_post, bot) edited_channel_post = data.get('edited_channel_post') if edited_channel_post: edited_channel_post['default_quote'] = data.get('default_quote') data['edited_channel_post'] = Message.de_json(edited_channel_post, bot) data['poll'] = Poll.de_json(data.get('poll'), bot) return cls(**data)
def test_all_update_types(self, dp, bot, user1): handler = ConversationHandler( entry_points=[CommandHandler('start', self.start_end)], states={}, fallbacks=[]) message = Message(0, user1, None, self.group, text='ignore', bot=bot) callback_query = CallbackQuery(0, user1, None, message=message, data='data', bot=bot) chosen_inline_result = ChosenInlineResult(0, user1, 'query', bot=bot) inline_query = InlineQuery(0, user1, 'query', 0, bot=bot) pre_checkout_query = PreCheckoutQuery(0, user1, 'USD', 100, [], bot=bot) shipping_query = ShippingQuery(0, user1, [], None, bot=bot) assert not handler.check_update( Update(0, callback_query=callback_query)) assert not handler.check_update( Update(0, chosen_inline_result=chosen_inline_result)) assert not handler.check_update(Update(0, inline_query=inline_query)) assert not handler.check_update(Update(0, message=message)) assert not handler.check_update( Update(0, pre_checkout_query=pre_checkout_query)) assert not handler.check_update( Update(0, shipping_query=shipping_query))
def chosen_inline_result(): return Update( 1, chosen_inline_result=ChosenInlineResult('result_id', User(1, 'test_user', False), 'query'), )
def de_json(cls, data: Optional[JSONDict], bot: 'Bot') -> Optional['Update']: data = cls.parse_data(data) if not data: return None data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json( data.get('callback_query'), bot) data['shipping_query'] = ShippingQuery.de_json( data.get('shipping_query'), bot) data['pre_checkout_query'] = PreCheckoutQuery.de_json( data.get('pre_checkout_query'), bot) data['channel_post'] = Message.de_json(data.get('channel_post'), bot) data['edited_channel_post'] = Message.de_json( data.get('edited_channel_post'), bot) data['poll'] = Poll.de_json(data.get('poll'), bot) data['poll_answer'] = PollAnswer.de_json(data.get('poll_answer'), bot) return cls(**data)
def de_json(data, bot): """ Args: data (dict): bot (telegram.Bot): Returns: telegram.Update: """ if not data: return None data = super(Update, Update).de_json(data, bot) data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json(data.get('callback_query'), bot) data['shipping_query'] = ShippingQuery.de_json(data.get('shipping_query'), bot) data['pre_checkout_query'] = PreCheckoutQuery.de_json(data.get('pre_checkout_query'), bot) data['channel_post'] = Message.de_json(data.get('channel_post'), bot) data['edited_channel_post'] = Message.de_json(data.get('edited_channel_post'), bot) return Update(**data)
def chosen_inline_result(): return Update( 1, chosen_inline_result=ChosenInlineResult("result_id", User(1, "test_user", False), "query"), )
def de_json(data, bot): """ Args: data (dict): bot (telegram.Bot): Returns: telegram.Update: """ if not data: return None data = super(Update, Update).de_json(data, bot) data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json( data.get('callback_query'), bot) data['channel_post'] = Message.de_json(data.get('channel_post'), bot) data['edited_channel_post'] = Message.de_json( data.get('edited_channel_post'), bot) return Update(**data)
def de_json(cls, data: Optional[JSONDict], bot: 'Bot') -> Optional['Update']: """See :meth:`telegram.TelegramObject.de_json`.""" data = cls._parse_data(data) if not data: return None data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json( data.get('callback_query'), bot) data['shipping_query'] = ShippingQuery.de_json( data.get('shipping_query'), bot) data['pre_checkout_query'] = PreCheckoutQuery.de_json( data.get('pre_checkout_query'), bot) data['channel_post'] = Message.de_json(data.get('channel_post'), bot) data['edited_channel_post'] = Message.de_json( data.get('edited_channel_post'), bot) data['poll'] = Poll.de_json(data.get('poll'), bot) data['poll_answer'] = PollAnswer.de_json(data.get('poll_answer'), bot) data['my_chat_member'] = ChatMemberUpdated.de_json( data.get('my_chat_member'), bot) data['chat_member'] = ChatMemberUpdated.de_json( data.get('chat_member'), bot) data['chat_join_request'] = ChatJoinRequest.de_json( data.get('chat_join_request'), bot) return cls(**data)
def test_de_json_required(self, bot, user): json_dict = {'result_id': self.result_id, 'from': user.to_dict(), 'query': self.query} result = ChosenInlineResult.de_json(json_dict, bot) assert result.result_id == self.result_id assert result.from_user == user assert result.query == self.query
def get_false_update_fixture_decorator_params(): message = Message(1, User(1, '', False), DATE, Chat(1, ''), text='test') params = [{ 'callback_query': CallbackQuery(1, User(1, '', False), 'chat', message=message) }, { 'channel_post': message }, { 'edited_channel_post': message }, { 'inline_query': InlineQuery(1, User(1, '', False), '', '') }, { 'chosen_inline_result': ChosenInlineResult('id', User(1, '', False), '') }, { 'shipping_query': ShippingQuery('id', User(1, '', False), '', None) }, { 'pre_checkout_query': PreCheckoutQuery('id', User(1, '', False), '', 0, '') }, { 'callback_query': CallbackQuery(1, User(1, '', False), 'chat') }] ids = tuple(key for kwargs in params for key in kwargs) return {'params': params, 'ids': ids}
def de_json(cls, data, bot): if not data: return None data = super(Update, cls).de_json(data, bot) data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json( data.get('callback_query'), bot) data['shipping_query'] = ShippingQuery.de_json( data.get('shipping_query'), bot) data['pre_checkout_query'] = PreCheckoutQuery.de_json( data.get('pre_checkout_query'), bot) data['channel_post'] = Message.de_json(data.get('channel_post'), bot) data['edited_channel_post'] = Message.de_json( data.get('edited_channel_post'), bot) data['poll'] = Poll.de_json(data.get('poll'), bot) return cls(**data)
def create_chosen_inline_result(self, json_obj): result_id = self._get_simple_field(json_obj, 'result_id') from_user = self.get_from(json_obj) location = self.get_location(json_obj) query = self._get_simple_field(json_obj, 'query') inline_message_id = self._get_simple_field(json_obj, 'inline_message_id') chosen_inline_result = ChosenInlineResult( id=result_id, from_user=from_user, query=query ) if location: chosen_inline_result.location = location if inline_message_id: chosen_inline_result.inline_message_id = inline_message_id return chosen_inline_result
def test_equality(self, user): a = ChosenInlineResult(self.result_id, user, 'Query', '') b = ChosenInlineResult(self.result_id, user, 'Query', '') c = ChosenInlineResult(self.result_id, user, '', '') d = ChosenInlineResult('', user, 'Query', '') e = Voice(self.result_id, 'unique_id', 0) assert a == b assert hash(a) == hash(b) assert a is not b assert a == c assert hash(a) == hash(c) assert a != d assert hash(a) != hash(d) assert a != e assert hash(a) != hash(e)
def test_equality(self, user): a = ChosenInlineResult(self.result_id, user, "Query", "") b = ChosenInlineResult(self.result_id, user, "Query", "") c = ChosenInlineResult(self.result_id, user, "", "") d = ChosenInlineResult("", user, "Query", "") e = Voice(self.result_id, "unique_id", 0) assert a == b assert hash(a) == hash(b) assert a is not b assert a == c assert hash(a) == hash(c) assert a != d assert hash(a) != hash(d) assert a != e assert hash(a) != hash(e)
def test_de_json_required(self, bot, user): json_dict = { "result_id": self.result_id, "from": user.to_dict(), "query": self.query } result = ChosenInlineResult.de_json(json_dict, bot) assert result.result_id == self.result_id assert result.from_user == user assert result.query == self.query
def get_chosen_inline_result(self, result_id=None, query=None, user=None, location=None, inline_message_id=None): """ Returns a telegram.Update object containing a inline_query. Parameters: result_id (str): The result_id belonging to this chosen result inline_message_id (Optional[str]): Of omitted will be generated location (Optional[telegram.Location or True]): simulates a location query (Optional[str]): The query used to send this query user (Optional[telegram.User): If omitted will be randomly generated Returns: telegram.Update: an update containing a :py:class:`telegram.ChosenInlineResult` """ if not result_id: raise AttributeError( "result_id must be present for chosen_inline_result") if user: if not isinstance(user, User): raise BadUserException else: user = self.ug.get_user() if not query: query = "" if location: if isinstance(location, Location): pass elif isinstance(location, bool): import random location = Location(random.uniform(-180, 180), random.uniform(-90, 90)) else: raise AttributeError( "Location must be either telegram.Location or True") if not inline_message_id: inline_message_id = self._gen_id() return ChosenInlineResult(result_id=result_id, from_user=user, query=query, location=location, inline_message_id=inline_message_id)
def test_de_json_all(self, bot, user): loc = Location(-42.003, 34.004) json_dict = {'result_id': self.result_id, 'from': user.to_dict(), 'query': self.query, 'location': loc.to_dict(), 'inline_message_id': 'a random id'} result = ChosenInlineResult.de_json(json_dict, bot) assert result.result_id == self.result_id assert result.from_user == user assert result.query == self.query assert result.location == loc assert result.inline_message_id == 'a random id'
def test_de_json_all(self, bot, user): loc = Location(-42.003, 34.004) json_dict = { "result_id": self.result_id, "from": user.to_dict(), "query": self.query, "location": loc.to_dict(), "inline_message_id": "a random id", } result = ChosenInlineResult.de_json(json_dict, bot) assert result.result_id == self.result_id assert result.from_user == user assert result.query == self.query assert result.location == loc assert result.inline_message_id == "a random id"
def de_json(data): """ Args: data (dict): Returns: telegram.Update: """ if not data: return None data['message'] = Message.de_json(data.get('message')) data['inline_query'] = InlineQuery.de_json(data.get('inline_query')) data['chosen_inline_result'] = \ ChosenInlineResult.de_json(data.get('chosen_inline_result')) return Update(**data)
def de_json(cls, data, bot): if not data: return None data = super(Update, cls).de_json(data, bot) data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json(data.get('callback_query'), bot) data['shipping_query'] = ShippingQuery.de_json(data.get('shipping_query'), bot) data['pre_checkout_query'] = PreCheckoutQuery.de_json(data.get('pre_checkout_query'), bot) data['channel_post'] = Message.de_json(data.get('channel_post'), bot) data['edited_channel_post'] = Message.de_json(data.get('edited_channel_post'), bot) return cls(**data)
def de_json(data, bot): """ Args: data (dict): bot (telegram.Bot): Returns: telegram.Update: """ if not data: return None data['message'] = Message.de_json(data.get('message'), bot) data['edited_message'] = Message.de_json(data.get('edited_message'), bot) data['inline_query'] = InlineQuery.de_json(data.get('inline_query'), bot) data['chosen_inline_result'] = ChosenInlineResult.de_json( data.get('chosen_inline_result'), bot) data['callback_query'] = CallbackQuery.de_json(data.get('callback_query'), bot) return Update(**data)
def get_false_update_fixture_decorator_params(): message = Message(1, DATE, Chat(1, ""), from_user=User(1, "", False), text="test") params = [ { "callback_query": CallbackQuery(1, User(1, "", False), "chat", message=message) }, { "channel_post": message }, { "edited_channel_post": message }, { "inline_query": InlineQuery(1, User(1, "", False), "", "") }, { "chosen_inline_result": ChosenInlineResult("id", User(1, "", False), "") }, { "shipping_query": ShippingQuery("id", User(1, "", False), "", None) }, { "pre_checkout_query": PreCheckoutQuery("id", User(1, "", False), "", 0, "") }, { "callback_query": CallbackQuery(1, User(1, "", False), "chat") }, ] ids = tuple(key for kwargs in params for key in kwargs) return {"params": params, "ids": ids}
import pytest from telegram import (Update, CallbackQuery, Bot, Message, User, Chat, InlineQuery, ChosenInlineResult, ShippingQuery, PreCheckoutQuery, Location) from telegram.ext import InlineQueryHandler, CallbackContext, JobQueue message = Message(1, User(1, '', False), None, Chat(1, ''), text='Text') params = [ {'message': message}, {'edited_message': message}, {'callback_query': CallbackQuery(1, User(1, '', False), 'chat', message=message)}, {'channel_post': message}, {'edited_channel_post': message}, {'chosen_inline_result': ChosenInlineResult('id', User(1, '', False), '')}, {'shipping_query': ShippingQuery('id', User(1, '', False), '', None)}, {'pre_checkout_query': PreCheckoutQuery('id', User(1, '', False), '', 0, '')}, {'callback_query': CallbackQuery(1, User(1, '', False), 'chat')} ] ids = ('message', 'edited_message', 'callback_query', 'channel_post', 'edited_channel_post', 'chosen_inline_result', 'shipping_query', 'pre_checkout_query', 'callback_query_without_message') @pytest.fixture(scope='class', params=params, ids=ids) def false_update(request): return Update(update_id=2, **request.param)
from telegram import (Message, Update, Chat, Bot, User, CallbackQuery, InlineQuery, ChosenInlineResult, ShippingQuery, PreCheckoutQuery) from telegram.ext import Filters, MessageHandler message = Message(1, User(1, '', False), None, Chat(1, ''), text='Text') params = [{ 'callback_query': CallbackQuery(1, User(1, '', False), 'chat', message=message) }, { 'inline_query': InlineQuery(1, User(1, '', False), '', '') }, { 'chosen_inline_result': ChosenInlineResult('id', User(1, '', False), '') }, { 'shipping_query': ShippingQuery('id', User(1, '', False), '', None) }, { 'pre_checkout_query': PreCheckoutQuery('id', User(1, '', False), '', 0, '') }, { 'callback_query': CallbackQuery(1, User(1, '', False), 'chat') }] ids = ('callback_query', 'inline_query', 'chosen_inline_result', 'shipping_query', 'pre_checkout_query', 'callback_query_without_message') @pytest.fixture(scope='class', params=params, ids=ids)
}, { "edited_message": message }, { "callback_query": CallbackQuery(1, User(1, "", False), "chat", message=message) }, { "channel_post": message }, { "edited_channel_post": message }, { "chosen_inline_result": ChosenInlineResult("id", User(1, "", False), "") }, { "shipping_query": ShippingQuery("id", User(1, "", False), "", None) }, { "pre_checkout_query": PreCheckoutQuery("id", User(1, "", False), "", 0, "") }, { "callback_query": CallbackQuery(1, User(1, "", False), "chat") }, ] ids = ( "message",
def chosen_inline_result(user): return ChosenInlineResult(TestChosenInlineResult.result_id, user, TestChosenInlineResult.query)
params = [{ 'message': message }, { 'edited_message': message }, { 'callback_query': CallbackQuery(1, User(1, ''), 'chat', message=message) }, { 'channel_post': message }, { 'edited_channel_post': message }, { 'inline_query': InlineQuery(1, User(1, ''), '', '') }, { 'chosen_inline_result': ChosenInlineResult('id', User(1, ''), '') }, { 'shipping_query': ShippingQuery('id', User(1, ''), '', None) }, { 'pre_checkout_query': PreCheckoutQuery('id', User(1, ''), '', 0, '') }, { 'callback_query': CallbackQuery(1, User(1, ''), 'chat') }] ids = ('message', 'edited_message', 'callback_query', 'channel_post', 'edited_channel_post', 'inline_query', 'chosen_inline_result', 'shipping_query', 'pre_checkout_query', 'callback_query_without_message') @pytest.fixture(scope='class', params=params, ids=ids)