More fixes for suggestions:

- I forgot some places with func call
- More suitable docs for filter
- `if` in full block
This commit is contained in:
JuniorJPDJ 2020-05-16 05:02:15 +02:00
parent a6e8f93d30
commit 85cfe016b0
4 changed files with 13 additions and 8 deletions

View File

@ -118,8 +118,10 @@ class CallbackQuery(EventBuilder):
elif event.query.data != self.match: elif event.query.data != self.match:
return return
if not self.func or self.func(event): if self.func:
return event # Return the result of func directly as it may need to be awaited
return self.func(event)
return True
class Event(EventCommon, SenderGetter): class Event(EventCommon, SenderGetter):
""" """

View File

@ -105,9 +105,8 @@ class EventBuilder(abc.ABC):
def filter(self, event): def filter(self, event):
""" """
If the ID of ``event._chat_peer`` isn't in the chats set (or it is Returns a truthy value if the event passed the filter and should be
but the set is a blacklist) returns `True`, otherwise `False`. used, or falsy otherwise. The return value may need to be awaited.
May also return awaitable which awaits to bool-able value.
The events must have been resolved before this can be called. The events must have been resolved before this can be called.
""" """

View File

@ -46,6 +46,8 @@ class Raw(EventBuilder):
return update return update
def filter(self, event): def filter(self, event):
if ((not self.types or isinstance(event, self.types)) if not self.types or isinstance(event, self.types):
and (not self.func or self.func(event))): if self.func:
# Return the result of func directly as it may need to be awaited
return self.func(event)
return event return event

View File

@ -316,7 +316,9 @@ class Conversation(ChatGetter):
if inst: if inst:
filter = ev.filter(inst) filter = ev.filter(inst)
filter = (await filter) if inspect.isawaitable(filter) else filter if inspect.isawaitable(filter):
filter = await filter
if filter: if filter:
fut.set_result(inst) fut.set_result(inst)
del self._custom[key] del self._custom[key]