From c3300af65696c7505da161d59e5181418624c905 Mon Sep 17 00:00:00 2001 From: eternnoir Date: Wed, 19 Aug 2015 18:08:01 +0800 Subject: [PATCH 1/4] New audio,voice supported. --- telebot/__init__.py | 8 ++++++-- telebot/apihelper.py | 41 +++++++++++++++++++++++++++++++++++-- telebot/types.py | 33 +++++++++++++++++++++++++++++ tests/test_data/record.mp3 | Bin 0 -> 20096 bytes tests/test_data/record.ogg | Bin 0 -> 10481 bytes tests/test_data/record.wav | Bin 0 -> 60044 bytes tests/test_telebot.py | 20 ++++++++++++++++++ tests/test_types.py | 14 +++++++++++-- 8 files changed, 110 insertions(+), 6 deletions(-) create mode 100644 tests/test_data/record.mp3 create mode 100644 tests/test_data/record.ogg create mode 100644 tests/test_data/record.wav diff --git a/telebot/__init__.py b/telebot/__init__.py index d140ccf..fedeec3 100644 --- a/telebot/__init__.py +++ b/telebot/__init__.py @@ -231,7 +231,7 @@ class TeleBot: return types.Message.de_json( apihelper.send_photo(self.token, chat_id, photo, caption, reply_to_message_id, reply_markup)) - def send_audio(self, chat_id, data, reply_to_message_id=None, reply_markup=None): + def send_audio(self, chat_id, audio, duration=None, performer=None, title=None, reply_to_message_id=None, reply_markup=None): """ Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. For this to work, your audio must be in an .ogg file encoded with OPUS @@ -242,7 +242,11 @@ class TeleBot: :return: API reply. """ return types.Message.de_json( - apihelper.send_data(self.token, chat_id, data, 'audio', reply_to_message_id, reply_markup)) + apihelper.send_audio(self.token, chat_id, audio,duration,performer,title, reply_to_message_id, reply_markup)) + + def send_voice(self, chat_id, voice, duration=None, reply_to_message_id=None, reply_markup=None): + return types.Message.de_json( + apihelper.send_voice(self.token, chat_id, voice, duration, reply_to_message_id,reply_markup)) def send_document(self, chat_id, data, reply_to_message_id=None, reply_markup=None): """ diff --git a/telebot/apihelper.py b/telebot/apihelper.py index afdc63b..fafd5d9 100644 --- a/telebot/apihelper.py +++ b/telebot/apihelper.py @@ -139,6 +139,45 @@ def send_video(token, chat_id, data, duration=None, caption=None, reply_to_messa return _make_request(token, method_url, params=payload, files=files, method='post') +def send_voice(token, chat_id, voice, duration=None, reply_to_message_id=None, reply_markup=None): + method_url = r'sendVoice' + payload = {'chat_id': chat_id} + files = None + if not is_string(voice): + files = {'voice': voice} + else: + payload['voice'] = voice + if duration: + payload['duration'] = duration + if reply_to_message_id: + payload['reply_to_message_id'] = reply_to_message_id + if reply_markup: + payload['reply_markup'] = _convert_markup(reply_markup) + return _make_request(token, method_url, params=payload, files=files, method='post') + + +def send_audio(token, chat_id, audio, duration=None, performer=None, title=None, reply_to_message_id=None, + reply_markup=None): + method_url = r'sendAudio' + payload = {'chat_id': chat_id} + files = None + if not is_string(audio): + files = {'audio': audio} + else: + payload['audio'] = audio + if duration: + payload['duration'] = duration + if performer: + payload['performer'] = performer + if title: + payload['title'] = title + if reply_to_message_id: + payload['reply_to_message_id'] = reply_to_message_id + if reply_markup: + payload['reply_markup'] = _convert_markup(reply_markup) + return _make_request(token, method_url, params=payload, files=files, method='post') + + def send_data(token, chat_id, data, data_type, reply_to_message_id=None, reply_markup=None): method_url = get_method_by_type(data_type) payload = {'chat_id': chat_id} @@ -155,8 +194,6 @@ def send_data(token, chat_id, data, data_type, reply_to_message_id=None, reply_m def get_method_by_type(data_type): - if data_type == 'audio': - return 'sendAudio' if data_type == 'document': return 'sendDocument' if data_type == 'sticker': diff --git a/telebot/types.py b/telebot/types.py index 8c98774..f906edd 100644 --- a/telebot/types.py +++ b/telebot/types.py @@ -44,6 +44,7 @@ class JsonDeserializable: Subclasses of this class are guaranteed to be able to be created from a json-style dict or json formatted string. All subclasses of this class must override de_json. """ + @classmethod def de_json(cls, json_type): """ @@ -126,6 +127,9 @@ class Message(JsonDeserializable): if 'audio' in obj: opts['audio'] = Audio.de_json(obj['audio']) content_type = 'audio' + if 'voice' in obj: + opts['voice'] = Audio.de_json(obj['voice']) + content_type = 'voice' if 'document' in obj: opts['document'] = Document.de_json(obj['document']) content_type = 'document' @@ -210,6 +214,35 @@ class PhotoSize(JsonDeserializable): class Audio(JsonDeserializable): + @classmethod + def de_json(cls, json_string): + obj = cls.check_json(json_string) + file_id = obj['file_id'] + duration = obj['duration'] + performer = None + title = None + mime_type = None + file_size = None + if 'mime_type' in obj: + mime_type = obj['mime_type'] + if 'file_size' in obj: + file_size = obj['file_size'] + if 'performer' in obj: + performer = obj['performer'] + if 'title' in obj: + title = obj['title'] + return Audio(file_id, duration, performer, title, mime_type, file_size) + + def __init__(self, file_id, duration, performer=None, title=None, mime_type=None, file_size=None): + self.file_id = file_id + self.duration = duration + self.performer = performer + self.title = title + self.mime_type = mime_type + self.file_size = file_size + + +class Voice(JsonDeserializable): @classmethod def de_json(cls, json_string): obj = cls.check_json(json_string) diff --git a/tests/test_data/record.mp3 b/tests/test_data/record.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..759f0d224e0ddd57b7758fcc79e957ea408c1802 GIT binary patch literal 20096 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 literal 0 HcmV?d00001 diff --git a/tests/test_data/record.ogg b/tests/test_data/record.ogg new file mode 100644 index 0000000000000000000000000000000000000000..09177b85a544045534bf0afeeff1500b4128fbea GIT binary patch literal 10481 zcmeZIPY-5bVt|6~`?GpM%!PZRCNjz~mgN^EWfp@37#r+B6az!UZV0`S5v&u!VPIeY z>11SJU|>GkWzFaC9|;^~h8V-kz`)>>Se9mLre|!fXJ}vmQZCQHz>u1koS%|fWb2by zmTYRKXJQDFRLIFpg6Lyph0sb)&S8uU4h#$uP6Ar2Ym@t|PKYY@NG@97bV~EMtkVU> z#VXDnR>w?_OC-DROzCnu*?3_>C<92t5}ELTB2V4tbBY&Bgr6yVq40c8@l%ELGliV0 z&*v2PSw5ds)Mp5hmE@ z&J-jok z5q)Wy^VF&qY0O%rwR%(LsZBbkH@)7a2iESvzz`59aqM{3o09pV1M-S_K9Mh9->^31(Ona41SiI?oLf zis2G-k`Z*4bvoy~a%uAe%~sXqOTlX#ITUN&+kU@S{T>np0t^g^A{HHu$5l8KTarZ7 zT?&^ea45DsRf#xN`9g)`ZnJ>Xjyct*cYeQD4Gszh4u%5?Edov)iXcLB$&?@u&1Ex^ zx-^f=6rV9XuF%Y5^kTteKdX~VCiz*NQd!&=l&!f{B-m%;Q?cZ=Td&P2Uhk-x++%o5 z0zoK)gQ0a*|r+wDihp%PVKC=#&F1VPIhp0OzfSMc`;t ziJZ19bKY`LWUpG)wQS|8Ravu^W#UIn3l�FmN(3$R010aW9lPUI_9PID{3L859^8 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 jPnu=!Lp4#E(vbKWl^P!%NadBOLWO*0>PD`Km literal 0 HcmV?d00001 diff --git a/tests/test_data/record.wav b/tests/test_data/record.wav new file mode 100644 index 0000000000000000000000000000000000000000..7bfd33558182c31a11a6ae63c23b7b34cc9aa4a7 GIT binary patch literal 60044 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 Date: Wed, 19 Aug 2015 18:13:40 +0800 Subject: [PATCH 2/4] Fix test case error. --- tests/test_types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_types.py b/tests/test_types.py index 9686b75..cb4d1ca 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -110,5 +110,5 @@ def test_json_contact(): def test_json_voice(): json_string = r'{"duration": 0,"mime_type": "audio/ogg","file_id": "AwcccccccDH1JaB7w_gyFjYQxVAg","file_size": 10481}' voice = types.Voice.de_json(json_string) - assert voice.duration == 0; + assert voice.duration == 0 assert voice.file_size == 10481 From 1517979bf243cb0b0f5a2fb69364cf69dc9afd85 Mon Sep 17 00:00:00 2001 From: eternnoir Date: Wed, 19 Aug 2015 18:25:08 +0800 Subject: [PATCH 3/4] Voice bug fix. --- telebot/types.py | 2 +- tests/test_telebot.py | 2 -- tests/test_types.py | 2 ++ 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/telebot/types.py b/telebot/types.py index f906edd..a1a532d 100644 --- a/telebot/types.py +++ b/telebot/types.py @@ -254,7 +254,7 @@ class Voice(JsonDeserializable): mime_type = obj['mime_type'] if 'file_size' in obj: file_size = obj['file_size'] - return Audio(file_id, duration, mime_type, file_size) + return Voice(file_id, duration, mime_type, file_size) def __init__(self, file_id, duration, mime_type=None, file_size=None): self.file_id = file_id diff --git a/tests/test_telebot.py b/tests/test_telebot.py index 5ec4b12..a53a3f0 100644 --- a/tests/test_telebot.py +++ b/tests/test_telebot.py @@ -197,6 +197,4 @@ def test_not_string(): i1 = 10 assert not apihelper.is_string(i1) - test_send_voice() -test_send_audio() diff --git a/tests/test_types.py b/tests/test_types.py index cb4d1ca..dadc611 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -112,3 +112,5 @@ def test_json_voice(): voice = types.Voice.de_json(json_string) assert voice.duration == 0 assert voice.file_size == 10481 + +test_json_voice() From b17831b726c67cec2e358b7101eafccfb0ca9865 Mon Sep 17 00:00:00 2001 From: eternnoir Date: Wed, 19 Aug 2015 18:27:35 +0800 Subject: [PATCH 4/4] Update Comment. --- telebot/__init__.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/telebot/__init__.py b/telebot/__init__.py index fedeec3..0528340 100644 --- a/telebot/__init__.py +++ b/telebot/__init__.py @@ -233,18 +233,29 @@ class TeleBot: def send_audio(self, chat_id, audio, duration=None, performer=None, title=None, reply_to_message_id=None, reply_markup=None): """ - Use this method to send audio files, if you want Telegram clients to display the file as a playable - voice message. For this to work, your audio must be in an .ogg file encoded with OPUS - :param chat_id: - :param data: - :param reply_to_message_id: + Use this method to send audio files, if you want Telegram clients to display them in the music player. Your audio must be in the .mp3 format. + :param chat_id:Unique identifier for the message recipient + :param audio:Audio file to send. + :param duration:Duration of the audio in seconds + :param performer:Performer + :param title:Track name + :param reply_to_message_id:If the message is a reply, ID of the original messag :param reply_markup: - :return: API reply. + :return: Message """ return types.Message.de_json( apihelper.send_audio(self.token, chat_id, audio,duration,performer,title, reply_to_message_id, reply_markup)) def send_voice(self, chat_id, voice, duration=None, reply_to_message_id=None, reply_markup=None): + """ + Use this method to send audio files, if you want Telegram clients to display the file as a playable voice message. + :param chat_id:Unique identifier for the message recipient. + :param voice: + :param duration:Duration of sent audio in seconds + :param reply_to_message_id: + :param reply_markup: + :return: Message + """ return types.Message.de_json( apihelper.send_voice(self.token, chat_id, voice, duration, reply_to_message_id,reply_markup))