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

C#中Telegram Bot向用户发送私人通知及支持指令交互的方案问询

C# 实现Telegram Bot主动推送私人消息及指令交互方案

完全可以实现你的需求,主动给指定用户发私人消息不需要Bot持有群组/频道管理员权限,核心前提是你需要拿到用户的唯一Telegram Chat ID,且用户和你的Bot有过至少一次主动交互(即用户同意接收消息的前提)。

核心实现步骤

  • 第一步:安装C# Telegram Bot官方封装SDK,NuGet安装命令:Install-Package Telegram.Bot
  • 第二步:完成用户授权绑定:引导用户主动给你的Bot发送/start指令,在Bot的消息回调中获取该用户的Chat.Id字段,将这个ID和你业务系统的用户账号做关联存储,即完成授权流程
  • 第三步:业务触发主动推送消息,直接调用SDK的发送接口即可

主动推送私人消息代码示例

using Telegram.Bot;
using Telegram.Bot.Types.Enums;

// 初始化Bot客户端,替换为你从@BotFather获取的Bot Token
var botClient = new TelegramBotClient("你的Bot Token");

// 通用推送通知方法
async Task SendSystemNotification(long userChatId, string notifyContent)
{
    await botClient.SendTextMessageAsync(
        chatId: userChatId,
        text: notifyContent,
        parseMode: ParseMode.MarkdownV2
    );
}

// 用户登录时触发调用示例,123456789为该用户绑定的Chat ID
await SendSystemNotification(123456789, "您的账号刚刚完成登录操作,如非本人操作请及时联系管理员");

后续指令交互及权限校验实现

你可以通过长轮询或者Webhook模式监听用户发送给Bot的指令,执行前先做权限校验即可,示例如下:

var receiverOptions = new Telegram.Bot.ReceiverOptions
{
    AllowedUpdates = new [] { UpdateType.Message }
};

// 启动消息监听
botClient.StartReceiving(
    updateHandler: async (client, update, ct) =>
    {
        if (update.Message?.Text is not string msgContent || update.Message.Chat.Id == 0)
            return;
        
        var senderChatId = update.Message.Chat.Id;
        // 优先校验权限:查询该Chat ID是否属于你业务系统的管理员
        if (!CheckAdminPermission(senderChatId))
        {
            await client.SendTextMessageAsync(senderChatId, "权限不足,无法执行该操作", cancellationToken: ct);
            return;
        }

        // 匹配指令执行对应逻辑
        if (msgContent.StartsWith("/adduser"))
        {
            // 解析指令参数,执行添加用户的业务逻辑
            bool execResult = AddNewUser(msgContent.Split(' ').Skip(1).ToArray());
            await client.SendTextMessageAsync(senderChatId, execResult ? "新用户添加成功" : "添加失败,请检查参数是否正确", cancellationToken: ct);
        }
        // 其他指令可以继续扩展匹配
    },
    pollingErrorHandler: (_, _, _) => Task.CompletedTask,
    receiverOptions: receiverOptions
);

注意事项

  • 如果用户删除了和Bot的对话,你主动发消息会返回403错误,捕获该错误后清空该用户的Chat ID绑定关系即可
  • 不要推送无关垃圾内容,否则被用户举报会导致Bot被平台封禁
  • 纯私人消息交互场景不需要给Bot配置任何额外权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:42:03