C# 如何使用 Telegram API(不是 Bot API)从 channel/contact 获取消息
C# How to get messages from channel/contact using Telegram API (not Bot API)
我发现了很多使用机器人 api 的示例,但是我需要一个简单的客户端,当收到来自联系人或组的消息时,作为用户而不是机器人(所以 Telegram api,而不是机器人 api)。 TLSharp 库没有实现这个方法。
实现它的最佳方法是什么?
提供的 link 是旧的,但它是一个很好的起点。这是更新后的工作代码:
while (true)
{
var state = await _client.SendRequestAsync<TLState>(new TLRequestGetState());
TrackingState = state.Pts.ToString();
var req = new TLRequestGetDifference() { Date = state.Date, Pts = state.Pts-10, Qts = state.Qts };
var diff = await _client.SendRequestAsync<TLAbsDifference>(req);
var msgs = diff as TLDifference;
if (msgs!=null && msgs.NewMessages.Count>0)
{
var mss = msgs.NewMessages.Where(x => x.GetType() == typeof(TLMessage))
.Cast<TLMessage>().ToList().Where(x => x.Date > _lastMessageStamp && x.Out == false)
.OrderBy(dt => dt.Date);
foreach (TLMessage upd in mss)
{
Console.WriteLine("New message ({0}): {1}", upd.Date, upd.Message);
}
_lastMessageStamp = mss.Any() ? mss.Max(x => x.Date) : _lastMessageStamp;
}
await Task.Delay(2500);
}
现在有 WTelegramClient,使用最新的电报客户端 API 协议(以用户身份连接,而不是机器人)。
该库非常完整,但使用起来也非常简单。关注README on GitHub,简单介绍。
要监视在某处发布消息(或其他事件)时推送到客户端的更新事件,请查看 Examples\Program_ListenUpdate.cs。它演示了如何打印大多数事件,包括在 groups/channels/private 聊天
中发布的消息
我发现了很多使用机器人 api 的示例,但是我需要一个简单的客户端,当收到来自联系人或组的消息时,作为用户而不是机器人(所以 Telegram api,而不是机器人 api)。 TLSharp 库没有实现这个方法。 实现它的最佳方法是什么?
提供的 link 是旧的,但它是一个很好的起点。这是更新后的工作代码:
while (true)
{
var state = await _client.SendRequestAsync<TLState>(new TLRequestGetState());
TrackingState = state.Pts.ToString();
var req = new TLRequestGetDifference() { Date = state.Date, Pts = state.Pts-10, Qts = state.Qts };
var diff = await _client.SendRequestAsync<TLAbsDifference>(req);
var msgs = diff as TLDifference;
if (msgs!=null && msgs.NewMessages.Count>0)
{
var mss = msgs.NewMessages.Where(x => x.GetType() == typeof(TLMessage))
.Cast<TLMessage>().ToList().Where(x => x.Date > _lastMessageStamp && x.Out == false)
.OrderBy(dt => dt.Date);
foreach (TLMessage upd in mss)
{
Console.WriteLine("New message ({0}): {1}", upd.Date, upd.Message);
}
_lastMessageStamp = mss.Any() ? mss.Max(x => x.Date) : _lastMessageStamp;
}
await Task.Delay(2500);
}
现在有 WTelegramClient,使用最新的电报客户端 API 协议(以用户身份连接,而不是机器人)。
该库非常完整,但使用起来也非常简单。关注README on GitHub,简单介绍。
要监视在某处发布消息(或其他事件)时推送到客户端的更新事件,请查看 Examples\Program_ListenUpdate.cs。它演示了如何打印大多数事件,包括在 groups/channels/private 聊天
中发布的消息