From adeb5f8d73f9f7e0ee0b62fd3ba1184d951ab254 Mon Sep 17 00:00:00 2001 From: apepenkov Date: Thu, 9 Nov 2023 20:57:10 +0300 Subject: [PATCH] implement callback data filter --- .../_impl/client/events/filters/__init__.py | 2 ++ .../_impl/client/events/filters/callback.py | 23 +++++++++++++++++++ client/src/telethon/events/filters.py | 2 ++ 3 files changed, 27 insertions(+) create mode 100644 client/src/telethon/_impl/client/events/filters/callback.py diff --git a/client/src/telethon/_impl/client/events/filters/__init__.py b/client/src/telethon/_impl/client/events/filters/__init__.py index 740f1754..c496f317 100644 --- a/client/src/telethon/_impl/client/events/filters/__init__.py +++ b/client/src/telethon/_impl/client/events/filters/__init__.py @@ -1,6 +1,7 @@ from .combinators import All, Any, Filter, Not from .common import Chats, ChatType, Senders from .messages import Command, Forward, Incoming, Media, Outgoing, Reply, Text +from .callback import CallbackData __all__ = [ "All", @@ -17,4 +18,5 @@ __all__ = [ "Outgoing", "Reply", "Text", + "CallbackData", ] diff --git a/client/src/telethon/_impl/client/events/filters/callback.py b/client/src/telethon/_impl/client/events/filters/callback.py new file mode 100644 index 00000000..77599ac9 --- /dev/null +++ b/client/src/telethon/_impl/client/events/filters/callback.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from .combinators import Combinable +from ..event import Event + + +class CallbackData(Combinable): + """ + Filter by ``event.data`` using a full bytes match, used for callback events :class:`events.ButtonCallback` + + It checks if ``event.data`` is equal to the data passed to the filter. + + :param data: Bytes to match data with. + """ + + __slots__ = ("_data",) + + def __init__(self, data: bytes) -> None: + self._data = data + + def __call__(self, event: Event) -> bool: + data = getattr(event, "data", None) + return self._data == data if data is not None else False diff --git a/client/src/telethon/events/filters.py b/client/src/telethon/events/filters.py index 93944358..1fc0716e 100644 --- a/client/src/telethon/events/filters.py +++ b/client/src/telethon/events/filters.py @@ -22,6 +22,7 @@ from .._impl.client.events.filters import ( Reply, Senders, Text, + CallbackData, ) __all__ = [ @@ -39,4 +40,5 @@ __all__ = [ "Reply", "Senders", "Text", + "CallbackData" ]