fix(telegram): ignore implicit topic root replies (#175)
This commit is contained in:
@@ -57,6 +57,34 @@ def test_parse_incoming_update_maps_fields() -> None:
|
||||
assert msg.raw["message_id"] == 10
|
||||
|
||||
|
||||
def test_parse_incoming_update_ignores_implicit_topic_reply() -> None:
|
||||
update = Update(
|
||||
update_id=1,
|
||||
message=Message(
|
||||
message_id=187,
|
||||
message_thread_id=163,
|
||||
is_topic_message=True,
|
||||
text="Hello",
|
||||
chat=Chat(id=123, type="supergroup", is_forum=True),
|
||||
from_=User(id=99),
|
||||
reply_to_message=MessageReply(
|
||||
message_id=163,
|
||||
from_=User(id=77, is_bot=True, username="TakopiBot"),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
msg = parse_incoming_update(update, chat_id=123)
|
||||
assert msg is not None
|
||||
assert isinstance(msg, TelegramIncomingMessage)
|
||||
assert msg.thread_id == 163
|
||||
assert msg.is_topic_message is True
|
||||
assert msg.reply_to_message_id is None
|
||||
assert msg.reply_to_text is None
|
||||
assert msg.reply_to_is_bot is None
|
||||
assert msg.reply_to_username is None
|
||||
|
||||
|
||||
def test_parse_incoming_update_filters_non_matching_chat() -> None:
|
||||
update = Update(
|
||||
update_id=1,
|
||||
|
||||
@@ -83,6 +83,32 @@ def test_should_trigger_run_reply_to_bot() -> None:
|
||||
)
|
||||
|
||||
|
||||
def test_should_trigger_run_ignores_implicit_topic_reply_to_root() -> None:
|
||||
runtime = _runtime()
|
||||
msg = TelegramIncomingMessage(
|
||||
transport="telegram",
|
||||
chat_id=1,
|
||||
message_id=187,
|
||||
text="hello",
|
||||
reply_to_message_id=163,
|
||||
reply_to_text=None,
|
||||
reply_to_is_bot=True,
|
||||
reply_to_username="TakopiBot",
|
||||
sender_id=1,
|
||||
thread_id=163,
|
||||
is_topic_message=True,
|
||||
chat_type="supergroup",
|
||||
is_forum=True,
|
||||
)
|
||||
assert not should_trigger_run(
|
||||
msg,
|
||||
bot_username=None,
|
||||
runtime=runtime,
|
||||
command_ids=set(),
|
||||
reserved_chat_commands=set(RESERVED_CHAT_COMMANDS),
|
||||
)
|
||||
|
||||
|
||||
def test_should_trigger_run_known_commands() -> None:
|
||||
runtime = _runtime()
|
||||
assert should_trigger_run(
|
||||
|
||||
Reference in New Issue
Block a user