Вопрос. Как получать сообщения из чата?
Приветствую! Знаю что ты русскоговорящий разработчик, поэтому спрашиваю по русски.
Пробую получить все сообщения с обычного чата ( не канала ).
И не могу нигде примеры найти как это можно сделать. Методом логики и проб пока не получается сделать.
Один из моментов почему возможно не получается при получении всех чатов пользователя получаются сущности. TLChannel и TLChatForbidden и все чаты идут как TLChatForbidden что мне непонятно.
И второе что не могу понять как из этого TLChatForbidden извлечь сообщения.
PS: Благодарю за классную и полезную библиотеку. Надеюсь получится с ней разобраться.
PS2: Хорошо бы в проекте побольше примеров на разные темы.
Здравствуй! Я давно использую эту библиотеку. И понимаю о чем ты говоришь. Если все еще вопрос актуален, я могу показать пример.
Здравствуй! Я давно использую эту библиотеку. И понимаю о чем ты говоришь. Если все еще вопрос актуален, я могу показать пример.
Покажите пожалуйста.
Если очень коротко, то так. chatFromDialogs - канал (приватный или публичный чат), найденный в истории по имени. Так можно получить закрытый чат, если вы в него вступили. chatFromSearch - канал или публичный чат, найденный по его имени (которое в ссылке t.me/chatUrl ). msgs - 100 сообщений с начала чата. Можно выполнить запрос TLRequestGetFullChannel, который вернёт для чата ID последнего сообщения, чтобы получать сообщения, начиная с последних.
var ownDialogs = (TLDialogs)await _client.GetUserDialogsAsync();
TLChannel chatFromDialogs = dialogs.Chats.OfType<TLChannel>().FirstOrDefault(c=>c.Title == "Chat displayname");
TLChannel chatFromSearch = (await _client.SendRequestAsync<TLResolvedPeer>(
new TLRequestResolveUsername { Username = "chatUrl" })).Chats.FirstOrDefault() as TLChannel;
var channel = chatFromDialogs ?? chatFromSearch;
var chatPeer = new TLInputPeerChannel()
{
ChannelId = channel.Id,
AccessHash = channel.AccessHash.Value
};
var msgs = (TLChannelMessages)(await _client.GetHistoryAsync(
chatPeer, offsetId: 0, limit: 100));