4
如何使用TLSharp從電報通道獲取通道消息?如何使用TLSharp從電報通道獲取通道消息?
以下鏈接並沒有幫助我:
如何使用TLSharp從電報通道獲取通道消息?如何使用TLSharp從電報通道獲取通道消息?
以下鏈接並沒有幫助我:
要獲得渠道的消息,你只需要爲接收頻道更新。
截至TL-模式-52,你可以要求:
channels.getDialogs#a9d3d249 offset:int limit:int = messages.Dialogs;
但是這已經在TL-模式-53被丟棄。
我猜你可以試試其他channel.*
功能之一,
我還沒有TL-架構53
什麼版本的TL-架構是使用TLSharp還沒試過?
你可以簡單地實現相關功能,如果他們還沒有在你的TLSharp版本中實現
您可以使用此代碼
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;
}
}
}
}
}
你應該解釋爲什麼使用它,即描述您的解決方案 – Massimo
代碼在tlsharp中很明顯,你可以使用GetHistoryAsync來獲取消息,只需發送TLInputPeerChannel作爲第一個參數,然後你必須將結果轉換爲獲取內容:-) –
@arashDehghan是否有可能獲得更新的頻道列表?每個更新的頻道? –