طراحی اپلیکیشن

آموزش ساخت ربات تلگرام

ربات تلگرام یک برنامه است که روی سرور شما اجرا می شود و با یک توکن به آدرس api.telegram.org درخواست می فرستد؛ خود تلگرام هیچ کدی از شما اجرا نمی کند. ساختن ربات با BotFather چند دقیقه طول می کشد و کار واقعی از آنجا شروع می شود که تصمیم بگیرید پیام ها را چطور بگیرید و در گروه چه چیزی ببینید.

  • درس ۵ از ۸
  • مقدماتی
  • رایگان، بدون ثبت نام

از صفر تا رباتی که جواب می دهد

چهار قدم اول در چند دقیقه تمام می شوند. قدم پنجم است که پروژه را تعریف می کند.

  1. BotFather

    دستور newbot، یک نام نمایشی و یک نام کاربری که به bot ختم می شود.

    ۱
  2. توکن

    توکن هویت ربات است، نه یک کلید کنار رمز. جایش متغیر محیطی است.

    ۲
  3. آزمایش با getMe

    یک درخواست، پیش از نوشتن هر کدی. جواب همیشه JSON است، حتی وقتی خطاست.

    ۳
  4. اولین دستورها

    start و یکی دو دستور دیگر، ثبت شده در BotFather تا در فهرست پیشنهاد بیایند.

    ۴
  5. میزبانی و بالا ماندن

    برنامه باید بعد از ریستارت خودش بالا بیاید. به روزرسانی بیشتر از یک روز نگه داشته نمی شود.

    ۵

هیچ کدام از این قدم ها به تلگرام نمی گوید کد شما کجا اجرا شود. میزبانی از اول تا آخر با شماست.

آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.

ربات تلگرام دقیقا چیست و چطور کار می کند؟

یک ربات تلگرام یک حساب کاربری خاص است که آدم پشتش نیست، برنامه شماست. آن برنامه هر جا که شما بگذاریدش اجرا می شود، روی یک سرور یا حتی روی لپ تاپ خودتان، و از طریق یک ای پی آی وب با تلگرام حرف می زند. تلگرام کد شما را میزبانی نمی کند و اجرا هم نمی کند؛ فقط پیام ها را به شما می دهد و پیام های شما را تحویل می گیرد.

راه ارتباط یک الگوی ساده است و مستندات Bot API آن را دقیقا همین طور می نویسد: همه درخواست ها باید روی HTTPS باشند و به این شکل درآیند: https://api.telegram.org/bot<token>/METHOD_NAME. هر متد یک آدرس است. پاسخ همیشه یک شی JSON است که یک فیلد ok دارد.

توکن هم همان چیزی است که مستندات «توکن احراز هویت» می نامد و می گوید هر ربات موقع ساخته شدن یکی مخصوص خودش می گیرد؛ شکلش چیزی شبیه 123456:ABC-DEF... است. این جمله دو معنی دارد و دومی مهم تر است: توکن کلید نیست که در کنارش رمزی هم باشد، توکن خود هویت است. هر کسی که آن رشته را داشته باشد ربات شماست.

پس ساختار کلی این می شود: کاربر در تلگرام چیزی می نویسد، تلگرام آن را در صف به روزرسانی های ربات شما می گذارد، برنامه شما آن را برمی دارد، تصمیم می گیرد، و با یک درخواست HTTPS جواب می فرستد. اگر ای پی آی چیست را خوانده باشید، اینجا هیچ چیز تازه ای نیست جز نام متدها.

هواپیمای کاغذی شیشه ای روی میز سیاه با یک کلید قرمز و جعبه سرور سبز که با کابل آبی به آن وصل است

از BotFather تا اولین پیام، قدم به قدم

ربات را خود تلگرام نمی سازد؛ رباتی به اسم @BotFather می سازد. در تلگرام سراغش می روید، /newbot می فرستید، یک نام نمایشی و یک نام کاربری که به bot ختم می شود می دهید، و او توکن را به شما می دهد. همان جا هم می شود فهرست دستورها را ثبت کرد، که کاری است که بیشتر آموزش ها از قلم می اندازند و همان چیزی است که وقتی کاربر یک اسلش می زند، فهرست پیشنهادها را بالا می آورد. دستورها طبق مستندات همیشه با علامت / شروع می شوند و حداکثر ۳۲ کاراکترند.

قبل از نوشتن هر کدی، توکن را امتحان کنید. یک درخواست کافی است:

curl -s "https://api.telegram.org/bot<token>/getMe"

اگر توکن درست باشد، مشخصات ربات را در JSON می گیرید. اگر غلط باشد، چیزی که برمی گردد یک صفحه خطای HTTP نیست، بلکه همان پاکت JSON است. ما امروز از سرور خودمان با یک توکن ساختگی امتحانش کردیم و جواب دقیقا این بود:

{"ok":false,"error_code":401,"description":"Unauthorized"}

این را عمدا نشان می دهیم، چون کل شکل کار در همین یک خط است: ok می گوید موفق بود یا نه، و اگر نبود، description می گوید چرا. برنامه شما باید همیشه اول ok را نگاه کند، نه فقط کد وضعیت HTTP را.

بعد از این، اولین کاری که ربات باید بلد باشد پاسخ به /start است، چون همان دکمه ای است که کاربر با آن ربات را باز می کند. یک جمله بنویسید که بگوید ربات چه کاری می کند و کاربر بعدش چه بزند. رباتی که به /start جواب مبهم می دهد، همان جا بسته می شود.

پیام ها را با getUpdates بگیرم یا با وبهوک؟

مستندات این را صریح می گوید: دو راه برای گرفتن به روزرسانی ها وجود دارد و این دو با هم جمع نمی شوند، متد getUpdates از یک طرف و وبهوک از طرف دیگر. یعنی اگر وبهوک تنظیم شده باشد، getUpdates اصلا کار نمی کند و همین یک جمله بیشتر خطاهای شب اول را توضیح می دهد.

در حالت اول برنامه شما مرتب می پرسد چیز تازه ای هست. ساده است، به آدرس عمومی احتیاج ندارد و روی لپ تاپ هم اجرا می شود، پس برای یاد گرفتن و برای نسخه اول انتخاب درستی است. نکته ای که مستندات یادآوری می کند: بعد از هر پاسخ باید offset را دوباره حساب کنید، وگرنه همان پیام ها را دوباره می گیرید.

در حالت دوم شما یک آدرس می دهید و تلگرام هر وقت چیزی باشد، یک درخواست POST روی HTTPS به آن آدرس می فرستد. کارآمدتر است و برای ربات پرترافیک همین درست است. دو چیز را از خود مستندات بدانید: اگر پاسخ آدرس شما کدی غیر از دویست باشد، تلگرام درخواست را تکرار می کند و بعد از تعداد معقولی تلاش دست می کشد. و مهم تر از آن، به روزرسانی ها روی سرور تلگرام نگه داشته می شوند تا ربات بگیردشان، ولی بیشتر از ۲۴ ساعت نگه داشته نمی شوند.

آن جمله آخر تصمیم عملیاتی شماست، نه یک جزئیات. یعنی اگر سرور ربات یک روز کامل خاموش بماند، پیام های آن روز از دست می روند و هیچ راهی برای برگرداندنشان نیست. برای ربات سرگرمی مهم نیست؛ برای ربات پشتیبانی مشتری مهم است و باید برایش هشدار بگذارید.

دو راه گرفتن پیام، و اینکه با هم جمع نمی شوند

ربات آدرس عمومی HTTPS دارد؟

اگر ندارد، یا تازه شروع کرده اید

getUpdates

  • روی لپ تاپ هم اجرا می شود، بدون دامنه و گواهی
  • بعد از هر پاسخ باید offset را دوباره حساب کنید
  • برای یادگیری و نسخه اول کافی است
اگر دارد و ترافیک بالاست

وبهوک

  • تلگرام برای هر به روزرسانی یک POST روی HTTPS می فرستد
  • پاسخ غیر از دویست، تلگرام را به تکرار درخواست وامی دارد
  • کارآمدتر است و به سرور همیشه در دسترس نیاز دارد

مستندات می گوید این دو متقابلا منحصر به فردند. اگر وبهوک تنظیم باشد، getUpdates اصلا جواب نمی دهد.

ربات در گروه چه چیزی را می بیند؟

این بخش هم پرسش حریم خصوصی است و هم علت اینکه ربات شما در گروه «کار نمی کند». تلگرام حالتی به اسم Privacy Mode دارد که برای همه ربات های افزوده شده به گروه به صورت پیش فرض روشن است، و در آن حالت ربات فقط این ها را می بیند: دستورهایی که صریحا برای خودش اند، مثل /command@this_bot؛ دستورهای عمومی مثل /start اگر ربات آخرین رباتی بوده که در گروه پیام داده؛ پیام های اینلاین که از طریق خودش فرستاده شده اند؛ و پاسخ به پیام هایی که برای این ربات بوده اند.

در مقابل، مستقل از این حالت، هر رباتی این ها را می گیرد: همه پیام های سرویس، همه پیام های چت خصوصی، و همه پیام های کانالی که عضوش است. یک استثنا هم هست که خیلی ها را غافلگیر می کند: ربات هایی که به عنوان ادمین به گروه اضافه شده اند همیشه همه پیام ها را دریافت می کنند.

می شود این حالت را خاموش کرد و آن وقت ربات مثل یک کاربر عادی همه پیام ها را می بیند، ولی دو نکته: تغییر تا وقتی ربات دوباره به گروه اضافه نشود اعمال نمی شود، و خود تلگرام در همان صفحه می نویسد این کار را فقط در مواردی توصیه می کند که واقعا برای کار ربات ضروری باشد و در بیشتر موارد استفاده از force reply کافی است.

موضع ما همان است: حالت پیش فرض را روشن بگذارید. نه فقط به این دلیل که کاربر گروه انتظار ندارد یک ربات همه گفتگویش را بخواند، بلکه چون ربات شما هم آن پیام ها را نمی خواهد و پردازش نکردنشان هم ارزان تر است هم امن تر. اگر واقعا مجبور شدید خاموشش کنید، در همان پیام /start بنویسید ربات چه چیزی را می خواند. کاربران گروه می توانند وضعیت حریم خصوصی هر ربات را در فهرست اعضا ببینند، پس پنهان کردنش هم شدنی نیست.

ربات با حالت پیش فرض در گروه چه چیزی می بیند

  • دستور صریح برای خودش

    شکل command@this_bot، یعنی کاربر مشخص کرده با کدام ربات حرف می زند.

  • دستور عمومی، در یک شرط

    مثل start، فقط اگر این ربات آخرین رباتی بوده که در گروه پیام داده.

  • پیام اینلاین از طریق خودش

    چیزی که کاربر با تایپ نام ربات در همان چت ساخته است.

  • پاسخ به پیام های خودش

    همین است که تلگرام به جای خاموش کردن حالت حریم خصوصی، force reply را پیشنهاد می دهد.

  • بقیه گفتگوی گروه، نه

    و کاربران گروه می توانند وضعیت حریم خصوصی هر ربات را در فهرست اعضا ببینند.

یک استثنا: ربات هایی که به عنوان ادمین اضافه شده اند همیشه همه پیام ها را می گیرند.

محدودیت ها و اشتباه هایی که همه بار اول می کنند

سه دسته محدودیت وجود دارد و هر سه در پرسش و پاسخ رسمی نوشته شده اند. اول، سرعت پیام: در یک چت، بیش از یک پیام در ثانیه نفرستید؛ تلگرام می گوید ممکن است انفجارهای کوتاه را تحمل کند ولی در نهایت خطای ۴۲۹ می گیرید. در یک گروه، بیش از ۲۰ پیام در دقیقه ممکن نیست. و برای اطلاع رسانی انبوه، ربات بیش از حدود ۳۰ پیام در ثانیه پخش نمی کند.

دوم، پخش پولی. اگر آن سقف کم است، تلگرام امکانی دارد که سقف را تا ۱۰۰۰ پیام در ثانیه می برد و هر پیام بالای همان ۳۰ تای رایگان، ۰.۱ ستاره هزینه دارد. ولی شرطش را هم می نویسد و شرط کوچکی نیست: ربات باید دست کم ۱۰۰ هزار ستاره در موجودی و دست کم ۱۰۰ هزار کاربر فعال ماهانه داشته باشد. یعنی این راه برای ربات تازه شما نیست و بهتر است از اول روی صف و زمان بندی حساب کنید نه روی خرید سرعت.

سوم، فایل ها. ربات فایل تا ۵۰ مگابایت می فرستد، و متد getFile فقط برای فایل های تا ۲۰ مگابایت کار می کند. این دو عدد یکی نیستند و همین جاست که رباتی که ویدیو می گیرد، در آزمایش کار می کند و در دست کاربر واقعی می شکند.

و سه اشتباه که تکراری اند. اول، گذاشتن توکن داخل کدی که در گیتهاب منتشر می شود؛ چون توکن خود هویت ربات است، هر کسی که آن را ببیند می تواند به جای شما پیام بفرستد. توکن جای متغیر محیطی است، نه جای فایل کد. دوم، فرستادن پیام در حلقه بدون فاصله، که مستقیم به همان خطای ۴۲۹ می رسد. سوم، فرض اینکه ربات همیشه بالاست: برنامه شما روزی از کار می افتد، و اگر بیشتر از ۲۴ ساعت پایین بماند، پیام های آن مدت دیگر برنمی گردند.

قبل از اینکه ربات را در دست کاربر بگذارید

برگه بازبینی پیش از اجراقبل از انتشار

این ها را چک کنید

  • توکن در متغیر محیطی است و در هیچ فایلی که منتشر می شود نیست
  • کد پیش از هر چیز فیلد ok پاسخ را می خواند
  • ارسال گروهی فاصله زمانی دارد و خطای ۴۲۹ را مدیریت می کند
  • پیام start می گوید ربات چه می کند و چه چیزی را می خواند
  • برنامه بعد از ریستارت سرور خودش بالا می آید

این ها را نکنید

  • خاموش کردن حالت حریم خصوصی چون راحت تر است
  • حساب کردن روی پخش پولی برای ربات تازه
  • فرض اینکه getFile با فایل بزرگ هم کار می کند
  • تنظیم وبهوک و بعد تعجب از اینکه getUpdates جواب نمی دهد

این برگه ربات را بی نقص نمی کند. جلوی سه اشتباهی را می گیرد که برگرداندنشان از پیشگیری شان گران تر است.

مسیر سریع با هوش مصنوعی

اینجا همان جایی است که کار واقعا سریع می شود. نوشتن اولین ربات از روی توضیح فارسی چیزی که باید بکند، کاری است که مدل ها امروز خوب انجام می دهند، چون ای پی آی تلگرام کوچک و پرسند است. ولی خروجی را قبل از اجرا باید بازبینی کنید، و بازبینی سه بند دارد که هر سه در همین درس آمده اند. برای تولید کد یک مدل قوی بگذارید، نه ارزان ترین مدل؛ انتخاب فعلی ما در بخش هوش مصنوعی همین سایت هست.

  1. کاری را که ربات باید بکند به فارسی ساده بنویسید، مثل اینکه به یک کارآموز توضیح می دهید. چه دستورهایی، چه جوابی، چه چیزی را کجا ذخیره کند.
  2. نسخه پایین را اجرا کنید. توکن واقعی را در پرامپت نگذارید؛ نسخه صریحا از مدل می خواهد توکن را از متغیر محیطی بخواند.
  3. کد را قبل از اجرا بخوانید و همان سه بند برگه بازبینی بالا را روی آن ببرید: توکن کجاست، خطای ۴۲۹ چطور مدیریت شده، و در گروه چه چیزی خوانده می شود.
  4. اولین اجرا را با یک ربات دوم انجام دهید نه با ربات اصلی. مستندات خودش همین را پیشنهاد می کند: یک ربات تازه بسازید، توکنش را در نسخه آزمایشی بگذارید، و ربات واقعی را دست نخورده نگه دارید.

نسخه آماده کپی

یک ربات تلگرام بنویس که این کار را انجام دهد:
{توضیح ساده کاری که ربات باید بکند}

قاعده های سختگیرانه:
۱) توکن را از متغیر محیطی بخوان و هیچ توکنی را در کد ننویس، حتی به عنوان نمونه.
۲) بعد از هر درخواست، اول فیلد ok پاسخ را چک کن و اگر false بود مقدار description را لاگ کن. فقط به کد وضعیت HTTP تکیه نکن.
۳) برای ارسال به چند نفر، یک تاخیر بین پیام ها بگذار و خطای 429 را مدیریت کن؛ در یک چت بیش از یک پیام در ثانیه نفرست.
۴) از getUpdates استفاده کن نه وبهوک، و بعد از هر پاسخ offset را دوباره حساب کن.
۵) فرض کن حالت privacy در گروه روشن است، پس فقط دستورهایی را پردازش کن که صریحا برای این ربات اند.
۶) هر جا ای پی آی متدی دارد که مطمئن نیستی، به جای حدس زدن یک کامنت بگذار با متن «باید در مستندات چک شود» و ادامه بده.

خروجی: فقط کد، به همراه یک فهرست کوتاه در انتها از هر متد Bot API که استفاده کرده ای. هیچ توکن، هیچ آدرس واقعی و هیچ شماره نسخه ای ننویس.

قبل از اعتماد به خروجی: کدی که برمی گردد را اجرا نکنید تا سه چیز را ندیده باشید. یک، اینکه هیچ توکنی در متن نیست. دو، اینکه فهرست متدهای انتهای جواب را با مستندات Bot API مقایسه کرده اید؛ اگر متدی در مستندات نبود، مدل ساخته است و آن تکه کد کار نمی کند. سه، اینکه اگر ربات قرار است در گروه برود، همان چیزی را می خواند که در بخش حریم خصوصی بالا گفتیم. و اولین اجرا با یک ربات آزمایشی، نه با رباتی که کاربر واقعی دارد.

هوش مصنوعی در این کار

ربات تلگرام یکی از معدود جاهایی است که تولید کد با مدل واقعا از یاد گرفتن سریع تر جواب می دهد، چون ای پی آی کوچک است و مستندات رسمی اش پر از مثال. ولی همین کوچک بودن، خطر خاص خودش را دارد: مدل به راحتی متدی می سازد که وجود ندارد و کد در نگاه اول سالم به نظر می رسد. پس مدل را روی نوشتن بگذارید و راستی آزمایی متدها را روی مستندات.

ابزارهایی که واقعا کمک می کنند

  • Claude برای نوشتن اولین نسخه ربات و برای بازخوانی کدی که خودش نوشته خوب جواب می دهد. ایران در هیچ کدام از دو فهرست کشورهای پشتیبانی شده انتروپیک نیست؛ این را از صفحه خود انتروپیک خوانده ایم.
  • Claude Code وقتی ربات از یک فایل بیشتر شد، ابزار خط فرمان روی خود پروژه کار می کند و لاگ را هم می خواند. کلاد کد روی همان حساب انتروپیک کار می کند و ایران در فهرست کشورهای پشتیبانی شده نیست.
  • Gemini برای خلاصه کردن یک صفحه مستندات و برای پاس های ساده تر روی کد مقرون به صرفه است. صفحه خود گوگل می گوید اپ وب جمنای در بیش از دویست و سی کشور و منطقه کار می کند و ایران در آن فهرست نیست.

کجا نتیجه معکوس می دهد

خطر اول اینجا از هر درس دیگری این مسیر ملموس تر است و اسمش توکن است. اگر توکن ربات را داخل پرامپت بچسبانید، آن را به یک سرویس بیرونی فرستاده اید، و چون توکن خود هویت ربات است نه یک کلید کنار رمز، افشا شدنش یعنی کسی می تواند به جای شما به همه کاربرانتان پیام بدهد. اینکه سرویس داده شما را برای آموزش نگه می دارد یا نه، به پلن و تنظیمات همان سرویس بستگی دارد و روی صفحه استفاده از داده خودش نوشته شده؛ ولی جواب هر چه باشد، فرستادن توکن لازم نیست. نسخه بالا عمدا از مدل می خواهد توکن را از متغیر محیطی بخواند.
خطر دوم ساختن متد است. ای پی آی تلگرام نام های خوش ساختی دارد و مدل به راحتی یکی شبیهشان می سازد که وجود ندارد. علامتش هم دیر پیدا می شود، چون کد کامپایل می شود و فقط در زمان اجرا خطای «متد ناشناخته» می گیرید. برای همین در نسخه خواستیم فهرست متدهای استفاده شده را در انتها بدهد: آن فهرست را با مستندات مقایسه کنید، نه کل کد را.
و یک نکته که کد نیست ولی مال همین درس است: اگر ربات شما پیام کاربران را جایی ذخیره می کند، در پیام start بنویسید. امنیت سایبری از همین جمله های ساده شروع می شود. برای اینکه بدانید هر ابزار از ایران چطور قابل پرداخت است، راهنمای خرید را ببینید.

منبع ها: Telegram Bot API: authorizing your bot and making requests Telegram: bot features, privacy mode and testing your bot Telegram bots FAQ: broadcasting limits and file sizes Anthropic: supported countries Google: where Gemini Apps are available

حد این توصیه

این درس یک ربات ساده را تا اولین اجرا می رساند و بیشتر از آن نه. سه چیزی که عمدا نیامده اند و برای ربات جدی لازم اند: ذخیره وضعیت گفتگو وقتی چند مرحله دارد، پرداخت داخل ربات، و مقیاس دادن وقتی چند هزار کاربر همزمان پیام می دهند. هر سه از جنس بک اند اند نه از جنس ای پی آی تلگرام. دوم اینکه اعدادی که آوردیم از پرسش و پاسخ رسمی امروز خوانده شده اند و تلگرام آنها را عوض می کند؛ قبل از تکیه کردن روی هر عدد، همان صفحه را دوباره ببینید. و سوم، ما درباره دسترسی به تلگرام از داخل ایران حرفی نزدیم چون درباره اش ادعای قابل استنادی نداریم؛ آنچه اندازه گرفتیم فقط این است که سرور خود ما به api.telegram.org می رسد.

از تجربه خود ما

جوابی که در بخش دوم نشان دادیم را همین امروز از سرور خودمان گرفتیم، نه از جایی نقل کردیم. یک درخواست به https://api.telegram.org/bot123456:FAKE/getMe فرستادیم و آنچه برگشت این بود: {"ok":false,"error_code":401,"description":"Unauthorized"}. سه چیز از همین یک خط درمی آید و هر سه را خودتان می توانید تکرار کنید. اول اینکه ای پی آی حتی برای توکن غلط هم پاکت JSON برمی گرداند نه صفحه خطا، پس کد شما باید ok را بخواند. دوم اینکه برای دیدن این جواب هیچ رباتی لازم نیست، یعنی می توانید اتصال را قبل از ساختن ربات آزمایش کنید. سوم، و ناخوشایندتر: اگر یک رشته تصادفی این جواب را می گیرد، رشته درست جواب دیگری می گیرد، و این دقیقا همان علتی است که در این درس روی جای توکن اصرار کردیم.
یک نکته کوچک که از سمت خودمان می آید: در همین سایت، دکمه تماس تلگرامی در فایل inc/helpers.php یک لینک t.me است، یعنی همان سازوکار لینک عمیقی که مستندات ربات ها توضیحش می دهد. هر ربات هم یک لینک به شکل https://t.me/<bot_username> دارد و می شود به آن پارامتر داد. این ساده ترین راه است که کاربر را از یک صفحه وب مستقیم به گفتگوی ربات ببرید، و بیشتر پروژه های تازه از قلم می اندازندش.

سوال هایی که واقعا پرسیده می شوند

ساخت ربات تلگرام هزینه دارد؟

ساختن ربات و توکن گرفتن رایگان است و پرسش و پاسخ رسمی می گوید ربات ها به صورت پیش فرض بدون هزینه به کاربرانشان پیام می دهند. چیزی که هزینه دارد جای دیگری است: سروری که برنامه شما روی آن بالا می ماند. برای رباتی که چند صد کاربر دارد، یک سرور کوچک کافی است.

برای ساخت ربات باید حتما برنامه نویسی بلد باشم؟

پرسش و پاسخ رسمی می گوید ساختن ربات تلگرام خیلی ساده است ولی دست کم مقداری مهارت برنامه نویسی لازم دارید. با کمک هوش مصنوعی می شود نسخه اول را بدون تسلط نوشت، ولی خواندن کد و فهمیدن خطا همچنان کار شماست، و بدون آن ربات اولین باری که چیزی خراب شود می ماند.

ربات می تواند پیام های گروه را بخواند؟

با تنظیم پیش فرض نه؛ فقط دستورهایی که برای خودش اند، پاسخ ها به پیام هایش و پیام های اینلاین از طریق خودش را می بیند. این حالت را می شود خاموش کرد ولی تلگرام خودش می گوید فقط وقتی ضروری است، و کاربران گروه می توانند وضعیتش را در فهرست اعضا ببینند. ربات هایی که ادمین گروه اند استثنا هستند و همه پیام ها را می گیرند.