Skip to content

Commit

Permalink
Do not delete messages on behalf of current chat
Browse files Browse the repository at this point in the history
  • Loading branch information
da-maltsev committed Aug 24, 2023
1 parent 04162f8 commit 9ddbdf5
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
2 changes: 1 addition & 1 deletion filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def with_default_filters(*filters: BaseFilter) -> BaseFilter:

class IsMessageOnBehalfOfChat(MessageFilter):
def filter(self, message: Message) -> bool:
return message.sender_chat is not None
return message.sender_chat is not None and message.sender_chat.id != message.chat.id


class ContainsTelegramContact(MessageFilter):
Expand Down
21 changes: 18 additions & 3 deletions tests/tests_filters/test_is_message_behalf_of_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@


@pytest.fixture
def message(mock_message):
def mock_chat():
class MockChat:
def __init__(self, chat_id: int) -> None:
self.id = chat_id

return lambda chat_id: MockChat(chat_id=chat_id)

@pytest.fixture
def message(mock_message, mock_chat):
mock_message.sender_chat = None
mock_message.chat = mock_chat(chat_id=7)
return mock_message


Expand All @@ -18,7 +27,13 @@ def test_false_if_no_sender_chat(do_filter, message):
assert do_filter(message) is False


def test_true_if_sender_chat(do_filter, message):
message.sender_chat = "very-suspicious-id"
def test_false_if_sender_chat_same_as_current(do_filter, message, mock_chat):
message.sender_chat = message.chat

assert do_filter(message) is False


def test_true_if_sender_chat(do_filter, message, mock_chat):
message.sender_chat = mock_chat(chat_id=55)

assert do_filter(message) is True

0 comments on commit 9ddbdf5

Please sign in to comment.