1 место Разбираем User - API Telegram по косточкам

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28
а путь какой проверяли? Он есть?
Да я создал путь для папки куда сохранился автоматом номер телефона с расширением .dat, теперь пишет :

Problem when trying to connect to [2001:b28:f23f:f005::a]:443; either there's no internet connection or the IP address version is not compatible (if the latter, consider using DataCenterIPVersion enum)
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 859
Баллы
113
Да я создал путь для папки куда сохранился автоматом номер телефона с расширением .dat, теперь пишет :

Problem when trying to connect to [2001:b28:f23f:f005::a]:443; either there's no internet connection or the IP address version is not compatible (if the latter, consider using DataCenterIPVersion enum)
А переводить текст ошибки на русский пробовали? понятнее станет.
 

simbioz

Client
Регистрация
31.08.2014
Сообщения
150
Благодарностей
27
Баллы
28

delyx

Client
Регистрация
19.12.2018
Сообщения
7
Благодарностей
0
Баллы
1
Можно ли с помошью этого метода создавать каналы и добавлять в них описание и фото ?
 

neonb

Пользователь
Регистрация
10.05.2022
Сообщения
35
Благодарностей
15
Баллы
8
  • Спасибо
Реакции: delyx

Starina

Client
Регистрация
01.01.2020
Сообщения
4
Благодарностей
3
Баллы
3
данные авторизации сохраняется в файл
как правило разлогина из сессии не происходит,
все зависит как с ней работаешь
Добрый день !

Уважаемый автор подскажите пожалуйста по какой причине возникает данная ошибка при попытке отметки сообщений как прочитанные

PEER_ID_INVALID



C#:
try

{

    var client = project.Context["client"];



    // Запрос на получение диалогов

    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);



    if (responseDialog is TeleSharp.TL.Messages.TLDialogs dialogs)

    {

        // Перебор каждого диалога

        foreach (var dialog in dialogs.Dialogs)

        {

            if (dialog is TeleSharp.TL.TLDialog dialogItem)

            {

                // Проверка, является ли диалог диалогом с пользователем

                if (dialogItem.Peer is TeleSharp.TL.TLPeerUser userPeer)

                {

              



                    var userId = userPeer.UserId;

                    var unreadCount = dialogItem.UnreadCount;



                    if (unreadCount > 0)

                    {

                        // Отметка непрочитанных сообщений как прочитанных

                        var requestRead = new TeleSharp.TL.Messages.TLRequestReadHistory()

                        {

                            Peer = new TeleSharp.TL.TLInputPeerUser() { UserId = userId },

                            MaxId = 0

                        };



                        // Отправка запроса на отметку сообщений как прочитанных

                        var responseRead = client.SendRequest<TeleSharp.TL.Messages.TLAffectedMessages>(requestRead);



                        if (responseRead is TeleSharp.TL.Messages.TLAffectedMessages affectedMessages && affectedMessages.PtsCount > 0)

                        {

                            // Успешная отметка сообщений

                            project.SendInfoToLog($"Все непрочитанные сообщения пользователя с ID {userId} отмечены как прочитанные");

                        }

                        else

                        {

                            // Нет непрочитанных сообщений для отметки

                            project.SendInfoToLog($"Нет непрочитанных сообщений от пользователя с ID {userId}");

                        }

                    }

                }

            }

        }

    }

    else

    {

        // Диалоги не найдены

        project.SendInfoToLog("Диалоги с пользователями не найдены");

    }

}

catch (Exception e)

{

    project.SendErrorToLog(e.Message, true);

}





Точно такая же ошибка появляется и при попытке удаления диалогов

C#:
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);

    // Обработка и отправка информации об ошибке в лог

}

при удалении чата тоже самое -
CHAT_ID_INVALID

Никак не могу найти решение данной проблеме .
Быть может это как то связано с библиотекой ?
Или же я сам где то накосячил здесь .
Буду очень признателен за вашу помощь !
 

gr8yf0x

Client
Регистрация
02.08.2016
Сообщения
23
Благодарностей
5
Баллы
3
возможно ли залогиниться есть стоит cloud password на аккаунте ?

Вопрос снят .. не прочитал просто внимательно
 
Последнее редактирование:

Asmus003

Client
Регистрация
25.03.2018
Сообщения
181
Благодарностей
61
Баллы
28
112050

Подскажите, в чем проблема может быть? 1 кубик на создание клиента выполняется, а запрос смски - выдает сообщение о плохой проксе (в тот момент же телега открыта в вебе на ней же!) прокси вида socks5://login:password@ip:port
 

Killastryk

Новичок
Регистрация
30.10.2023
Сообщения
2
Благодарностей
0
Баллы
1
Привет здешним мыслителям! Подскажите, как с помощью данной библиотеки реализовать вступление в группы? Мучаюсь, но пока не выходит.
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 859
Баллы
113
Привет здешним мыслителям! Подскажите, как с помощью данной библиотеки реализовать вступление в группы? Мучаюсь, но пока не выходит.
для начала составить цепочку/логику действий/шагов (поиск, нажатия и т.п.). определить координаты/xpath элементов с которыми нужно взаимодействие. автоматизировать нужные действия из цепочки шагов. Через api проверять успешность выполнения.
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63
для начала составить цепочку/логику действий/шагов (поиск, нажатия и т.п.). определить координаты/xpath элементов с которыми нужно взаимодействие. автоматизировать нужные действия из цепочки шагов. Через api проверять успешность выполнения.
Не понял, это же работа через API, а не через браузер.

P.S. Тема зачетная, тоже хотелось разобраться, но многое не понятно.
Был бы благодарен тем кто мог бы объяснить.
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 859
Баллы
113
Не понял, это же работа через API, а не через браузер.
Через браузер/мобильное приложение тоже по апи работает
Если делаете это в браузере, то можно в devtools смотреть какие запросы отправляются по каким действиям.
Составляете список нужных действий для нужных запросов, Делаете дейтвие/запрос, получаете в ответ json, из него парсите все нужные параметры и делаете новый запрос по апи с нужными параметрами и так далее. В итоге получите на каждое действие свой запрос и используемые параметры. Потом уже можете писать код работы с нужными действиями используя методы из этой dll/апи или свои. Как вариант, можно посмотреть примеры из документации к апи этой либы.
 
  • Спасибо
Реакции: bizzon

Killastryk

Новичок
Регистрация
30.10.2023
Сообщения
2
Благодарностей
0
Баллы
1
Через браузер/мобильное приложение тоже по апи работает
Если делаете это в браузере, то можно в devtools смотреть какие запросы отправляются по каким действиям.
Составляете список нужных действий для нужных запросов, Делаете дейтвие/запрос, получаете в ответ json, из него парсите все нужные параметры и делаете новый запрос по апи с нужными параметрами и так далее. В итоге получите на каждое действие свой запрос и используемые параметры. Потом уже можете писать код работы с нужными действиями используя методы из этой dll/апи или свои. Как вариант, можно посмотреть примеры из документации к апи этой либы.
Логично конечно, но тут есть готовая библиотека и есть человек который ее немного переделал, именно поэтому я рассчитываю на ответ со стороны человека который точно знает как это сделать, я работаю с телегграм апи впервые, и у него очень странный апи как по мне, но мне для работы нужен данный блок кода, сам пытался разобраться но то пишет что чата нет такого, хотя он есть, то что я не правильно указываю данные чата. снифать круто и да помогло бы если бы тут не была зависимость от слоев АПИ.
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 088
Благодарностей
126
Баллы
63
Логично конечно, но тут есть готовая библиотека и есть человек который ее немного переделал, именно поэтому я рассчитываю на ответ со стороны человека который точно знает как это сделать, я работаю с телегграм апи впервые, и у него очень странный апи как по мне, но мне для работы нужен данный блок кода, сам пытался разобраться но то пишет что чата нет такого, хотя он есть, то что я не правильно указываю данные чата. снифать круто и да помогло бы если бы тут не была зависимость от слоев АПИ.
Мне кажется, самый простой способ разобраться с этой темой - это в складчину заплатить автору поста или тем кто знает как реализовать.
Если что, тоже готов скинуться.
 
Последнее редактирование:

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 859
Баллы
113
в новых версиях любой DLL могут меняться способы и методы работы с данными и при обновлении могут появиться ошибки. Самый лучший способ, это изучать описание от разработчика.
 

sten30

Client
Регистрация
05.09.2017
Сообщения
233
Благодарностей
28
Баллы
28
Привет. При выполнении кубика Get Dialogs такая ошибка
Не удается выполнить привязки исполняющей среды по нулевой ссылке
Что делать?

Пришлось поставить в переменную прокси при авторизации.
Теперь новая ошибка: Не удалось найти часть пути "D:\Profiles\79999999.dat".
В авторизации что-то должно сохраняться по данному пути, но нет ничего.
Создал папку D:\Profiles\ , появился файл .dat
теперь при выполнении Get Dialogs ошибка AUTH_KEY_UNREGISTERED
Вроде отработал Get Dialogs, но никакого массива сообщений не приходит.
 
Последнее редактирование:

vl-it

Новичок
Регистрация
17.02.2024
Сообщения
1
Благодарностей
0
Баллы
1
Вроде вопрос по теме, какие лимиты стоят на проверку юзернеймов, если через апи телеги, делать юзербота и проверять юзернеймы, 200 проверок в сутки?
 

vasyaya

Client
Регистрация
09.02.2015
Сообщения
555
Благодарностей
35
Баллы
28
Всем привет! Подскажите пожалуйста, в чем проблема? Хочу получить историю сообщений по названию чата (в чате я есть) но получаю постоянно ответ "чат не найден"
Всю голову сломал! П О М О Г И Т Е !)


C#:
try
{
    var client = project.Context["client"];

    // Название чата, для которого вы хотите получить сообщения
    string chatName = "НАЗВАНИЕ ЧАТА";

    // Создание запроса на поиск чата по названию
    var requestSearch = new TeleSharp.TL.Messages.TLRequestSearch()
    {
        Q = chatName,
        Filter = new TeleSharp.TL.TLInputMessagesFilterChatPhotos(),
        MinDate = 0,
        MaxDate = 0,
        OffsetId = 0,
        AddOffset = 0,
        Limit = 10,
        MaxId = 0,
        MinId = 0,
        FromId = new TeleSharp.TL.TLInputPeerEmpty(),
        Peer = new TeleSharp.TL.TLInputPeerEmpty(),
        Hash = 0
    };

    // Отправка запроса на сервер Telegram
    var responseSearch = client.SendRequest<TeleSharp.TL.Messages.TLAbsMessages>(requestSearch);

    // Проверка успешности запроса
    if (responseSearch is TeleSharp.TL.Messages.TLMessages)
    {
        // Получение списка найденных объектов (сообщений, чатов, пользователей и т. д.)
        var messages = (TeleSharp.TL.Messages.TLMessages)responseSearch;

        // Поиск чата среди найденных объектов
        var foundChat = messages.Chats.OfType<TeleSharp.TL.TLChat>().FirstOrDefault(c => c.Title == chatName);

        if (foundChat != null)
        {
            // Создание запроса на получение истории сообщений для найденного чата
            var requestHistory = new TeleSharp.TL.Messages.TLRequestGetHistory()
            {
                Peer = new TeleSharp.TL.TLInputPeerChat() { ChatId = foundChat.Id },
                Limit = 50, // Ограничение на количество сообщений
                AddOffset = 0, // Дополнительное смещение (если не требуется, оставьте 0)
                OffsetDate = 0, // Смещение даты (если не требуется, оставьте 0)
                OffsetId = 0, // Смещение идентификатора (если не требуется, оставьте 0)
                MaxId = 0, // Максимальный идентификатор сообщения (если не требуется, оставьте 0)
                MinId = 0, // Минимальный идентификатор сообщения (если не требуется, оставьте 0)
                Hash = 0 // Хэш (если не требуется, оставьте 0)
            };

            // Отправка запроса на сервер Telegram
            var responseHistory = client.SendRequest<TeleSharp.TL.Messages.TLAbsMessages>(requestHistory);

            // Проверка успешности запроса
            if (responseHistory is TeleSharp.TL.Messages.TLMessages)
            {
                // Получение списка сообщений
                var historyMessages = (TeleSharp.TL.Messages.TLMessages)responseHistory;

                // Обработка полученных сообщений
                foreach (var message in historyMessages.Messages)
                {
                    // Доступ к тексту сообщения
                    string messageText = (message as TeleSharp.TL.TLMessage)?.Message;

                    // Действия с каждым сообщением (например, вывод в лог)
                    project.SendInfoToLog("Сообщение: " + messageText);
                }
            }
        }
        else
        {
            project.SendErrorToLog("Чат с названием " + chatName + " не найден.", true);
        }
    }
}
catch (Exception e)
{
    // Обработка исключений (например, отправка сообщения об ошибке в лог)
    project.SendErrorToLog(e.Message, true);
}
 

vasyaya

Client
Регистрация
09.02.2015
Сообщения
555
Благодарностей
35
Баллы
28
на код

C#:
var client = project.Context["client"];
   
    var chatInfo = new TeleSharp.TL.Channels.TLRequestGetFullChannel()
        {
    Channel = new TeleSharp.TL.TLInputChannel()
            {
                ChannelId= -1189411436
                           
            }
         };
получаю ошибку "CHANNEL_INVALID". Группа существует. Аккаунт в ней состоит. Что я не правильно делаю ?

Ссылка на группу https://web.telegram.org/z/#-1189411436
У вас получилось решить этот вопрос?
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
482
Благодарностей
183
Баллы
43

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 532
Благодарностей
896
Баллы
113
а можно с этими апи работать посредством простых запросов как это можно делать с Бот-Апи?
 
  • Спасибо
Реакции: bizzon

diman

Client
Регистрация
18.02.2018
Сообщения
92
Благодарностей
14
Баллы
8
Кто знает в чем проблема? Авторизация проходит успешно, а при выполнении кубика Get Dialogs
C#:
try
{
    var client = project.Context["client"];
    
    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);


    if(responseDialog is TeleSharp.TL.Messages.TLDialogs)
    {
        // Полный список чатов с сообщениями и вспомогательными данными. Если у аккаунта не более 100 диалогов
        var dialogs = (TeleSharp.TL.Messages.TLDialogs)responseDialog;

        // получим список чатов на аккаунте
        var chats = dialogs.Chats;

        // выбираем только чаты
        var onlyChats = chats.OfType<TeleSharp.TL.TLChat>();
        project.SendInfoToLog("На аккаунте всего чатов: " + onlyChats.Count());

        // выбираем каналы/супергруппы
        var groupsChannels = chats.OfType<TeleSharp.TL.TLChannel>();
        project.SendInfoToLog("На аккаунте всего каналы/супергруппы: " + groupsChannels.Count());

        // Т.к. каналы и супергруппы у нас идут одним объектом, мы их можем разделить за счет выброки, по свойству, указывающему на принадлежность к каналу
        // все свойства, которые мы можем использовать расписаны в документации
        https://core.telegram.org/constructor/channel

        var onlyChannels = chats.OfType<TeleSharp.TL.TLChannel>().Where(x => x.Broadcast);
        var onlyGroups = chats.OfType<TeleSharp.TL.TLChannel>().Where(x => x.Megagroup);
        project.SendInfoToLog("На аккаунте всего каналы: " + onlyChannels.Count());
        project.SendInfoToLog("На аккаунте всего супергруппы: " + onlyGroups.Count());
        
    }
    else if (responseDialog is TeleSharp.TL.Messages.TLDialogsSlice)
    {
        // Неполный список диалогов с сообщениями и вспомогательными данными. В одном ответе телеграм отдает не более 100 диалогов. Если их больше - будет данный тип объекта. Отличается от TLDialogs - только наличием свойства Count с информацией о общем количестве диалогов.
    }
    else if (responseDialog is TeleSharp.TL.Messages.TLDialogsNotModified)
    {
        // Диалоги не изменились.
    }

}
catch(Exception e)
{
    project.SendErrorToLog(e.Message, true);
}
просто возвращает значение "Ок"
как получить список диалогов?
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
537
Благодарностей
283
Баллы
63
Кто знает в чем проблема? Авторизация проходит успешно, а при выполнении кубика Get Dialogs
C#:
try
{
    var client = project.Context["client"];
  
    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);


    if(responseDialog is TeleSharp.TL.Messages.TLDialogs)
    {
        // Полный список чатов с сообщениями и вспомогательными данными. Если у аккаунта не более 100 диалогов
        var dialogs = (TeleSharp.TL.Messages.TLDialogs)responseDialog;

        // получим список чатов на аккаунте
        var chats = dialogs.Chats;

        // выбираем только чаты
        var onlyChats = chats.OfType<TeleSharp.TL.TLChat>();
        project.SendInfoToLog("На аккаунте всего чатов: " + onlyChats.Count());

        // выбираем каналы/супергруппы
        var groupsChannels = chats.OfType<TeleSharp.TL.TLChannel>();
        project.SendInfoToLog("На аккаунте всего каналы/супергруппы: " + groupsChannels.Count());

        // Т.к. каналы и супергруппы у нас идут одним объектом, мы их можем разделить за счет выброки, по свойству, указывающему на принадлежность к каналу
        // все свойства, которые мы можем использовать расписаны в документации
        https://core.telegram.org/constructor/channel

        var onlyChannels = chats.OfType<TeleSharp.TL.TLChannel>().Where(x => x.Broadcast);
        var onlyGroups = chats.OfType<TeleSharp.TL.TLChannel>().Where(x => x.Megagroup);
        project.SendInfoToLog("На аккаунте всего каналы: " + onlyChannels.Count());
        project.SendInfoToLog("На аккаунте всего супергруппы: " + onlyGroups.Count());
      
    }
    else if (responseDialog is TeleSharp.TL.Messages.TLDialogsSlice)
    {
        // Неполный список диалогов с сообщениями и вспомогательными данными. В одном ответе телеграм отдает не более 100 диалогов. Если их больше - будет данный тип объекта. Отличается от TLDialogs - только наличием свойства Count с информацией о общем количестве диалогов.
    }
    else if (responseDialog is TeleSharp.TL.Messages.TLDialogsNotModified)
    {
        // Диалоги не изменились.
    }

}
catch(Exception e)
{
    project.SendErrorToLog(e.Message, true);
}
просто возвращает значение "Ок"
как получить список диалогов?
Если у вас в кубике только этот код, то скорей всего у вас выполняются какие-то из данных условий
C#:
else if (responseDialog is TeleSharp.TL.Messages.TLDialogsSlice)
{
    // Неполный список диалогов с сообщениями и вспомогательными данными. В одном ответе телеграм отдает не более 100 диалогов. Если их больше - будет данный тип объекта. Отличается от TLDialogs - только наличием свойства Count с информацией о общем количестве диалогов.
}
else if (responseDialog is TeleSharp.TL.Messages.TLDialogsNotModified)
{
    // Диалоги не изменились.
}
Вам нужно в них прописать хотя бы project.SendInfoToLog(), чтобы в лог вышла информация какое условие выполняется.
А потом дополнительно прописать нужную вам логику для дальнейшей работы.
 
  • Спасибо
Реакции: diman

diman

Client
Регистрация
18.02.2018
Сообщения
92
Благодарностей
14
Баллы
8
Если у вас в кубике только этот код, то скорей всего у вас выполняются какие-то из данных условий
C#:
else if (responseDialog is TeleSharp.TL.Messages.TLDialogsSlice)
{
    // Неполный список диалогов с сообщениями и вспомогательными данными. В одном ответе телеграм отдает не более 100 диалогов. Если их больше - будет данный тип объекта. Отличается от TLDialogs - только наличием свойства Count с информацией о общем количестве диалогов.
}
else if (responseDialog is TeleSharp.TL.Messages.TLDialogsNotModified)
{
    // Диалоги не изменились.
}
Вам нужно в них прописать хотя бы project.SendInfoToLog(), чтобы в лог вышла информация какое условие выполняется.
А потом дополнительно прописать нужную вам логику для дальнейшей работы.
Понимал бы я еще что - нибудь в этом..)))
вот вроде получилось с помощью этого получить диалоги
C#:
try
{
    var client = project.Context["client"];

    // Создаем запрос на получение списка диалогов с непрочитанными сообщениями
    var requestGetDialogs = new TeleSharp.TL.Messages.TLRequestGetDialogs()
    {
        OffsetDate = 0,
        OffsetId = 0,
        OffsetPeer = new TeleSharp.TL.TLInputPeerSelf(),
        Limit = 100,
        Hash = 0
    };

    // Выполняем запрос
    var responseDialogs = client.SendRequest<TeleSharp.TL.Messages.TLAbsDialogs>(requestGetDialogs);

    // Создаем список для хранения информации о новых диалогах
    var newDialogsInfoList = new List<string>();

    // Проверяем тип ответа
    if (responseDialogs is TeleSharp.TL.Messages.TLDialogsSlice dialogsSlice)
    {
        // Обработка списка диалогов
        foreach (var dialog in dialogsSlice.Dialogs)
        {
            // Получаем информацию о диалоге
            if (dialog is TeleSharp.TL.TLDialog tlDialog)
            {
                // Получаем информацию о пользователе или чате
                var peer = tlDialog.Peer;
                string dialogInfo = "";

                // Определяем тип диалога (пользователь или чат)
                if (peer is TeleSharp.TL.TLPeerUser peerUser)
                {
                    // Получаем информацию о пользователе
                    var user = dialogsSlice.Users.OfType<TeleSharp.TL.TLUser>().FirstOrDefault(u => u.Id == peerUser.UserId);
                    if (user != null)
                    {
                        // Проверяем, есть ли в диалоге непрочитанные сообщения
                        if (tlDialog.UnreadCount > 0)
                        {
                            // Добавляем информацию о диалоге в список
                            dialogInfo = $"User: {user.FirstName} {user.LastName} (Unread messages: {tlDialog.UnreadCount}, User ID: {user.Id})";
                            newDialogsInfoList.Add(dialogInfo);
                        }
                    }
                }
            }
        }
    }

    // Преобразуем список информации о новых диалогах в строку
    var newDialogsInfoString = string.Join(Environment.NewLine, newDialogsInfoList);

    // Сохраняем результат в локальную переменную "newDialogs"
    project.Variables["newDialogs"].Value = newDialogsInfoString;

    // Выводим результат в лог
    project.SendInfoToLog($"New dialogs info: {newDialogsInfoString}");
}
catch (Exception e)
{
    // Обработка ошибок и вывод в лог
    project.SendErrorToLog(e.Message, true);
}
но он возвращает только имена пользователей, id и количество сообщений. А как получить текст самих сообщений?
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
537
Благодарностей
283
Баллы
63
Понимал бы я еще что - нибудь в этом..)))
вот вроде получилось с помощью этого получить диалоги
C#:
try
{
    var client = project.Context["client"];

    // Создаем запрос на получение списка диалогов с непрочитанными сообщениями
    var requestGetDialogs = new TeleSharp.TL.Messages.TLRequestGetDialogs()
    {
        OffsetDate = 0,
        OffsetId = 0,
        OffsetPeer = new TeleSharp.TL.TLInputPeerSelf(),
        Limit = 100,
        Hash = 0
    };

    // Выполняем запрос
    var responseDialogs = client.SendRequest<TeleSharp.TL.Messages.TLAbsDialogs>(requestGetDialogs);

    // Создаем список для хранения информации о новых диалогах
    var newDialogsInfoList = new List<string>();

    // Проверяем тип ответа
    if (responseDialogs is TeleSharp.TL.Messages.TLDialogsSlice dialogsSlice)
    {
        // Обработка списка диалогов
        foreach (var dialog in dialogsSlice.Dialogs)
        {
            // Получаем информацию о диалоге
            if (dialog is TeleSharp.TL.TLDialog tlDialog)
            {
                // Получаем информацию о пользователе или чате
                var peer = tlDialog.Peer;
                string dialogInfo = "";

                // Определяем тип диалога (пользователь или чат)
                if (peer is TeleSharp.TL.TLPeerUser peerUser)
                {
                    // Получаем информацию о пользователе
                    var user = dialogsSlice.Users.OfType<TeleSharp.TL.TLUser>().FirstOrDefault(u => u.Id == peerUser.UserId);
                    if (user != null)
                    {
                        // Проверяем, есть ли в диалоге непрочитанные сообщения
                        if (tlDialog.UnreadCount > 0)
                        {
                            // Добавляем информацию о диалоге в список
                            dialogInfo = $"User: {user.FirstName} {user.LastName} (Unread messages: {tlDialog.UnreadCount}, User ID: {user.Id})";
                            newDialogsInfoList.Add(dialogInfo);
                        }
                    }
                }
            }
        }
    }

    // Преобразуем список информации о новых диалогах в строку
    var newDialogsInfoString = string.Join(Environment.NewLine, newDialogsInfoList);

    // Сохраняем результат в локальную переменную "newDialogs"
    project.Variables["newDialogs"].Value = newDialogsInfoString;

    // Выводим результат в лог
    project.SendInfoToLog($"New dialogs info: {newDialogsInfoString}");
}
catch (Exception e)
{
    // Обработка ошибок и вывод в лог
    project.SendErrorToLog(e.Message, true);
}
но он возвращает только имена пользователей, id и количество сообщений. А как получить текст самих сообщений?
Перечитайте еще раз вот этот кусок, он должен вам помочь
120444
 
  • Спасибо
Реакции: diman

diman

Client
Регистрация
18.02.2018
Сообщения
92
Благодарностей
14
Баллы
8
Я правильно понимаю, что с помощью этого API невозможно отправить сообщение пользователю, которого нет в списке контактов?
А добавить пользователя в контакты посредством этого же API невозможно?))
 

Кто просматривает тему: (Всего: 7, Пользователи: 2, Гости: 5)