How can I receive channel messages from telegrams using TLSharp?

How can I receive channel messages from telegrams using TLSharp?

The following links did not help me:

+4
source share
2 answers

You can use this code

        public async Task GatherChannelHistory(string channelName, int offset = 0, int maxId = -1, int limit = 50)
    {
        _resultMessages.Clear();
        await _client.ConnectAsync();

        var dialogs = (TLDialogs)await _client.GetUserDialogsAsync();
        var chat = dialogs.chats.lists
            .OfType<TLChannel>()
            .FirstOrDefault(c => c.title == channelName);

        if (chat.access_hash != null)
        {
            var tlAbsMessages =
                await _client.GetHistoryAsync(
                    new TLInputPeerChannel {channel_id = chat.id, access_hash = chat.access_hash.Value}, offset,
                    maxId, limit);

            var tlChannelMessages = (TLChannelMessages) tlAbsMessages;

            for (var index = 0; index < tlChannelMessages.messages.lists.Count-1; index++)
            {
                var tlAbsMessage = tlChannelMessages.messages.lists[index];
                var message = (TLMessage) tlAbsMessage;
                if (message.media == null)
                {
                    _resultMessages.Add(new ChannelMessage()
                    {
                        Id = message.id,
                        ChannelId = chat.id,
                        Content = message.message,
                        Type = EnChannelMessage.Message,
                        Views = message.views,
                    });
                }
                else
                {

                    switch (message.media.GetType().ToString())
                    {
                        case "TeleSharp.TL.TLMessageMediaPhoto":
                            var tLMessageMediaPhoto = (TLMessageMediaPhoto)message.media;

                            _resultMessages.Add(new ChannelMessage()
                            {
                                Id = message.id,
                                ChannelId = chat.id,
                                Content = tLMessageMediaPhoto.caption,
                                Type = EnChannelMessage.MediaPhoto,
                                Views = message.views ?? 0,
                            });
                            break;
                        case "TeleSharp.TL.TLMessageMediaDocument":
                            var tLMessageMediaDocument = (TLMessageMediaDocument)message.media;

                            _resultMessages.Add(new ChannelMessage()
                            {
                                Id = message.id,
                                ChannelId = chat.id,
                                Content = tLMessageMediaDocument.caption,
                                Type = EnChannelMessage.MediaDocument,
                                Views = message.views ?? 0,
                            });
                            break;
                        case "TeleSharp.TL.TLMessageMediaWebPage":
                            var tLMessageMediaWebPage = (TLMessageMediaWebPage)message.media;
                            string url = string.Empty;
                            if (tLMessageMediaWebPage.webpage.GetType().ToString() != "TeleSharp.TL.TLWebPageEmpty")
                            {
                                var webPage = (TLWebPage) tLMessageMediaWebPage.webpage;
                                url = webPage.url;
                            }

                            _resultMessages.Add(new ChannelMessage
                            {
                                Id = message.id,
                                ChannelId = chat.id,
                                Content = message.message + @" : " + url,
                                Type = EnChannelMessage.WebPage,
                                Views = message.views ?? 0,
                            });
                            break;
                    }
                }
            }
        }
    }
+2
source

To receive channel messages, you just need to receive channel updates.

As in TL-52, you can request:

channels.getDialogs#a9d3d249 offset:int limit:int = messages.Dialogs; 

however, this was dropped in TL-53.

I assume that you can try one of the other functions channel.*,

I have not tried on TL-schema-53 yet

What version of the TL scheme is used by your TLSharp?

, TLSharp

+1

All Articles