Telegram 如何使用TLSharp从电报频道获取频道消息?
如何使用TLSharp从电报频道获取频道消息 以下链接对我没有帮助:Telegram 如何使用TLSharp从电报频道获取频道消息?,telegram,Telegram,如何使用TLSharp从电报频道获取频道消息 以下链接对我没有帮助: 要获取频道消息,只需接收频道更新即可 在TL-schema-52中,您可以请求: channels.getDialogs#a9d3d249 offset:int limit:int = messages.Dialogs; 然而,TL-schema-53中已经删除了这一点 我猜您可以尝试另一个频道。*函数 我还没有尝试TL-schema-53 您的TLSharp使用什么版本的TL模式 如果您的TLSharp版本中尚未实
channels.getDialogs#a9d3d249 offset:int limit:int = messages.Dialogs;
然而,TL-schema-53中已经删除了这一点
我猜您可以尝试另一个频道。*
函数
我还没有尝试TL-schema-53
您的TLSharp使用什么版本的TL模式
如果您的TLSharp版本中尚未实现相关功能,您可以简单地实现它们您可以使用此代码
public async Task GatherChannelHistory(string channelName, int offset = 0, int maxId = -1, int limit = 50)
{
_resultMessages.Clear();
await _client.ConnectAsync();
var dialogs = (TLDialogsSlice)await _client.GetUserDialogsAsync();
var chat = dialogs.Chats.ToList()
.OfType<TLChannel>()
.FirstOrDefault(c => c.Title == channelName);
if (chat.AccessHash != null)
{
var tlAbsMessages =
await _client.GetHistoryAsync(
new TLInputPeerChannel {ChannelId= chat.Id, AccessHash = chat.AccessHash.Value}, offset,
maxId, limit);
var tlChannelMessages = (TLChannelMessages) tlAbsMessages;
for (var index = 0; index < tlChannelMessages.Messages.Count-1; index++)
{
var tlAbsMessage = tlChannelMessages.Messages.ToList()[index];
var message = (TLMessage) tlAbsMessage;
//Now you have the message and you can do what you need with it
//the code below is an example of messages classification
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;
}
}
}
}
}
公共异步任务GatherChannelHistory(字符串channelName,int offset=0,int maxId=-1,int limit=50)
{
_resultMessages.Clear();
wait_client.ConnectAsync();
var dialogs=(TLDialogsSlice)等待_client.GetUserDialogsAsync();
var chat=dialogs.Chats.ToList()
第()类
.FirstOrDefault(c=>c.Title==channelName);
if(chat.AccessHash!=null)
{
var tlAbsMessages=
等待\u client.GetHistoryAsync(
新的TLInputPeerChannel{ChannelId=chat.Id,AccessHash=chat.AccessHash.Value},偏移量,
maxId,limit);
var tlChannelMessages=(tlChannelMessages)tlAbsMessages;
对于(var index=0;index\u resultMessages
?它是较长代码的一部分吗?请给我一些建议。