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

C#如何自动获取Telegram chat.id 用于机器人发送图片

C# 自动获取Telegram chat.id 实现机器人发图

你使用Telegram.Bot客户端库的话,直接拉取机器人更新队列就能自动拿到chat.id,不需要手动查询参数,具体操作如下:

  • 前置准备:确认你已经从@BotFather处拿到机器人的访问Token,且已经在Telegram里找到自己的机器人,给它发送过任意一条消息(比如发送/start),否则机器人更新队列里没有对应记录,无法拿到id。
  • 编写获取chat.id的逻辑:
// 初始化机器人客户端,替换为你自己的机器人Token
var Bot = new TelegramBotClient("你的机器人访问Token");
// 拉取机器人未处理的最新更新记录
var updates = await Bot.GetUpdatesAsync(offset: 0, timeout: 0);
long targetChatId = 0;
foreach (var update in updates)
{
    // 跳过非消息类型的更新
    if (update.Message == null) continue;
    // 提取消息对应的chat.id,私聊场景就是你的个人id,群场景就是群id
    targetChatId = update.Message.Chat.Id;
    Console.WriteLine($"成功获取chat.id:{targetChatId}");
    // 拿到目标id后直接跳出循环即可
    break;
}
  • 调用发图接口:拿到targetChatId之后直接传入发图方法即可,修正后的发图代码如下:
await Bot.SendPhotoAsync(
    chatId: targetChatId,
    photo: new InputOnlineFile(imageFile, "Spotted.Png"),
    caption: "AnStuffSpotted."
);

注意事项

  • 个人用户的私聊chat.id是固定正整数,群聊chat.id是固定负整数,拿到之后可以直接存在配置文件里,不需要每次程序启动都拉取。
  • 如果需要获取群聊的chat.id,先把机器人拉入对应群聊,在群内发送任意一条消息后再运行上述获取逻辑即可。
  • 如果拉取不到更新,检查机器人Token是否填写正确,以及你是否真的给机器人发过消息触发更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:54:25