var Channellist = (await client.SendRequestAsync<TeleSharp.TL.Contacts.TLResolvedPeer>( new TeleSharp.TL.Contacts.TLRequestResolveUsername { Username = "nedocoder" }).ConfigureAwait(true)).Chats; if (Channellist.Count > 0) { var ChannelInfo = Channellist[0] as TeleSharp.TL.TLChannel; var peer = new TLInputPeerUser() { UserId = ChannelInfo.Id, AccessHash = (long)ChannelInfo.AccessHash }; var ch = new TLInputChannel() { ChannelId = ChannelInfo.Id, AccessHash = (long)ChannelInfo.AccessHash }; var abs = new TLInputPeerChannel() { ChannelId = ChannelInfo.Id, AccessHash = (long)ChannelInfo.AccessHash }; var req = new TLRequestGetHistory { AddOffset = 0, Limit = 1, Peer = abs }; TLChannelMessages res = await client.SendRequestAsync<TLChannelMessages>(req); foreach (TeleSharp.TL.TLMessage msg in res.Messages) { try { int mID = msg.Id; string TMessage = msg.Message; string TvisitCount = msg.Views.ToString(); MessageBox.Show(mID + ' ' + TMessage + ' ' + TvisitCount + ' '); var markAsRead = new TeleSharp.TL.Channels.TLRequestReadHistory() { Channel = ch, // MaxId = -1, MessageId = mID, // Dirty = true, // MessageId = 356217, // ConfirmReceived = true, //Sequence = dia.unread_count }; var affectedMessages = await client.SendRequestAsync<bool>(markAsRead); MessageBox.Show(mID + ' ' + TMessage + ' '+ TvisitCount + ' ' +affectedMessages); } catch { } } I try to read the message of the channel, I receive the message id, its text and the number of views. markAsRead returns true, which tells us that the message was viewed, but the view counter is not updated, maybe I made a mistake somewhere? I can not understand where, I will be grateful for any help!
UPD: most likely the correct method for viewing this:
TLVector<int> idd = new TLVector<int>(); var msgviews = new TLRequestGetMessagesViews() { Peer = abs, MessageId = mID, Increment = true, Id = idd }; var resultl = await client.SendRequestAsync<TLVector<int>>(msgviews); MessageBox.Show(" "+resultl); 