چت آیدی تلگرام: چیست، کجاست و چطور chat id کاربر، گروه و کانال را پیدا کنیم
چت آیدی تلگرام (chat_id) شناسه عددی یکتای هر چت است؛ چه چت خصوصی با یک کاربر باشد، چه گروه، سوپرگروه یا کانال. ربات برای ارسال پیام به این عدد نیاز دارد. چت آیدی معمولاً در اپ تلگرام دیده نمیشود؛ مطمئنترین راه این است که به ربات خود پیام بدهید، متد getUpdates را صدا بزنید و مقدار message.chat.id را بخوانید. در ادامه روش پیدا کردن چت آیدی برای هر نوع چت و رفع مشکلات رایج را میبینید.
چت آیدی تلگرام چیست و چه شکلی دارد؟
از روی علامت و شکل عدد میتوانید نوع چت را تشخیص دهید:
| نوع چت | شکل chat_id | نمونه |
|---|---|---|
| کاربر (چت خصوصی) | عدد مثبت | 123456789 |
| گروه معمولی | عدد منفی | -123456789 |
| سوپرگروه و کانال | عدد منفی با پیشوند -100 | -1001234567890 |
| کانال یا سوپرگروه عمومی | یوزرنیم هم قبول میشود | @channelusername |
این عددها ممکن است از 32 بیت بزرگتر باشند، پس در کد آنها را در عدد صحیح 64 بیتی ذخیره کنید. یوزرنیم کاربر (مثل @ali) جایگزین chat_id نیست؛ برای کاربران همیشه آیدی عددی لازم است.
روش 1: چت آیدی کاربر با getUpdates
- ربات خود را در تلگرام باز کنید و Start را بزنید یا هر پیامی بفرستید.
- متد
getUpdatesرا با curl یا در Bot API Tester روی متد getUpdates اجرا کنید. - در پاسخ، مقدار
message.chat.idرا پیدا کنید.
curl https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/getUpdates
{"ok": true, "result": [{"update_id": 100000001, "message": {
"message_id": 5,
"from": {"id": 123456789, "is_bot": false, "first_name": "علی"},
"chat": {"id": 123456789, "first_name": "علی", "type": "private"},
"date": 1793266200, "text": "سلام"}}]}
در چت خصوصی chat.id و from.id برابرند. در گروهها chat.id آیدی گروه است و from.id آیدی کاربری که پیام را فرستاده.
چت آیدی گروه و سوپرگروه
- ربات را به گروه اضافه کنید.
- در گروه دستوری را که مخصوص ربات است بفرستید، مثلاً
/start@your_bot(به جایyour_botیوزرنیم ربات خودتان را بنویسید). getUpdatesرا صدا بزنید وmessage.chat.idرا بخوانید؛ عددی منفی است.
چرا دستور با یوزرنیم ربات؟ حالت حریم خصوصی (privacy mode) بهطور پیشفرض روشن است و ربات در گروه فقط دستورهای مخصوص خودش، پاسخ به پیامهای خودش و پیامهای سرویسی را دریافت میکند؛ پیامهای عادی را نمیبیند. اگر ربات باید همه پیامها را بخواند، آن را ادمین کنید یا privacy mode را با /setprivacy در BotFather خاموش کنید و ربات را دوباره به گروه اضافه کنید. اضافه شدن ربات به گروه، یک آپدیت my_chat_member هم میسازد که آن هم chat.id گروه را دارد.
وقتی گروه معمولی به سوپرگروه ارتقا پیدا میکند، آیدی آن عوض میشود. پاسخ خطا در این حالت فیلد parameters.migrate_to_chat_id را دارد؛ آیدی جدید را ذخیره کنید.
چت آیدی کانال
- کانال عمومی: لازم نیست عدد را پیدا کنید؛
@channelusernameرا مستقیم به عنوانchat_idبفرستید. ربات باید در کانال ادمین با اجازه ارسال پیام باشد. - کانال خصوصی: ربات را ادمین کانال کنید، یک پست در کانال منتشر کنید، سپس
getUpdatesرا صدا بزنید. پستهای کانال در فیلدchannel_postمیآیند، نهmessage.
{"update_id": 100000002, "channel_post": {
"message_id": 12,
"chat": {"id": -1001234567890, "title": "کانال من", "type": "channel"},
"date": 1793266300, "text": "پست آزمایشی"}}
چت آیدی تاپیک در گروههای تاپیکدار
تاپیکها آیدی چت جداگانه ندارند. پیام را به chat_id سوپرگروه بفرستید و شماره تاپیک را در پارامتر message_thread_id بگذارید. این عدد را از فیلد message_thread_id پیامی که داخل همان تاپیک ارسال شده در getUpdates بردارید.
{"chat_id": -1001234567890, "message_thread_id": 42, "text": "پیام در تاپیک"}
رفع مشکل: نتیجه خالی و خطای 409
اگر getUpdates پاسخ {"ok":true,"result":[]} داد:
- بعد از آخرین فراخوانی پیامی به ربات نرسیده است؛ یک پیام جدید بفرستید و دوباره امتحان کنید.
- آپدیتها حداکثر 24 ساعت روی سرور تلگرام میمانند و آپدیتهایی که با
offsetتأیید شدهاند دیگر برنمیگردند. - در گروه پیام عادی فرستادهاید و privacy mode روشن است؛ از
/start@your_botاستفاده کنید.
اگر به جای نتیجه، خطای 409 با متن Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first گرفتید، روی ربات وبهوک تنظیم شده است. آن را حذف کنید:
curl https://api.telegram.org/bot123456789:AAEexampleTokenReplaceWithYours/deleteWebhook
اگر ربات در حال کار با وبهوک است (مثلاً در یک سرویس اتوماسیون)، حذف وبهوک دریافت آپدیت را در آن سرویس قطع میکند؛ بعد از پیدا کردن آیدی، وبهوک را دوباره تنظیم کنید. جزئیات در راهنمای وبهوک ربات تلگرام.
اگر ارسال پیام خطای 400 با متن Bad Request: chat not found داد، آیدی اشتباه است، پیشوند -100 جا افتاده، کاربر ربات را استارت نکرده یا ربات عضو آن گروه یا کانال نیست.
چت آیدی کجا به کار میرود؟
هر جا ربات باید بدون درخواست کاربر پیام بفرستد به چت آیدی نیاز دارید: اعلانهای سرور و CI، گزارش فروش، ابزارهای اتوماسیون مثل n8n و دستیارهای هوش مصنوعی که به تلگرام وصل میشوند. این ابزارها معمولاً توکن ربات و چت آیدی را با هم میخواهند؛ گرفتن توکن در راهنمای توکن ربات تلگرام و ارسال پیام در آموزش ارسال پیام با ربات تلگرام توضیح داده شده است.
پرسشهای متداول
چت آیدی تلگرام چیست؟
شناسه عددی یکتای هر چت (کاربر، گروه، سوپرگروه یا کانال) است که ربات در پارامتر chat_id متدهایی مثل sendMessage به آن نیاز دارد.
چت آیدی تلگرام کجاست؟
در حالت عادی در اپ تلگرام نمایش داده نمیشود. به ربات خود پیام بدهید، متد getUpdates را صدا بزنید و مقدار message.chat.id را در پاسخ بخوانید.
چرا چت آیدی گروه منفی است؟
در Bot API آیدی کاربران مثبت و آیدی گروهها منفی است. سوپرگروهها و کانالها آیدی منفیای دارند که با -100 شروع میشود، مثل -1001234567890.
آیا میتوانم به جای chat_id از یوزرنیم استفاده کنم؟
برای کانالها و سوپرگروههای عمومی بله، مثل @channelusername. برای کاربران نه؛ باید آیدی عددی را داشته باشید و کاربر قبلاً ربات را استارت کرده باشد.
چرا getUpdates نتیجه خالی برمیگرداند؟
یا پیام جدیدی برای ربات نیامده، یا آپدیتها قبلاً با offset تأیید شدهاند یا بیش از 24 ساعت از آنها گذشته است. اگر وبهوک فعال باشد، به جای نتیجه خالی خطای 409 میگیرید.
آیا چت آیدی تغییر میکند؟
آیدی کاربران و کانالها ثابت است. اما وقتی یک گروه معمولی به سوپرگروه ارتقا پیدا میکند، آیدی جدیدی میگیرد که در فیلد migrate_to_chat_id اعلام میشود.
آموزشهای مرتبط
ساخت ربات تلگرام: آموزش قدمبهقدم از BotFather تا اولین پیام با Python
ساخت ربات تلگرام قدمبهقدم: ساخت ربات در BotFather، گرفتن توکن، تست با getMe، پیدا کردن chat id و ارسال اولین پیام با curl و Python.
ارسال پیام با ربات تلگرام از طریق API تلگرام (sendMessage)
آموزش ارسال پیام با ربات تلگرام از طریق API تلگرام: متد sendMessage با curl، Python و JavaScript، قالببندی HTML و MarkdownV2، دکمه شیشهای و رفع خطاها.
توکن ربات تلگرام: چیست، چطور بگیریم، بررسی و باطل کنیم
توکن ربات تلگرام چیست و از کجا بگیریم؟ گرفتن توکن از BotFather، پیدا کردن توکن ربات قبلی، تست با getMe، باطل کردن توکن لو رفته و نگهداری امن آن.
وب هوک ربات تلگرام: راهاندازی setWebhook، بررسی و رفع خطا
آموزش ست وب هوک تلگرام با setWebhook: پیشنیازهای HTTPS و پورتها، secret_token، بررسی با getWebhookInfo، حذف وب هوک و رفع خطاهای رایج مثل 409.