mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-09 17:33:44 +00:00
Merge remote-tracking branch 'origin/dev-2.x' into dev-2.x
This commit is contained in:
commit
718a663036
2 changed files with 12 additions and 4 deletions
|
|
@ -6,7 +6,7 @@ from typing import Any, Dict, Iterable, Optional, Union
|
|||
|
||||
from aiogram import types
|
||||
from aiogram.dispatcher.filters.filters import BoundFilter, Filter
|
||||
from aiogram.types import CallbackQuery, Message
|
||||
from aiogram.types import CallbackQuery, Message, InlineQuery
|
||||
from aiogram.utils.deprecated import warn_deprecated
|
||||
|
||||
|
||||
|
|
@ -159,11 +159,13 @@ class Text(Filter):
|
|||
elif 'text_endswith' in full_config:
|
||||
return {'endswith': full_config.pop('text_endswith')}
|
||||
|
||||
async def check(self, obj: Union[Message, CallbackQuery]):
|
||||
async def check(self, obj: Union[Message, CallbackQuery, InlineQuery]):
|
||||
if isinstance(obj, Message):
|
||||
text = obj.text or obj.caption or ''
|
||||
elif isinstance(obj, CallbackQuery):
|
||||
text = obj.data
|
||||
elif isinstance(obj, InlineQuery):
|
||||
text = obj.query
|
||||
else:
|
||||
return False
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
import contextvars
|
||||
from typing import TypeVar, Type
|
||||
|
||||
__all__ = ('DataMixin', 'ContextInstanceMixin')
|
||||
|
||||
|
||||
class DataMixin:
|
||||
|
|
@ -23,19 +26,22 @@ class DataMixin:
|
|||
return self.data.get(key, default)
|
||||
|
||||
|
||||
T = TypeVar('T')
|
||||
|
||||
|
||||
class ContextInstanceMixin:
|
||||
def __init_subclass__(cls, **kwargs):
|
||||
cls.__context_instance = contextvars.ContextVar('instance_' + cls.__name__)
|
||||
return cls
|
||||
|
||||
@classmethod
|
||||
def get_current(cls, no_error=True):
|
||||
def get_current(cls: Type[T], no_error=True) -> T:
|
||||
if no_error:
|
||||
return cls.__context_instance.get(None)
|
||||
return cls.__context_instance.get()
|
||||
|
||||
@classmethod
|
||||
def set_current(cls, value):
|
||||
def set_current(cls: Type[T], value: T):
|
||||
if not isinstance(value, cls):
|
||||
raise TypeError(f"Value should be instance of '{cls.__name__}' not '{type(value).__name__}'")
|
||||
cls.__context_instance.set(value)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue