try
{
var client = project.Context["client"] as TelegramClient;
// Получаем объект TelegramClient из контекста проекта
var requestDialog = new TeleSharp.TL.Messages.TLRequestGetDialogs()
{
OffsetDate = 0,
OffsetId = 0,
OffsetPeer = new TeleSharp.TL.TLInputPeerSelf(),
Limit = 100,
Hash = 0
};
// Создаем запрос на получение списка диалогов
var responseDialog = client.SendRequest<TeleSharp.TL.Messages.TLAbsDialogs>(requestDialog);
// Отправляем запрос на сервер Telegram для получения списка диалогов
if (responseDialog is TeleSharp.TL.Messages.TLDialogs)
{
// Проверяем тип ответа - полный список диалогов
var dialogs = (TeleSharp.TL.Messages.TLDialogs)responseDialog;
// Приводим объект ответа к типу TLDialogs
var dialogUsers = dialogs.Dialogs.OfType<TeleSharp.TL.TLDialog>().Where(x => x.Peer is TeleSharp.TL.TLPeerUser);
// Фильтруем диалоги, оставляя только диалоги с пользовательскими пирами
foreach (var dialogUser in dialogUsers)
{
var dialogUserPeer = (TeleSharp.TL.TLPeerUser)dialogUser.Peer;
// Получаем пира пользователя из диалога
var userId = dialogUserPeer.UserId;
// Получаем идентификатор пользователя
var requestDelete = new TeleSharp.TL.Messages.TLRequestDeleteHistory()
{
Peer = new TeleSharp.TL.TLInputPeerUser() { UserId = userId },
JustClear = false,
Revoke = true
};
// Создаем запрос на удаление диалога с указанным пользователем
var responseDelete = client.SendRequest<TeleSharp.TL.Messages.TLAffectedMessages>(requestDelete);
// Отправляем запрос на сервер Telegram для удаления диалога
if (responseDelete is TeleSharp.TL.Messages.TLAffectedMessages affectedMessages && affectedMessages.PtsCount > 0)
{
project.SendInfoToLog($"Диалог пользователя с ID {userId} успешно удален");
// Если удаление диалога прошло успешно, отправляем информацию в лог
}
else
{
project.SendInfoToLog($"Не удалось удалить диалог пользователя с ID {userId}");
// Если удаление диалога не удалось, отправляем информацию об ошибке в лог
}
}
}
else if (responseDialog is TeleSharp.TL.Messages.TLDialogsSlice)
{
// Если ответ является неполным списком диалогов
}
else if (responseDialog is TeleSharp.TL.Messages.TLDialogsNotModified)
{
// Если диалоги не изменились
}
}
catch (Exception e)
{
project.SendErrorToLog(e.Message, true);
// Обработка и отправка информации об ошибке в лог
}