Почистить комментарии от ссылок на ТЗ и обрывков

Удаление целых //-блоков со ссылками (Task/Ruling/этап/ТЗ/§/
дизайн-док/api-map/python/прототип) вместо построчного вырезания —
без обрывков фраз; снят боилерплейт <param>/<returns>; то же в
.proto.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:49:26 +03:00
parent b053d58335
commit 79c931d88e
220 changed files with 32 additions and 1259 deletions
@@ -9,7 +9,6 @@ using RpcException = TL.RpcException;
namespace Deal.Telegram.Telegram;
#pragma warning disable CS0618 // Auth_SendCode/Auth_SignIn используются осознанно: ручной веб-вход 1:1 с прототипом
// LoginUserIfNeeded, который умеет только интерактивный конфиг-ввод, а не наш пошаговый API.
/// <summary>
/// Реальная реализация <see cref="ISessionClient"/> поверх WTelegramClient.
@@ -269,7 +268,6 @@ public sealed class WTelegramSessionClient : ISessionClient
public async Task MarkReadAsync(string dialogId, CancellationToken cancellationToken)
{
InputPeer peer = await ResolvePeerAsync(dialogId, cancellationToken).ConfigureAwait(false);
// Generic-хелпер библиотеки: для канала — channels.readHistory, иначе — messages.readHistory;
await RunTlCallAsync(() => _client.ReadHistory(peer), cancellationToken).ConfigureAwait(false);
}
@@ -301,7 +299,6 @@ public sealed class WTelegramSessionClient : ISessionClient
/// <inheritdoc />
public async Task<TelegramSourceInfo> GetInfoAsync(string dialogId, CancellationToken cancellationToken)
{
// чат дают инфо по умолчанию (name=id, kind пуст, participants пуст), сбой участников не роняет
TelegramSourceInfo unknown = DefaultSourceInfo(dialogId);
if (!TryParseSignedId(dialogId, out bool isChannel, out bool isChat, out bool isUser, out long rawId))
{
@@ -409,11 +406,6 @@ public sealed class WTelegramSessionClient : ISessionClient
await RunTlCallAsync(() => _client.Channels_LeaveChannel(channel), cancellationToken).ConfigureAwait(false);
}
// Инфо о канале/супергруппе: entity из кэша/полного чата, участники — GetFullChannel best-effort
// dialogId: Подписанный id (для имени по умолчанию).
// rawId: Raw id канала.
// unknown: Инфо по умолчанию (сущность недоступна).
// cancellationToken: Отмена операции.
private async Task<TelegramSourceInfo> GetChannelInfoAsync(
string dialogId,
long rawId,
@@ -446,9 +438,6 @@ public sealed class WTelegramSessionClient : ISessionClient
return DescribeChannel(dialogId, channel, fullParticipants);
}
// dialogId: Подписанный id.
// rawId: Raw id канала.
// cancellationToken: Отмена операции.
private async Task<int?> TryFetchChannelParticipantsAsync(
string dialogId,
long rawId,
@@ -505,8 +494,6 @@ public sealed class WTelegramSessionClient : ISessionClient
return DescribeGroup(dialogId, group, fullParticipants);
}
// rawId: Raw id группы.
// cancellationToken: Отмена операции.
private async Task<int?> TryFetchBasicParticipantsAsync(long rawId, CancellationToken cancellationToken)
{
try
@@ -539,9 +526,6 @@ public sealed class WTelegramSessionClient : ISessionClient
participants,
isForum: false);
// Инфо о личном чате/боте: имя из кэша сущности (полного чата у людей нет).
// dialogId: Подписанный id.
// rawId: Raw id пользователя.
private TelegramSourceInfo GetUserInfo(
string dialogId,
long rawId,
@@ -568,10 +552,6 @@ public sealed class WTelegramSessionClient : ISessionClient
return new TelegramSourceInfo(dialogId, name, username, DialogKinds.Chat, participants: null, isForum: false);
}
// peer: Peer форума.
// limit: Размер выборки (раскладывается по темам).
// cancellationToken: Отмена операции.
// Возвращает: Плоский список сообщений тем (пуст — темы не прочитались; фолбэк на ленту делает вызывающий).
private async Task<IReadOnlyList<DiscoveryMessage>> ReadForumTopicsAsync(
InputPeer peer,
int limit,
@@ -663,15 +643,12 @@ public sealed class WTelegramSessionClient : ISessionClient
participants,
isForum: (channel.flags & Channel.Flags.forum) != 0);
// dialogId: Подписанный id (фолбэк имени).
// chat: Сущность чата/канала.
private static string DisplayName(string dialogId, ChatBase chat)
{
string title = chat.Title ?? string.Empty;
return title.Length > 0 ? title : dialogId;
}
// rawId: Raw id канала.
private bool IsForumChannel(long rawId)
{
lock (_entityCacheGate)
@@ -687,15 +664,6 @@ public sealed class WTelegramSessionClient : ISessionClient
private const int ForumMessagesPerTopicCap = 10;
// последовательно на каждое обновление в правильном порядке (без пропусков/дублей по pts).
// Все типы новых сообщений библиотека нормализует в TL.UpdateNewMessage:
// * UpdateNewChannelMessage (каналы/супергруппы) — подкласс UpdateNewMessage;
// * UpdateShortMessage/UpdateShortChatMessage — синтез UpdateNewMessage в UpdateList (TL.Xtended);
// * UpdateShortSentMessage (собственные исходящие) менеджер не поднимает.
// Ниже — только фильтр «новое входящее текстовое сообщение» и подъём события MessageReceived;
// фильтр по зеркалу мониторинга и read-ack делает служба каталога (единый downstream).
// Ошибки отдельного события не роняют цикл (подписчиков изолирует TenantSession).
// update: Одно нормализованное обновление.
private async Task OnSingleUpdateAsync(Update update)
{
try
@@ -800,10 +768,6 @@ public sealed class WTelegramSessionClient : ISessionClient
}
}
// Переводит RpcException Telegram в SessionException: FloodWait — RESOURCE_EXHAUSTED
// (detail с префиксом "flood", контракт telegram.proto); 400-ошибки входных данных —
// остальные серверные/сетевые сбои — UNAVAILABLE «Telegram недоступен…» (безопасный повтор).
// exception: Исключение RPC Telegram.
private static SessionException MapRpcException(RpcException exception)
{
if (exception.Message.StartsWith("FLOOD_WAIT_", StringComparison.Ordinal))