Merge branch 'master' into dev-1.x

# Conflicts:
#	aiogram/__init__.py
This commit is contained in:
Alex Root Junior 2018-01-15 14:35:47 +02:00
commit ee87cb5e07
4 changed files with 53 additions and 4 deletions

View file

@ -4,7 +4,6 @@ from typing import TypeVar
from .fields import BaseField from .fields import BaseField
from ..utils import json from ..utils import json
from ..utils.context import get_value
PROPS_ATTR_NAME = '_props' PROPS_ATTR_NAME = '_props'
VALUES_ATTR_NAME = '_values' VALUES_ATTR_NAME = '_values'
@ -187,15 +186,61 @@ class TelegramObject(metaclass=MetaTelegramObject):
return self.as_json() return self.as_json()
def __getitem__(self, item): def __getitem__(self, item):
"""
Item getter (by key)
:param item:
:return:
"""
if item in self.props: if item in self.props:
return self.props[item].get_value(self) return self.props[item].get_value(self)
raise KeyError(item) raise KeyError(item)
def __setitem__(self, key, value): def __setitem__(self, key, value):
"""
Item setter (by key)
:param key:
:param value:
:return:
"""
if key in self.props: if key in self.props:
return self.props[key].set_value(self, value, self.conf.get('parent', None)) return self.props[key].set_value(self, value, self.conf.get('parent', None))
raise KeyError(key) raise KeyError(key)
def __contains__(self, item): def __contains__(self, item):
"""
Check key contains in that object
:param item:
:return:
"""
self.clean() self.clean()
return item in self.values return item in self.values
def __iter__(self):
"""
Iterate over items
:return:
"""
for item in self.to_python().items():
yield item
def iter_keys(self):
"""
Iterate over keys
:return:
"""
for key, _ in self:
yield key
def iter_values(self):
"""
Iterate over values
:return:
"""
for _, value in self:
yield value

View file

@ -54,7 +54,7 @@ class InlineKeyboardMarkup(base.TelegramObject):
""" """
btn_array = [] btn_array = []
for button in args: for button in args:
btn_array.append(button.to_json()) btn_array.append(button.to_python())
self.inline_keyboard.append(btn_array) self.inline_keyboard.append(btn_array)
return self return self

View file

@ -41,7 +41,7 @@ class ReplyKeyboardMarkup(base.TelegramObject):
elif isinstance(button, bytes): elif isinstance(button, bytes):
row.append({'text': button.decode('utf-8')}) row.append({'text': button.decode('utf-8')})
else: else:
row.append(button.to_json()) row.append(button.to_python())
if i % self.row_width == 0: if i % self.row_width == 0:
self.keyboard.append(row) self.keyboard.append(row)
row = [] row = []
@ -55,7 +55,7 @@ class ReplyKeyboardMarkup(base.TelegramObject):
if isinstance(button, str): if isinstance(button, str):
btn_array.append({'text': button}) btn_array.append({'text': button})
else: else:
btn_array.append(button.to_json()) btn_array.append(button.to_python())
self.keyboard.append(btn_array) self.keyboard.append(btn_array)
return self return self

View file

@ -48,5 +48,9 @@ Summary
bot = Bot(token='BOT TOKEN HERE') bot = Bot(token='BOT TOKEN HERE')
dp = Dispatcher(bot) dp = Dispatcher(bot)
@dp.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
await message.reply("Hi!\nI'm EchoBot!\nPowered by aiogram.")
if __name__ == '__main__': if __name__ == '__main__':
executor.start_polling(dp) executor.start_polling(dp)