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
相关产品推荐
相关产品推荐

