mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2026-06-19 07:35:19 +00:00
Support Business Message Deletion in telegram.Message.delete() (#4869)
Co-authored-by: aelkheir <90580077+aelkheir@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
features = "Extend :meth:`telegram.Message.delete` shortcut to support business message deletion"
|
||||
[[pull_requests]]
|
||||
uid = "4869"
|
||||
author_uid = "jainamoswal"
|
||||
closes_threads = ["4867"]
|
||||
@@ -4320,18 +4320,43 @@ class Message(MaybeInaccessibleMessage):
|
||||
pool_timeout: ODVInput[float] = DEFAULT_NONE,
|
||||
api_kwargs: Optional[JSONDict] = None,
|
||||
) -> bool:
|
||||
"""Shortcut for::
|
||||
"""Shortcut for either::
|
||||
|
||||
await bot.delete_message(
|
||||
chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
|
||||
)
|
||||
|
||||
For the documentation of the arguments, please see :meth:`telegram.Bot.delete_message`.
|
||||
or::
|
||||
|
||||
await bot.delete_business_messages(
|
||||
business_connection_id=self.business_connection_id,
|
||||
message_ids=[self.message_id],
|
||||
*args,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
For the documentation of the arguments, please see
|
||||
:meth:`telegram.Bot.delete_message` and :meth:`telegram.Bot.delete_business_messages`.
|
||||
|
||||
.. versionchanged:: NEXT.VERSION
|
||||
Calls either :meth:`telegram.Bot.delete_message`
|
||||
or :meth:`telegram.Bot.delete_business_messages` based
|
||||
on :attr:`business_connection_id`.
|
||||
|
||||
Returns:
|
||||
:obj:`bool`: On success, :obj:`True` is returned.
|
||||
|
||||
"""
|
||||
if self.business_connection_id:
|
||||
return await self.get_bot().delete_business_messages(
|
||||
business_connection_id=self.business_connection_id,
|
||||
message_ids=[self.message_id],
|
||||
read_timeout=read_timeout,
|
||||
write_timeout=write_timeout,
|
||||
connect_timeout=connect_timeout,
|
||||
pool_timeout=pool_timeout,
|
||||
api_kwargs=api_kwargs,
|
||||
)
|
||||
return await self.get_bot().delete_message(
|
||||
chat_id=self.chat_id,
|
||||
message_id=self.message_id,
|
||||
|
||||
+41
-12
@@ -18,7 +18,7 @@
|
||||
# along with this program. If not, see [http://www.gnu.org/licenses/].
|
||||
|
||||
import datetime as dtm
|
||||
from copy import copy
|
||||
from copy import copy, deepcopy
|
||||
|
||||
import pytest
|
||||
|
||||
@@ -2774,20 +2774,49 @@ class TestMessageWithoutRequest(MessageTestBase):
|
||||
monkeypatch.setattr(message.get_bot(), "get_game_high_scores", make_assertion)
|
||||
assert await message.get_game_high_scores(user_id=1)
|
||||
|
||||
async def test_delete(self, monkeypatch, message):
|
||||
@pytest.mark.parametrize("business_connection_id", [None, "123456789"])
|
||||
async def test_delete(self, monkeypatch, message, business_connection_id):
|
||||
message = deepcopy(message)
|
||||
message.business_connection_id = business_connection_id
|
||||
|
||||
async def make_assertion(*_, **kwargs):
|
||||
chat_id = kwargs["chat_id"] == message.chat_id
|
||||
message_id = kwargs["message_id"] == message.message_id
|
||||
return chat_id and message_id
|
||||
url: str = kwargs.get("url")
|
||||
data = kwargs.get("request_data").parameters
|
||||
|
||||
assert check_shortcut_signature(
|
||||
Message.delete, Bot.delete_message, ["chat_id", "message_id"], []
|
||||
)
|
||||
assert await check_shortcut_call(message.delete, message.get_bot(), "delete_message")
|
||||
assert await check_defaults_handling(message.delete, message.get_bot())
|
||||
if not message.business_connection_id:
|
||||
endpoint = url.endswith("deleteMessage")
|
||||
chat_id = data.get("chat_id") == message.chat_id
|
||||
message_id = data.get("message_id") == message.message_id
|
||||
return endpoint and chat_id and message_id
|
||||
|
||||
monkeypatch.setattr(message.get_bot(), "delete_message", make_assertion)
|
||||
assert await message.delete()
|
||||
endpoint = url.endswith("deleteBusinessMessages")
|
||||
business_connection_id = (
|
||||
data.get("business_connection_id") == message.business_connection_id
|
||||
)
|
||||
message_ids = data.get("message_ids") == [message.message_id]
|
||||
return business_connection_id and message_ids and endpoint
|
||||
|
||||
monkeypatch.setattr(message.get_bot().request, "post", make_assertion)
|
||||
|
||||
if not message.business_connection_id:
|
||||
assert check_shortcut_signature(
|
||||
Message.delete, Bot.delete_message, ["chat_id", "message_id"], []
|
||||
)
|
||||
assert await check_shortcut_call(message.delete, message.get_bot(), "delete_message")
|
||||
assert await check_defaults_handling(message.delete, message.get_bot())
|
||||
assert await message.delete()
|
||||
else:
|
||||
assert check_shortcut_signature(
|
||||
Message.delete,
|
||||
Bot.delete_business_messages,
|
||||
["business_connection_id", "message_ids"],
|
||||
[],
|
||||
)
|
||||
assert await check_shortcut_call(
|
||||
message.delete, message.get_bot(), "delete_business_messages"
|
||||
)
|
||||
assert await check_defaults_handling(message.delete, message.get_bot())
|
||||
assert await message.delete()
|
||||
|
||||
async def test_stop_poll(self, monkeypatch, message):
|
||||
async def make_assertion(*_, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user