В исходном коде Pyrogram при скачивании файлов есть решение, необходимое для решения этой проблемы.
Решения заключается в создании временной сессии с нужным dc_id.
Прикладываю код функции, которая в безопасном режиме (не нужно думать о переключении dc_id) возвращает информацию по статистике канала
async def get_broadcast_stats(
client: Client,
dc_id: int,
input_channel: InputChannel,
) -> BroadcastStats:
session = Session(
client=client,
dc_id=dc_id,
auth_key=await Auth(
client=client,
dc_id=dc_id,
test_mode=await client.storage.test_mode(),
).create()
if dc_id != await client.storage.dc_id()
else await client.storage.auth_key(),
test_mode=await client.storage.test_mode(),
is_media=True,
)
try:
await session.start()
if dc_id != await client.storage.dc_id():
exported_auth = await client.invoke(
query=functions.auth.ExportAuthorization(dc_id=dc_id),
)
await session.invoke(
query=functions.auth.ImportAuthorization(
id=exported_auth.id,
bytes=exported_auth.bytes,
),
)
result = await session.invoke(
query=functions.stats.GetBroadcastStats(channel=input_channel),
)
finally:
await session.stop()
return result