X Tutup
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ The following wonderful people contributed directly or indirectly to this projec
- `Eli Gao <https://github.com/eligao>`_
- `ErgoZ Riftbit Vaper <https://github.com/ergoz>`_
- `Eugene Lisitsky <https://github.com/lisitsky>`_
- `evgfilim1 <https://github.com/evgfilim1>`_
- `franciscod <https://github.com/franciscod>`_
- `Hugo Damer <https://github.com/HakimusGIT>`_
- `Jacob Bom <https://github.com/bomjacob>`_
Expand Down
29 changes: 29 additions & 0 deletions telegram/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,34 @@ def send_message(self,

return url, data

@log
@message
def delete_message(self, chat_id, message_id):
"""Use this method to delete messages which were sent not later than 48 hours ago.

Args:
chat_id (str): Unique identifier for the target chat or
username of the target channel (in the format
@channelusername).
message_id (int): Unique message identifier.

Note:
This method is not documented, so it's not guaranteed to work. Also, its behaviour can
be changed at any time.

Returns:
bool: On success, `True` is returned.

Raises:
:class:`telegram.TelegramError`

"""
url = '{0}/deleteMessage'.format(self.base_url)

data = {'chat_id': chat_id, 'message_id': message_id}

return url, data

@log
@message
def forward_message(self,
Expand Down Expand Up @@ -1739,6 +1767,7 @@ def __reduce__(self):
# camelCase aliases
getMe = get_me
sendMessage = send_message
deleteMessage = delete_message
forwardMessage = forward_message
sendPhoto = send_photo
sendAudio = send_audio
Expand Down
19 changes: 19 additions & 0 deletions telegram/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,25 @@ def edit_reply_markup(self, *args, **kwargs):
return self.bot.edit_message_reply_markup(
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)

def delete(self, *args, **kwargs):
"""
Shortcut for

>>> bot.delete_message(chat_id=message.chat_id,
... message_id=message.message_id,
... *args, **kwargs)

Note:
This method is not documented, so it's not guaranteed to work. Also, its behaviour can
be changed at any time.

Returns:
bool: On success, `True` is returned.

"""
return self.bot.delete_message(
chat_id=self.chat_id, message_id=self.message_id, *args, **kwargs)

def parse_entity(self, entity):
"""
Returns the text from a given :class:`telegram.MessageEntity`.
Expand Down
19 changes: 19 additions & 0 deletions tests/test_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,25 @@ def test_sendMessage_no_web_page_preview(self):
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(message.text, u'Моё судно на воздушной подушке полно угрей')

@flaky(3, 1)
@timeout(10)
def test_deleteMessage(self):
message = self._bot.send_message(
chat_id=self._chat_id, text='This message will be deleted')

self.assertTrue(
self._bot.delete_message(
chat_id=self._chat_id, message_id=message.message_id))

@flaky(3, 1)
@timeout(10)
def test_deleteMessage_old_message(self):
with self.assertRaisesRegexp(telegram.TelegramError, "can't be deleted"):
# NOTE: This behaviour can be changed in future because `deleteMessage` method is not
# documented in Bot API reference now.
# Considering that the first message is old enough
self._bot.delete_message(chat_id=self._chat_id, message_id=1)

@flaky(3, 1)
@timeout(10)
def testGetUpdates(self):
Expand Down
20 changes: 20 additions & 0 deletions tests/test_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,26 @@ def test_edit_text(self):
self.assertTrue(self.is_json(message.to_json()))
self.assertEqual(message.text, 'Testing class method')

@flaky(3, 1)
def test_delete1(self):
"""Test for Message.delete"""
message = self._bot.send_message(
chat_id=self._chat_id, text='This message will be deleted')

self.assertTrue(message.delete())

@flaky(3, 1)
def test_delete2(self):
"""Another test for Message.delete"""
message = self._bot.send_message(
chat_id=self._chat_id,
text='This ^ message will not be deleted',
reply_to_message_id=1)

with self.assertRaisesRegexp(telegram.TelegramError, "can't be deleted"):
# NOTE: This behaviour can be changed in future. See `tests/test_bot.py` for more info
message.reply_to_message.delete()


if __name__ == '__main__':
unittest.main()
X Tutup