繁体   English   中英

C# 如何使用 Telegram API(不是 Bot API)从频道/联系人获取消息

[英]C# How to get messages from channel/contact using Telegram API (not Bot API)

我发现了很多使用 bot api 的例子,但是我需要一个简单的客户端,当收到来自联系人或组的消息时,作为用户而不是机器人(所以是 Telegram api,而不是 Bot api)来实现一个事件。 TLSharp 库没有实现这个方法。 实现它的最佳方法是什么?

提供的链接很旧,但它是一个很好的起点。 这是更新的工作代码:

 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 ,使用最新的 Telegram Client API 协议(作为用户连接,而不是机器人)。

该库非常完整,但使用起来也非常简单。 按照GitHub 上README进行简单介绍。

要监视在某处发布消息(或其他事件)时推送到客户端的更新事件,请查看Examples\\Program_ListenUpdate.cs 它演示了如何打印大多数事件,包括在群组/频道/私人聊天中发布的消息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM