Telegram Bot API
🌐 Tiếng Việt

Chat id Telegram lấy ở đâu? Cách lấy chat id cho người dùng, group, kênh và topic

· 6 phút đọc

Chat id Telegram là số định danh của cuộc trò chuyện, được truyền vào tham số chat_id khi bot gửi tin. Chat id lấy ở đâu? Cách nhanh nhất: nhắn cho bot (hoặc gửi lệnh trong group có bot), gọi getUpdates và đọc message.chat.id. Bài này hướng dẫn cho chat riêng, group, supergroup, kênh, topic và cách xử lý khi result rỗng.

Chat id là gì, có những dạng nào?

Loại chatchat.typeVí dụ chat_id
Chat riêng với người dùngprivate123456789 (số dương)
Group thườnggroup-987654321 (số âm)
Supergroup, group có topicsupergroup-1001234567890
Kênhchannel-1001234567890 hoặc @tenkenh

ID có thể vượt quá 32 bit, nên trong cơ sở dữ liệu hãy lưu bằng kiểu số nguyên 64 bit (ví dụ BIGINT), đừng dùng INT.

Cách 1: lấy chat id của bạn qua getUpdates

  1. Mở bot của bạn trong Telegram, bấm Start hoặc gửi một tin bất kỳ.
  2. Gọi getUpdates bằng curl, hoặc mở getUpdates trong Bot API Tester nếu không muốn dùng terminal.
  3. Tìm trường message.chat.id trong kết quả.
export TOKEN="123456789:AAEexampleTokenReplaceWithYours"
curl "https://api.telegram.org/bot$TOKEN/getUpdates"
{"ok": true, "result": [{"update_id": 815000002, "message": {
  "message_id": 5,
  "from": {"id": 123456789, "is_bot": false, "first_name": "Minh"},
  "chat": {"id": 123456789, "first_name": "Minh", "type": "private"},
  "date": 1793260800, "text": "xin chào"}}]}

Kết quả có nhiều update? Đoạn Python sau in ra mọi chat mà bot nhìn thấy, gồm cả group và kênh:

import os
import requests

API = f"https://api.telegram.org/bot{os.environ['TOKEN']}"
for upd in requests.get(f"{API}/getUpdates", timeout=10).json()["result"]:
    item = upd.get("message") or upd.get("channel_post") or upd.get("my_chat_member")
    if item:
        chat = item["chat"]
        print(chat["id"], chat["type"], chat.get("title") or chat.get("first_name"))

Lấy chat id Telegram group và supergroup

  1. Thêm bot vào group.
  2. Gửi lệnh có kèm tên bot, ví dụ /start@shop_thongbao_bot. Privacy mode (bật mặc định) khiến bot trong group chỉ nhận lệnh gửi đích danh cho nó, trả lời tin của nó và tin nhắn hệ thống, nên tin nhắn thường có thể không tới.
  3. Gọi getUpdates và đọc message.chat.id — số âm, với supergroup bắt đầu bằng -100.

Ngay khi bot được thêm vào group, Telegram cũng gửi update my_chat_member chứa chat.id của group đó. Muốn bot nhận mọi tin nhắn, hãy cấp quyền admin hoặc tắt privacy mode bằng /setprivacy trong @BotFather (sau đó phải thêm lại bot vào group).

Chat id của kênh

Group có topic: thêm message_thread_id

Trong group bật topic (forum), chat_id vẫn là ID của group. Mỗi topic được xác định bằng message_thread_id, lấy từ tin nhắn gửi trong topic đó. Để gửi vào đúng topic, truyền cả hai tham số:

curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
  -H "Content-Type: application/json" \
  -d '{"chat_id": -1001234567890, "message_thread_id": 42, "text": "Báo cáo ngày"}'

Khắc phục lỗi khi lấy chat id

Cách hoạt động của webhook và lỗi 409 được giải thích kỹ trong bài webhook Telegram bot.

Chat id dùng để làm gì?

Chat id telegram bot là thông tin bắt buộc ở rất nhiều nơi: node Telegram trong n8n, script gửi cảnh báo từ server hay CI/CD, trợ lý AI kết nối với Telegram. Các công cụ này thường hỏi cùng lúc token và chat id; nếu chưa có token, xem bài cách lấy token bot Telegram. Có đủ hai thông tin rồi, hãy thử gửi tin bằng sendMessage trong Bot API Tester, rồi đọc tiếp bài API gửi tin nhắn Telegram để định dạng nội dung và thêm nút bấm.

Câu hỏi thường gặp

Chat id Telegram lấy ở đâu nhanh nhất?

Nhắn một tin bất kỳ cho bot, sau đó gọi getUpdates bằng token của bot: giá trị message.chat.id trong kết quả chính là chat id của bạn.

Vì sao chat id của group là số âm?

Trong Bot API, ID của group luôn là số âm, còn supergroup và kênh có dạng -100…, ví dụ -1001234567890. Khi gửi tin, hãy giữ nguyên dấu trừ và tiền tố -100.

Có thể dùng @username thay cho chat id không?

Được với kênh và supergroup công khai: truyền chat_id dạng @tenkenh. Với người dùng và group riêng tư, bạn phải dùng ID dạng số.

Chat id có bao giờ thay đổi không?

Thường là không. Ngoại lệ: khi group thường được nâng cấp thành supergroup, ID đổi sang dạng -100… và Bot API trả về ID mới trong parameters.migrate_to_chat_id.

Vì sao getUpdates trả về result rỗng?

Không có update mới (update chỉ được giữ tối đa 24 giờ), update đã được xác nhận bằng offset, hoặc privacy mode khiến bot không nhận tin nhắn thường trong group. Hãy gửi tin mới rồi gọi lại.

Cách tạo bot Telegram từ A đến Z: BotFather, token và tin nhắn đầu tiên

Tạo bot Telegram miễn phí với @BotFather: chọn username, lấy token, kiểm tra bằng getMe, tìm chat id và gửi tin nhắn đầu tiên bằng curl, Python.

API gửi tin nhắn Telegram: hướng dẫn sendMessage với curl, Python và JavaScript

Dùng API gửi tin nhắn Telegram qua sendMessage: ví dụ curl, Python requests, JavaScript fetch, định dạng HTML, MarkdownV2, nút inline và lỗi 400, 403, 429.

Cách lấy token bot Telegram: tìm lại, kiểm tra bằng getMe và thu hồi khi bị lộ

Cách lấy token bot Telegram từ @BotFather, xem lại token của bot cũ, kiểm tra bằng getMe, sửa lỗi 401 Unauthorized và thu hồi token khi bị lộ.

Webhook Telegram bot: cài setWebhook, bảo mật bằng secret_token và dùng với n8n

Cài webhook Telegram bot từng bước: yêu cầu HTTPS và cổng, setWebhook với secret_token, kiểm tra getWebhookInfo, sửa lỗi 409 Conflict và webhook n8n.