mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2025-01-03 09:49:21 +01:00
Improving the design of existing Telegram classes
This commit is contained in:
parent
1c4595123c
commit
a86fc6c2ac
20 changed files with 84 additions and 461 deletions
15
Makefile
15
Makefile
|
@ -1,4 +1,4 @@
|
||||||
.PHONY: clean test lint help
|
.PHONY: clean pep8 lint test
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -fr build
|
rm -fr build
|
||||||
|
@ -7,13 +7,18 @@ clean:
|
||||||
find . -name '*.pyo' -exec rm -f {} \;
|
find . -name '*.pyo' -exec rm -f {} \;
|
||||||
find . -name '*~' -exec rm -f {} \;
|
find . -name '*~' -exec rm -f {} \;
|
||||||
|
|
||||||
|
pep8:
|
||||||
|
flake8 telegram
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
flake8 --doctests --max-complexity 10 telegram
|
pylint -E telegram
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@- $(foreach TEST, $(wildcard tests/test_*.py), python $(TEST))
|
@- $(foreach TEST, $(wildcard tests/test_*.py), python $(TEST))
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo " clean remove unwanted stuff"
|
@echo "Available targets:"
|
||||||
@echo " lint check style with flake8"
|
@echo "- clean Clean up the source directory"
|
||||||
@echo " test run tests"
|
@echo "- pep8 Check style with flake8"
|
||||||
|
@echo "- lint Check style with pylint"
|
||||||
|
@echo "- test Run tests"
|
||||||
|
|
|
@ -69,37 +69,4 @@ class Audio(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
audio = dict()
|
return Audio(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
audio['file_id'] = data['file_id']
|
|
||||||
audio['duration'] = data['duration']
|
|
||||||
# Optionals
|
|
||||||
audio['performer'] = data.get('performer')
|
|
||||||
audio['title'] = data.get('title')
|
|
||||||
audio['mime_type'] = data.get('mime_type')
|
|
||||||
audio['file_size'] = data.get('file_size', 0)
|
|
||||||
|
|
||||||
return Audio(**audio)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['file_id'] = self.file_id
|
|
||||||
data['duration'] = self.duration
|
|
||||||
# Optionals
|
|
||||||
if self.performer:
|
|
||||||
data['performer'] = self.performer
|
|
||||||
if self.title:
|
|
||||||
data['title'] = self.title
|
|
||||||
if self.mime_type:
|
|
||||||
data['mime_type'] = self.mime_type
|
|
||||||
if self.file_size:
|
|
||||||
data['file_size'] = self.file_size
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
"""Base class for Telegram Objects"""
|
"""Base class for Telegram Objects"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from abc import ABCMeta, abstractmethod
|
from abc import ABCMeta
|
||||||
|
|
||||||
|
|
||||||
class TelegramObject(object):
|
class TelegramObject(object):
|
||||||
|
@ -51,10 +51,18 @@ class TelegramObject(object):
|
||||||
"""
|
"""
|
||||||
return json.dumps(self.to_dict())
|
return json.dumps(self.to_dict())
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
"""
|
"""
|
||||||
Returns:
|
Returns:
|
||||||
dict:
|
dict:
|
||||||
"""
|
"""
|
||||||
return None
|
data = dict()
|
||||||
|
|
||||||
|
for key, value in self.__dict__.iteritems():
|
||||||
|
if value:
|
||||||
|
if hasattr(value, 'to_dict'):
|
||||||
|
data[key] = value.to_dict()
|
||||||
|
else:
|
||||||
|
data[key] = value
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
|
@ -63,31 +63,4 @@ class Contact(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
contact = dict()
|
return Contact(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
contact['phone_number'] = data['phone_number']
|
|
||||||
contact['first_name'] = data['first_name']
|
|
||||||
# Optionals
|
|
||||||
contact['last_name'] = data.get('last_name')
|
|
||||||
contact['user_id'] = data.get('user_id', 0)
|
|
||||||
|
|
||||||
return Contact(**contact)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['phone_number'] = self.phone_number
|
|
||||||
data['first_name'] = self.first_name
|
|
||||||
# Optionals
|
|
||||||
if self.last_name:
|
|
||||||
data['last_name'] = self.last_name
|
|
||||||
if self.user_id:
|
|
||||||
data['user_id'] = self.user_id
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -65,35 +65,4 @@ class Document(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
document = dict()
|
return Document(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
document['file_id'] = data['file_id']
|
|
||||||
# Optionals
|
|
||||||
document['thumb'] = PhotoSize.de_json(data.get('thumb'))
|
|
||||||
document['file_name'] = data.get('file_name')
|
|
||||||
document['mime_type'] = data.get('mime_type')
|
|
||||||
document['file_size'] = data.get('file_size', 0)
|
|
||||||
|
|
||||||
return Document(**document)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['file_id'] = self.file_id
|
|
||||||
# Optionals
|
|
||||||
if self.thumb:
|
|
||||||
data['thumb'] = self.thumb.to_dict()
|
|
||||||
if self.file_name:
|
|
||||||
data['file_name'] = self.file_name
|
|
||||||
if self.mime_type:
|
|
||||||
data['mime_type'] = self.mime_type
|
|
||||||
if self.file_size:
|
|
||||||
data['file_size'] = self.file_size
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -53,26 +53,8 @@ class ForceReply(ReplyMarkup):
|
||||||
Returns:
|
Returns:
|
||||||
telegram.ForceReply:
|
telegram.ForceReply:
|
||||||
"""
|
"""
|
||||||
force_reply = dict()
|
if not data:
|
||||||
|
return None
|
||||||
|
|
||||||
# Required
|
return ForceReply(**data)
|
||||||
force_reply['force_reply'] = data['force_reply']
|
|
||||||
# Optionals
|
|
||||||
force_reply['selective'] = data.get('selective', False)
|
|
||||||
|
|
||||||
return ForceReply(**force_reply)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['force_reply'] = self.force_reply
|
|
||||||
# Optionals
|
|
||||||
if self.selective:
|
|
||||||
data['selective'] = self.selective
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -53,23 +53,4 @@ class GroupChat(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
groupchat = dict()
|
return GroupChat(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
groupchat['id'] = data['id']
|
|
||||||
groupchat['title'] = data['title']
|
|
||||||
|
|
||||||
return GroupChat(**groupchat)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['id'] = self.id
|
|
||||||
data['title'] = self.title
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -52,23 +52,4 @@ class Location(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
location = dict()
|
return Location(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
location['longitude'] = data['longitude']
|
|
||||||
location['latitude'] = data['latitude']
|
|
||||||
|
|
||||||
return Location(**location)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['longitude'] = self.longitude
|
|
||||||
data['latitude'] = self.latitude
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -134,110 +134,60 @@ class Message(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
message = dict()
|
data['from_user'] = User.de_json(data['from'])
|
||||||
|
data['date'] = datetime.fromtimestamp(data['date'])
|
||||||
# Required
|
|
||||||
message['message_id'] = data['message_id']
|
|
||||||
message['from_user'] = User.de_json(data['from'])
|
|
||||||
message['date'] = datetime.fromtimestamp(data['date'])
|
|
||||||
# Optionals
|
|
||||||
if 'first_name' in data.get('chat', ''):
|
if 'first_name' in data.get('chat', ''):
|
||||||
message['chat'] = User.de_json(data.get('chat'))
|
data['chat'] = User.de_json(data.get('chat'))
|
||||||
elif 'title' in data.get('chat', ''):
|
elif 'title' in data.get('chat', ''):
|
||||||
message['chat'] = GroupChat.de_json(data.get('chat'))
|
data['chat'] = GroupChat.de_json(data.get('chat'))
|
||||||
message['forward_from'] = \
|
data['forward_from'] = \
|
||||||
User.de_json(data.get('forward_from'))
|
User.de_json(data.get('forward_from'))
|
||||||
message['forward_date'] = \
|
data['forward_date'] = \
|
||||||
Message._fromtimestamp(data.get('forward_date'))
|
Message._fromtimestamp(data.get('forward_date'))
|
||||||
message['reply_to_message'] = \
|
data['reply_to_message'] = \
|
||||||
Message.de_json(data.get('reply_to_message'))
|
Message.de_json(data.get('reply_to_message'))
|
||||||
message['text'] = \
|
data['audio'] = \
|
||||||
data.get('text')
|
|
||||||
message['audio'] = \
|
|
||||||
Audio.de_json(data.get('audio'))
|
Audio.de_json(data.get('audio'))
|
||||||
message['document'] = \
|
data['document'] = \
|
||||||
Document.de_json(data.get('document'))
|
Document.de_json(data.get('document'))
|
||||||
message['photo'] = \
|
data['photo'] = \
|
||||||
[PhotoSize.de_json(x) for x in data.get('photo', [])]
|
PhotoSize.de_list(data.get('photo'))
|
||||||
message['sticker'] = \
|
data['sticker'] = \
|
||||||
Sticker.de_json(data.get('sticker'))
|
Sticker.de_json(data.get('sticker'))
|
||||||
message['video'] = \
|
data['video'] = \
|
||||||
Video.de_json(data.get('video'))
|
Video.de_json(data.get('video'))
|
||||||
message['voice'] = \
|
data['voice'] = \
|
||||||
Voice.de_json(data.get('voice'))
|
Voice.de_json(data.get('voice'))
|
||||||
message['caption'] = \
|
data['contact'] = \
|
||||||
data.get('caption')
|
|
||||||
message['contact'] = \
|
|
||||||
Contact.de_json(data.get('contact'))
|
Contact.de_json(data.get('contact'))
|
||||||
message['location'] = \
|
data['location'] = \
|
||||||
Location.de_json(data.get('location'))
|
Location.de_json(data.get('location'))
|
||||||
message['new_chat_participant'] = \
|
data['new_chat_participant'] = \
|
||||||
User.de_json(data.get('new_chat_participant'))
|
User.de_json(data.get('new_chat_participant'))
|
||||||
message['left_chat_participant'] = \
|
data['left_chat_participant'] = \
|
||||||
User.de_json(data.get('left_chat_participant'))
|
User.de_json(data.get('left_chat_participant'))
|
||||||
message['new_chat_title'] = \
|
data['new_chat_photo'] = \
|
||||||
data.get('new_chat_title')
|
PhotoSize.de_list(data.get('new_chat_photo'))
|
||||||
message['new_chat_photo'] = \
|
|
||||||
[PhotoSize.de_json(x) for x in data.get('new_chat_photo', [])]
|
|
||||||
message['delete_chat_photo'] = \
|
|
||||||
data.get('delete_chat_photo')
|
|
||||||
message['group_chat_created'] = \
|
|
||||||
data.get('group_chat_created')
|
|
||||||
|
|
||||||
return Message(**message)
|
return Message(**data)
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
"""
|
"""
|
||||||
Returns:
|
Returns:
|
||||||
dict:
|
dict:
|
||||||
"""
|
"""
|
||||||
data = dict()
|
data = super(Message, self).to_dict()
|
||||||
|
|
||||||
# Required
|
# Required
|
||||||
data['message_id'] = self.message_id
|
data['from'] = data.pop('from_user')
|
||||||
data['from'] = self.from_user.to_dict()
|
|
||||||
data['date'] = self._totimestamp(self.date)
|
data['date'] = self._totimestamp(self.date)
|
||||||
data['chat'] = self.chat.to_dict()
|
|
||||||
# Optionals
|
# Optionals
|
||||||
if self.forward_from:
|
|
||||||
data['forward_from'] = self.forward_from.to_dict()
|
|
||||||
if self.forward_date:
|
if self.forward_date:
|
||||||
data['forward_date'] = self._totimestamp(self.forward_date)
|
data['forward_date'] = self._totimestamp(self.forward_date)
|
||||||
if self.reply_to_message:
|
|
||||||
data['reply_to_message'] = self.reply_to_message.to_dict()
|
|
||||||
if self.text:
|
|
||||||
data['text'] = self.text
|
|
||||||
if self.audio:
|
|
||||||
data['audio'] = self.audio.to_dict()
|
|
||||||
if self.document:
|
|
||||||
data['document'] = self.document.to_dict()
|
|
||||||
if self.photo:
|
if self.photo:
|
||||||
data['photo'] = [p.to_dict() for p in self.photo]
|
data['photo'] = [p.to_dict() for p in self.photo]
|
||||||
if self.sticker:
|
|
||||||
data['sticker'] = self.sticker.to_dict()
|
|
||||||
if self.video:
|
|
||||||
data['video'] = self.video.to_dict()
|
|
||||||
if self.voice:
|
|
||||||
data['voice'] = self.voice.to_dict()
|
|
||||||
if self.caption:
|
|
||||||
data['caption'] = self.caption
|
|
||||||
if self.contact:
|
|
||||||
data['contact'] = self.contact.to_dict()
|
|
||||||
if self.location:
|
|
||||||
data['location'] = self.location.to_dict()
|
|
||||||
if self.new_chat_participant:
|
|
||||||
data['new_chat_participant'] = self.new_chat_participant.to_dict()
|
|
||||||
if self.left_chat_participant:
|
|
||||||
data['left_chat_participant'] = \
|
|
||||||
self.left_chat_participant.to_dict()
|
|
||||||
if self.new_chat_title:
|
|
||||||
data['new_chat_title'] = self.new_chat_title
|
|
||||||
if self.new_chat_photo:
|
if self.new_chat_photo:
|
||||||
data['new_chat_photo'] = [p.to_dict() for p in self.new_chat_photo]
|
data['new_chat_photo'] = [p.to_dict() for p in self.new_chat_photo]
|
||||||
if self.delete_chat_photo:
|
|
||||||
data['delete_chat_photo'] = self.delete_chat_photo
|
|
||||||
if self.group_chat_created:
|
|
||||||
data['group_chat_created'] = self.group_chat_created
|
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
|
@ -64,30 +64,22 @@ class PhotoSize(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
photosize = dict()
|
return PhotoSize(**data)
|
||||||
|
|
||||||
# Required
|
@staticmethod
|
||||||
photosize['file_id'] = data['file_id']
|
def de_list(data):
|
||||||
photosize['width'] = data['width']
|
|
||||||
photosize['height'] = data['height']
|
|
||||||
# Optionals
|
|
||||||
photosize['file_size'] = data.get('file_size', 0)
|
|
||||||
|
|
||||||
return PhotoSize(**photosize)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
"""
|
||||||
|
Args:
|
||||||
|
data (list):
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict:
|
List<telegram.PhotoSize>:
|
||||||
"""
|
"""
|
||||||
data = dict()
|
if not data:
|
||||||
|
return []
|
||||||
|
|
||||||
# Required
|
photos = list()
|
||||||
data['file_id'] = self.file_id
|
for photo in data:
|
||||||
data['width'] = self.width
|
photos.append(PhotoSize.de_json(photo))
|
||||||
data['height'] = self.height
|
|
||||||
# Optionals
|
|
||||||
if self.file_size:
|
|
||||||
data['file_size'] = self.file_size
|
|
||||||
|
|
||||||
return data
|
return photos
|
||||||
|
|
|
@ -54,26 +54,7 @@ class ReplyKeyboardHide(ReplyMarkup):
|
||||||
Returns:
|
Returns:
|
||||||
telegram.ReplyKeyboardHide:
|
telegram.ReplyKeyboardHide:
|
||||||
"""
|
"""
|
||||||
rkh = dict()
|
if not data:
|
||||||
|
return None
|
||||||
|
|
||||||
# Required
|
return ReplyKeyboardHide(**data)
|
||||||
rkh['hide_keyboard'] = data['hide_keyboard']
|
|
||||||
# Optionals
|
|
||||||
rkh['selective'] = data.get('selective', False)
|
|
||||||
|
|
||||||
return ReplyKeyboardHide(**rkh)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['hide_keyboard'] = self.hide_keyboard
|
|
||||||
# Optionals
|
|
||||||
if self.selective:
|
|
||||||
data['selective'] = self.selective
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -60,32 +60,7 @@ class ReplyKeyboardMarkup(ReplyMarkup):
|
||||||
Returns:
|
Returns:
|
||||||
telegram.ReplyKeyboardMarkup:
|
telegram.ReplyKeyboardMarkup:
|
||||||
"""
|
"""
|
||||||
rkm = dict()
|
if not data:
|
||||||
|
return None
|
||||||
|
|
||||||
# Required
|
return ReplyKeyboardMarkup(**data)
|
||||||
rkm['keyboard'] = data['keyboard']
|
|
||||||
# Optionals
|
|
||||||
rkm['resize_keyboard'] = data.get('resize_keyboard', False)
|
|
||||||
rkm['one_time_keyboard'] = data.get('one_time_keyboard', False)
|
|
||||||
rkm['selective'] = data.get('selective', False)
|
|
||||||
|
|
||||||
return ReplyKeyboardMarkup(**rkm)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['keyboard'] = self.keyboard
|
|
||||||
# Optionals
|
|
||||||
if self.resize_keyboard:
|
|
||||||
data['resize_keyboard'] = self.resize_keyboard
|
|
||||||
if self.one_time_keyboard:
|
|
||||||
data['one_time_keyboard'] = self.one_time_keyboard
|
|
||||||
if self.selective:
|
|
||||||
data['selective'] = self.selective
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -67,33 +67,4 @@ class Sticker(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sticker = dict()
|
return Sticker(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
sticker['file_id'] = data['file_id']
|
|
||||||
sticker['width'] = data['width']
|
|
||||||
sticker['height'] = data['height']
|
|
||||||
# Optionals
|
|
||||||
sticker['thumb'] = PhotoSize.de_json(data['thumb'])
|
|
||||||
sticker['file_size'] = data.get('file_size', 0)
|
|
||||||
|
|
||||||
return Sticker(**sticker)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['file_id'] = self.file_id
|
|
||||||
data['width'] = self.width
|
|
||||||
data['height'] = self.height
|
|
||||||
# Optionals
|
|
||||||
if self.thumb:
|
|
||||||
data['thumb'] = self.thumb.to_dict()
|
|
||||||
if self.file_size:
|
|
||||||
data['file_size'] = self.file_size
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -52,24 +52,9 @@ class Update(TelegramObject):
|
||||||
Returns:
|
Returns:
|
||||||
telegram.Update:
|
telegram.Update:
|
||||||
"""
|
"""
|
||||||
update = dict()
|
if not data:
|
||||||
|
return None
|
||||||
|
|
||||||
update['update_id'] = data['update_id']
|
data['message'] = Message.de_json(data['message'])
|
||||||
update['message'] = Message.de_json(data['message'])
|
|
||||||
|
|
||||||
return Update(**update)
|
return Update(**data)
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['update_id'] = self.update_id
|
|
||||||
# Optionals
|
|
||||||
if self.message:
|
|
||||||
data['message'] = self.message.to_dict()
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -73,31 +73,4 @@ class User(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
user = dict()
|
return User(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
user['id'] = data['id']
|
|
||||||
user['first_name'] = data['first_name']
|
|
||||||
# Optionals
|
|
||||||
user['last_name'] = data.get('last_name')
|
|
||||||
user['username'] = data.get('username')
|
|
||||||
|
|
||||||
return User(**user)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['id'] = self.id
|
|
||||||
data['first_name'] = self.first_name
|
|
||||||
# Optionals
|
|
||||||
if self.last_name:
|
|
||||||
data['last_name'] = self.last_name
|
|
||||||
if self.username:
|
|
||||||
data['username'] = self.username
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -53,25 +53,17 @@ class UserProfilePhotos(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
upf = dict()
|
data['photos'] = [PhotoSize.de_list(photo) for photo in data['photos']]
|
||||||
|
|
||||||
# Required
|
return UserProfilePhotos(**data)
|
||||||
upf['total_count'] = data['total_count']
|
|
||||||
upf['photos'] = []
|
|
||||||
for photo in data['photos']:
|
|
||||||
upf['photos'].append([PhotoSize.de_json(x) for x in photo])
|
|
||||||
|
|
||||||
return UserProfilePhotos(**upf)
|
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
"""
|
"""
|
||||||
Returns:
|
Returns:
|
||||||
dict:
|
dict:
|
||||||
"""
|
"""
|
||||||
data = dict()
|
data = super(UserProfilePhotos, self).to_dict()
|
||||||
|
|
||||||
# Required
|
|
||||||
data['total_count'] = self.total_count
|
|
||||||
data['photos'] = []
|
data['photos'] = []
|
||||||
for photo in self.photos:
|
for photo in self.photos:
|
||||||
data['photos'].append([x.to_dict() for x in photo])
|
data['photos'].append([x.to_dict() for x in photo])
|
||||||
|
|
|
@ -74,38 +74,4 @@ class Video(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
video = dict()
|
return Video(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
video['file_id'] = data['file_id']
|
|
||||||
video['width'] = data['width']
|
|
||||||
video['height'] = data['height']
|
|
||||||
video['duration'] = data['duration']
|
|
||||||
# Optionals
|
|
||||||
video['thumb'] = PhotoSize.de_json(data.get('thumb'))
|
|
||||||
video['mime_type'] = data.get('mime_type')
|
|
||||||
video['file_size'] = data.get('file_size', 0)
|
|
||||||
|
|
||||||
return Video(**video)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['file_id'] = self.file_id
|
|
||||||
data['width'] = self.width
|
|
||||||
data['height'] = self.height
|
|
||||||
data['duration'] = self.duration
|
|
||||||
# Optionals
|
|
||||||
if self.thumb:
|
|
||||||
data['thumb'] = self.thumb.to_dict()
|
|
||||||
if self.mime_type:
|
|
||||||
data['mime_type'] = self.mime_type
|
|
||||||
if self.file_size:
|
|
||||||
data['file_size'] = self.file_size
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -62,32 +62,4 @@ class Voice(TelegramObject):
|
||||||
if not data:
|
if not data:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
voice = dict()
|
return Voice(**data)
|
||||||
|
|
||||||
# Required
|
|
||||||
voice['file_id'] = data['file_id']
|
|
||||||
# Optionals
|
|
||||||
voice['duration'] = data.get('duration', 0)
|
|
||||||
voice['mime_type'] = data.get('mime_type')
|
|
||||||
voice['file_size'] = data.get('file_size', 0)
|
|
||||||
|
|
||||||
return Voice(**voice)
|
|
||||||
|
|
||||||
def to_dict(self):
|
|
||||||
"""
|
|
||||||
Returns:
|
|
||||||
dict:
|
|
||||||
"""
|
|
||||||
data = dict()
|
|
||||||
|
|
||||||
# Required
|
|
||||||
data['file_id'] = self.file_id
|
|
||||||
# Optionals
|
|
||||||
if self.duration:
|
|
||||||
data['duration'] = self.duration
|
|
||||||
if self.mime_type:
|
|
||||||
data['mime_type'] = self.mime_type
|
|
||||||
if self.file_size:
|
|
||||||
data['file_size'] = self.file_size
|
|
||||||
|
|
||||||
return data
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ class BotTest(unittest.TestCase):
|
||||||
self.assertTrue(self.is_json(bot.to_json()))
|
self.assertTrue(self.is_json(bot.to_json()))
|
||||||
self.assertEqual(bot.id, 120405045)
|
self.assertEqual(bot.id, 120405045)
|
||||||
self.assertEqual(bot.first_name, 'Toledo\'s Palace Bot')
|
self.assertEqual(bot.first_name, 'Toledo\'s Palace Bot')
|
||||||
self.assertEqual(bot.last_name, None)
|
self.assertEqual(bot.last_name, '')
|
||||||
self.assertEqual(bot.username, 'ToledosPalaceBot')
|
self.assertEqual(bot.username, 'ToledosPalaceBot')
|
||||||
self.assertEqual(bot.name, '@ToledosPalaceBot')
|
self.assertEqual(bot.name, '@ToledosPalaceBot')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue