You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何使用Telegram API(非Bot API)接收频道、联系人及群组消息?

基于C#的Telegram普通用户客户端最优实现方案

你需要开发的普通用户身份消息监听客户端,无法使用Bot API,且TLSharp已经多年停止维护,不支持新版Telegram API特性,目前最优选择是使用WTelegramClient库,它是C#生态下唯一仍在活跃维护的Telegram用户端API(MTProto协议)封装,完全支持实时接收私聊、群组、频道消息并触发自定义事件。

实现步骤

  • 第一步:申请API凭证
    用你要作为客户端的Telegram账号,前往Telegram官方API申请页面获取API_ID和API_HASH,这两个参数是调用用户端API的必备凭证,和Bot Token无关。
  • 第二步:安装依赖
    通过NuGet安装WTelegramClient包,包管理器命令为:
    Install-Package WTelegramClient
  • 第三步:编写消息监听逻辑
    最简实现示例如下:
    using WTelegram;
    using TL;
    
    class TelegramClientDemo
    {
        static async Task Main(string[] args)
        {
            // 替换为你自己申请的API参数和账号手机号
            int apiId = 123456;
            string apiHash = "你的apiHash字符串";
            string phoneNumber = "+86你的手机号";
    
            using var client = new Client(apiId, apiHash);
            // 登录账号:第一次运行需要输入手机收到的验证码,后续会自动缓存会话无需重复验证
            await client.LoginUserIfNeeded(phoneNumber);
            Console.WriteLine("登录成功,开始监听消息...");
    
            // 绑定消息更新事件
            client.OnUpdate += async (updateObj) =>
            {
                // 过滤新消息更新
                if (updateObj is UpdateNewMessage { message: Message receivedMsg })
                {
                    // 获取消息来源信息(用户/群组/频道)
                    string sourceName = receivedMsg.Peer switch
                    {
                        PeerUser pu => (await client.Users.GetAsync(pu.user_id)).ToString(),
                        PeerChat pc => (await client.Chats.GetAsync(pc.chat_id)).Title,
                        PeerChannel pch => (await client.Chats.GetAsync(pch.channel_id)).Title,
                        _ => "未知来源"
                    };
                    // 这里替换为你自己的业务触发逻辑
                    Console.WriteLine($"收到来自【{sourceName}】的消息:{receivedMsg.message}");
                }
            };
    
            // 阻塞主线程保持客户端运行
            await Task.Delay(Timeout.Infinite);
        }
    }
    

注意事项

  • 会话管理:WTelegramClient默认会在程序运行目录生成session.dat文件存储登录会话,不要随意删除该文件,否则需要重新验证登录
  • 账号安全:不要使用该实现进行高频发消息、批量加群、自动回复营销内容等违反Telegram用户协议的操作,否则会导致账号被封禁
  • 功能扩展:该库支持所有普通Telegram客户端的操作,包括发消息、下载媒体、管理群组等,可直接调用Client实例的对应方法实现

内容的提问来源于stack exchange,提问作者Jaume

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:18:02