From bff535ddab49d1f60f64ac13797822474ab3b2dc Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 21 May 2017 19:09:18 +0300 Subject: [PATCH] Add payload generator --- aiogram/bot.py | 25 ++++++------------------- aiogram/utils/payload.py | 5 +++++ 2 files changed, 11 insertions(+), 19 deletions(-) create mode 100644 aiogram/utils/payload.py diff --git a/aiogram/bot.py b/aiogram/bot.py index 713cf922..5859810f 100644 --- a/aiogram/bot.py +++ b/aiogram/bot.py @@ -3,6 +3,7 @@ import signal import aiohttp +from aiogram.utils.payload import generate_payload from . import api from .api import ApiMethods from .types.chat import Chat @@ -33,10 +34,6 @@ class AIOGramBot: def _on_exit(self): self.session.close() - def _prepare_object(self, obj): - obj.bot = self - return obj - @property async def me(self) -> User: if not hasattr(self, '_me'): @@ -48,12 +45,12 @@ class AIOGramBot: async def get_me(self) -> User: raw = await self.request(ApiMethods.GET_ME) - return self._prepare_object(User.de_json(raw)) + return User.de_json(raw) async def get_chat(self, chat_id) -> Chat: - payload = {'chat_id': chat_id} + payload = generate_payload(**locals()) raw = await self.request(ApiMethods.GET_CHAT, payload) - return self._prepare_object(Chat.de_json(raw)) + return Chat.de_json(raw) async def get_updates(self, offset=None, limit=None, timeout=None, allowed_updates=None): """ @@ -65,16 +62,6 @@ class AIOGramBot: Please note that this parameter doesn't affect updates created before the call to the getUpdates, so unwanted updates may be received for a short period of time. :return: """ - payload = {} - - if offset: - payload['offset'] = offset - if limit: - payload['limit'] = limit - if timeout: - payload['timeout'] = timeout - if allowed_updates: - payload['allowed_updates'] = allowed_updates - + payload = generate_payload(**locals()) raw = await self.request(ApiMethods.GET_UPDATES, payload) - return [self._prepare_object(Update.de_json(raw_update)) for raw_update in raw] + return [Update.de_json(raw_update) for raw_update in raw] diff --git a/aiogram/utils/payload.py b/aiogram/utils/payload.py new file mode 100644 index 00000000..7d9d0f88 --- /dev/null +++ b/aiogram/utils/payload.py @@ -0,0 +1,5 @@ +DEFAULT_FILTER = ['self'] + + +def generate_payload(skip_items=DEFAULT_FILTER, **kwargs): + return {key: value for key, value in kwargs.items() if key not in skip_items and value}