diff --git a/nonebot/internal/adapter/message.py b/nonebot/internal/adapter/message.py index d83a6893..0d1e25b0 100644 --- a/nonebot/internal/adapter/message.py +++ b/nonebot/internal/adapter/message.py @@ -285,7 +285,7 @@ class Message(List[TMS], abc.ABC): 消息内是否存在给定消息段或给定类型的消息段 """ if isinstance(value, str): - return bool(next((seg for seg in self if seg.type == value), None)) + return next((seg for seg in self if seg.type == value), None) is not None return super().__contains__(value) def has(self, value: Union[TMS, str]) -> bool: diff --git a/tests/test_adapters/test_message.py b/tests/test_adapters/test_message.py index 7c20fbe7..9ca21c39 100644 --- a/tests/test_adapters/test_message.py +++ b/tests/test_adapters/test_message.py @@ -192,6 +192,11 @@ def test_message_contains(): assert message.has("foo") is False assert "foo" not in message + assert not bool(FakeMessageSegment.text("")) + msg_with_empty_seg = FakeMessage([FakeMessageSegment.text("")]) + assert msg_with_empty_seg.has("text") is True + assert "text" in msg_with_empty_seg + def test_message_only(): message = FakeMessage(