Skip to content

Commit 152793f

Browse files
committed
fix(folders): normalize newly resolved Saved Messages peers
1 parent 3f573cc commit 152793f

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

‎telegram_mcp/tools/folders.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,11 @@ async def update_folder(
352352
peer = known.get(peer_id)
353353
if peer is None:
354354
peer = await resolve_input_entity(peer_id, cl)
355+
if isinstance(peer, types.InputPeerSelf) and self_id is None:
356+
me = await cl.get_me()
357+
if me is None:
358+
raise _FolderValidationError("Error: account identity is unavailable.")
359+
self_id = me.id
355360
if _stable_peer_id(peer, self_id) != peer_id:
356361
raise _FolderValidationError(
357362
"Error: resolved peer identity differs from requested ID."

‎tests/test_folder_organization.py‎

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,6 @@ async def test_explicit_peer_limit_counts_pinned_union(client, premium, count, a
304304
@pytest.mark.asyncio
305305
async def test_pinned_overlap_not_double_counted_and_exclusions_limited_separately(client):
306306
assert parsed(await folders.update_folder(2, {"include_chat_ids": [1, 2, 3]}))["success"]
307-
client.updates.clear() # property is computed; requests cleared below
308307
client.requests.clear()
309308
assert "limit" in await folders.update_folder(2, {"exclude_chat_ids": [4, 5, 6, 7]})
310309
assert not client.updates
@@ -461,3 +460,16 @@ async def test_multi_account_reads_and_writes_route_selected_client(client, monk
461460
assert parsed(await folders.get_folder_limits(account="second"))["premium"] is True
462461
assert parsed(await folders.update_folder(2, {"title": "Second"}, account="second"))["success"]
463462
assert not client.updates and len(second.updates) == 1
463+
464+
465+
@pytest.mark.asyncio
466+
async def test_saved_messages_can_be_added_by_stable_account_id(client, monkeypatch):
467+
async def saved_messages(*args):
468+
return types.InputPeerSelf()
469+
470+
monkeypatch.setattr(folders, "resolve_input_entity", saved_messages)
471+
result = parsed(await folders.update_folder(2, {"include_chat_ids": [99]}))
472+
assert result["success"] is True
473+
assert isinstance(client.updates[0].filter.include_peers[0], types.InputPeerSelf)
474+
snapshot = parsed(await folders.get_folder_snapshot())
475+
assert snapshot["folders"][1]["definition"]["include_chat_ids"] == [99]

0 commit comments

Comments
 (0)