mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
fix: bug IDFilter checking message from channel (#376)
* fix: bug IDFilter checking message from channel * chore: add mark.asyncio for tests which were ignored previously
This commit is contained in:
parent
5586e5110d
commit
f904292751
3 changed files with 33 additions and 3 deletions
|
|
@ -591,7 +591,9 @@ class IDFilter(Filter):
|
|||
|
||||
async def check(self, obj: Union[Message, CallbackQuery, InlineQuery]):
|
||||
if isinstance(obj, Message):
|
||||
user_id = obj.from_user.id
|
||||
user_id = None
|
||||
if obj.from_user is not None:
|
||||
user_id = obj.from_user.id
|
||||
chat_id = obj.chat.id
|
||||
elif isinstance(obj, CallbackQuery):
|
||||
user_id = obj.from_user.id
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ import pytest
|
|||
from aiogram.dispatcher.filters.builtin import (
|
||||
Text,
|
||||
extract_chat_ids,
|
||||
ChatIDArgumentType, ForwardedMessageFilter,
|
||||
ChatIDArgumentType, ForwardedMessageFilter, IDFilter,
|
||||
)
|
||||
from aiogram.types import Message
|
||||
from tests.types.dataset import MESSAGE
|
||||
from tests.types.dataset import MESSAGE, MESSAGE_FROM_CHANNEL
|
||||
|
||||
|
||||
class TestText:
|
||||
|
|
@ -75,6 +75,8 @@ def test_extract_chat_ids(chat_id: ChatIDArgumentType, expected: Set[int]):
|
|||
|
||||
|
||||
class TestForwardedMessageFilter:
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_filter_forwarded_messages(self):
|
||||
filter = ForwardedMessageFilter(is_forwarded=True)
|
||||
|
||||
|
|
@ -85,6 +87,7 @@ class TestForwardedMessageFilter:
|
|||
assert await filter.check(forwarded_message)
|
||||
assert not await filter.check(not_forwarded_message)
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_filter_not_forwarded_messages(self):
|
||||
filter = ForwardedMessageFilter(is_forwarded=False)
|
||||
|
||||
|
|
@ -94,3 +97,14 @@ class TestForwardedMessageFilter:
|
|||
|
||||
assert await filter.check(not_forwarded_message)
|
||||
assert not await filter.check(forwarded_message)
|
||||
|
||||
|
||||
class TestIDFilter:
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_chat_id_for_channels(self):
|
||||
message_from_channel = Message(**MESSAGE_FROM_CHANNEL)
|
||||
|
||||
filter = IDFilter(chat_id=message_from_channel.chat.id)
|
||||
|
||||
assert await filter.check(message_from_channel)
|
||||
|
|
|
|||
|
|
@ -409,6 +409,20 @@ MESSAGE_WITH_VOICE = {
|
|||
"voice": VOICE,
|
||||
}
|
||||
|
||||
CHANNEL = {
|
||||
"type": "channel",
|
||||
"username": "best_channel_ever",
|
||||
"id": -1001065170817,
|
||||
}
|
||||
|
||||
MESSAGE_FROM_CHANNEL = {
|
||||
"message_id": 123432,
|
||||
"from": None,
|
||||
"chat": CHANNEL,
|
||||
"date": 1508768405,
|
||||
"text": "Hi, world!",
|
||||
}
|
||||
|
||||
PRE_CHECKOUT_QUERY = {
|
||||
"id": "262181558630368727",
|
||||
"from": USER,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue