【问题标题】:C# How to get messages from channel/contact using Telegram API (not Bot API)C# 如何使用 Telegram API(不是 Bot API)从频道/联系人获取消息
【发布时间】:2021-10-23 12:53:15
【问题描述】:

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

【问题讨论】:

标签: c# telegram telegram-api


【解决方案1】:

现在有WTelegramClient,使用最新的 Telegram Client API 协议(以用户身份连接,而不是机器人)。

该库非常完整,但使用起来也非常简单。关注README on GitHub简单介绍。

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

【讨论】:

    【解决方案2】:

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

     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);
                }
    

    【讨论】:

      猜你喜欢
      • 2016-04-04
      • 2021-04-03
      • 2016-02-23
      • 2017-11-28
      • 2017-11-28
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 2022-07-17
      相关资源
      最近更新 更多