Chat id Telegram lấy ở đâu? Cách lấy chat id cho người dùng, group, kênh và topic
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 chat | chat.type | Ví dụ chat_id |
|---|---|---|
| Chat riêng với người dùng | private | 123456789 (số dương) |
| Group thường | group | -987654321 (số âm) |
| Supergroup, group có topic | supergroup | -1001234567890 |
| Kênh | channel | -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
- Mở bot của bạn trong Telegram, bấm Start hoặc gửi một tin bất kỳ.
- Gọi
getUpdatesbằng curl, hoặc mở getUpdates trong Bot API Tester nếu không muốn dùng terminal. - Tìm trường
message.chat.idtrong 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
- Thêm bot vào group.
- 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. - Gọi
getUpdatesvà đọcmessage.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
- Kênh công khai: dùng luôn
@tenkenhlàmchat_id. Bot vẫn phải là admin có quyền đăng bài thì mới gửi được. - Kênh riêng tư: thêm bot làm admin, đăng một bài trong kênh, rồi gọi
getUpdatesvà đọcchannel_post.chat.id(dạng-100…).
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
"result": []— chưa có update mới. Update chỉ được lưu tối đa 24 giờ, và update đã được xác nhận bằngoffsetsẽ không trả về nữa. Gửi tin mới (trong group:/start@ten_bot) rồi gọi lại.409 Conflict: can't use getUpdates method while webhook is active— bot đang dùng webhook (ví dụ workflow n8n). Hãy xem update ở nơi nhận webhook, hoặc gọideleteWebhooknếu chắc chắn muốn tắt nó. Lưu ý: chế độ long polling của Bot API Tester tự gọideleteWebhooktrước khi chạy.409 Conflict: terminated by other getUpdates request— một tiến trình khác (chính bot đang chạy của bạn) cũng gọigetUpdates. Tạm dừng nó hoặc ghi chat id ra log của bot.Bad Request: chat not foundkhi gửi tin — sai ID, thiếu tiền tố-100, người dùng chưa bấm Start hoặc bot không còn trong group, kênh.Bad Request: group chat was upgraded to a supergroup chat— dùng ID mới trongparameters.migrate_to_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.
Bài viết liên quan
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.