فهرست مطالب
دو روز پیش ربات تلگرامت را با پایتون ساختی؛ حالا همان ربات را بدون حتی یک خط کد میسازی. با n8n — همان ابزاری که دیروز با داکر نصبش کردی — یک «تریگر تلگرام» میگذاری سر راه پیامها و یک «نود ارسال پیام» تهش؛ نتیجه رباتی است که به هر پیامی جواب میدهد، منوی دکمهدار نشان میدهد و هر وقت n8n روشن باشد، بیدار است.
قول این آموزش ساده است: آخرش یک ربات واقعی داری که به «سلام» جواب میدهد — و بلدی همین اسکلت را به یادآور روزانه، خوشآمدگوی گروه یا هر ایدهٔ دیگری تبدیل کنی. همهٔ قدمها از مستندات رسمی n8n و تلگرام آمدهاند؛ چیزی را از خودمان حدس نزدهایم.
پاسخ کوتاه
با n8n و بدون کدنویسی ربات تلگرام میسازی: فقط بلوکها را به هم وصل میکنی.
اول با BotFather ربات را میسازی و توکن میگیری؛ کلش دو دقیقه طول میکشد.
توکن را یکبار در n8n بهعنوان Credential ذخیره میکنی؛ همهٔ نودهای تلگرام از همان استفاده میکنند.
قلب ربات فقط دو نود است: Telegram Trigger (گوش دادن به پیامها) و نود Telegram با عملیات Send Message (جواب دادن).
برای اجرای دائمی، n8n باید با یک آدرس HTTPS عمومی در دسترس تلگرام باشد — جزئیاتش در مرحلهٔ آخر.
اول زمینه: تریگر تلگرام در n8n دقیقاً چه کاری میکند؟
اگر آموزش دیروز را خوانده باشی، n8n را با داکر نصب کردهای: یک صفحهٔ وب که در آن «فلو» میسازی؛ یعنی چند بلوک (نود) را با خط به هم وصل میکنی و هر بلوک یک کار انجام میدهد. ربات تلگرام هم دقیقاً یک فلو است: بلوک اول «پیام آمد»، بلوک دوم «جواب بده».
تریگر یعنی چه؟
تریگر (Trigger) یعنی «ماشه». نود تریگر کاری انجام نمیدهد؛ فقط منتظر یک اتفاق بیرونی میماند و با وقوعش، فلو را استارت میزند. در این آموزش، آن اتفاق «رسیدن یک پیام تازه به ربات تلگرام تو» است.
وبهوک یعنی چه؟
وبهوک (Webhook) یعنی بهجای اینکه n8n هر چند ثانیه از تلگرام بپرسد «پیام تازه هست؟»، تلگرام خودش هر پیام تازه را همان لحظه به آدرس n8n میفرستد. سریعتر است و منابع کمتری مصرف میکند. برای همین n8n موقع فعالسازی تریگر، خودش یک آدرس وبهوک در تلگرام ثبت میکند و تو لازم نیست دستی کاری بکنی — فقط باید n8n از اینترنت قابل دسترس باشد که در مرحلهٔ آخر توضیحش میدهیم.
پیشنیازها
n8n در حال اجرا — اگر هنوز نصبش نکردهای، آموزش نصب n8n با داکر را ببین و برگرد؛ پنج دقیقه بیشتر طول نمیکشد.
حساب تلگرام روی گوشی یا دسکتاپ.
توکن ربات — همین آموزش، مرحلهٔ ۱؛ دو دقیقهای میگیریاش.
برای تست همینجا هیچچیز دیگری لازم نیست؛ آدرس HTTPS عمومی را فقط برای اجرای دائمی میخواهی (مرحلهٔ ۶).
مرحله ۱: ساخت ربات با BotFather
هر ربات تلگرام با یک «پدرخوانده» شروع میشود: BotFather، ربات رسمی خود تلگرام که ربات میسازد و توکن میدهد. طبق مستندات رسمی n8n مسیرش این است:
تلگرام را باز کن و BotFather را سرچ کن (همانی که تیک آبی تأیید دارد) و /start را بفرست.
دستور /newbot را بفرست.
BotFather اول یک اسم نمایشی میخواهد — مثل «ربات یادآور من». این اسم را بعداً هم میشود عوض کرد.
بعد یک یوزرنیم میخواهد. سه قانون سفتوسخت دارد: بین ۵ تا ۳۲ نویسه، فقط حروف لاتین و عدد و آندرلاین، و حتماً آخرش bot باشد (مثل my_reminder_bot). و مهم: یوزرنیم را دیگر نمیشود عوض کرد، پس با دقت انتخابش کن.
تمام است! BotFather یک توکن (رشتهای مثل 123456:ABC-DEF...) به تو میدهد. آن را کپی کن و جایی امن نگه دار.
نتیجهٔ موردانتظار: حالا یک ربات واقعی داری که با یوزرنیمش در تلگرام قابل سرچ است. اگر به آن پیام بدهی، فعلاً جواب نمیدهد — مغزش را در مرحلههای بعد میسازیم.
خطای رایج: اگر یوزرنیم تکراری باشد، BotFather میگوید کس دیگری قبلاً برش داشته؛ کافی است یکی دیگر امتحان کنی. و یادت باشد: توکن را به هیچکس نده — هرکس توکن را داشته باشد، کنترل کامل رباتت را دارد.

مرحله ۲: وصل کردن توکن به n8n
حالا باید به n8n بگویی «این توکن مال من است». خبر خوب: این کار را فقط یکبار انجام میدهی و از آن به بعد همهٔ نودهای تلگرام خودشان از همین اتصال استفاده میکنند. به این اتصال ذخیرهشده در n8n میگویند Credential، یعنی «مدرک شناسایی».
در n8n از منوی کناری Credentials را باز کن و Create new را بزن.
از فهرست، نوع اتصال Telegram را انتخاب کن.
توکنی که BotFather داد را در فیلد Access Token بچسبان.
Save را بزن. برای اسمش چیزی مثل «ربات تلگرام من» بگذار تا بعداً پیدایش کنی.
نتیجهٔ موردانتظار: یک Credential با اسم دلخواهت در فهرست میبینی. از این به بعد هر نودی که به تلگرام وصل شود، همین را انتخاب میکند و دیگر لازم نیست توکن را جایی تایپ کنی.
نکتهٔ امنیتی: توکن مثل رمز عبور است. اگر روزی حس کردی لو رفته، در BotFather با دستور /revoke میتوانی باطلش کنی و یکی تازه بگیری — بعد فقط همین Credential را در n8n بهروز میکنی و همهٔ فلوها خودشان درست میشوند.

مرحله ۳: ساخت فلوی اول — گوش دادن به پیامها
وقت ساخت مغز ربات است. یک ورکفلوی تازه بساز و اولین بلوک را اضافه کن:
روی + بزن و Telegram Trigger را سرچ و اضافه کن.
در بخش Credential همان اتصالی که در مرحلهٔ ۲ ساختی را انتخاب کن.
در قسمت Events فعلاً همان ***** بماند؛ یعنی «همهٔ بهروزرسانیها» بهجز چند مورد پرتکرار مثل ریاکشنها — طبق مستندات n8n. اگر فقط پیام متنی میخواهی، میتوانی Message را انتخاب کنی.
روی Execute Node بزن و از تلگرام به رباتت یک پیام بده (مثلاً «سلام»).
نتیجهٔ موردانتظار: نود سبز میشود و در خروجیاش یک JSON میبینی. دو چیز مهم داخلش هست: message.text (همان «سلام» تو) و message.chat.id (یک عدد که شناسهٔ گفتوگوی تو با ربات است). این شناسه همان «آدرسی» است که جواب ربات باید به آن برگردد — در مرحلهٔ بعد از آن استفاده میکنیم.
خطای رایج: اگر با زدن Execute Node خطایی دربارهٔ وبهوک دیدی، یعنی تلگرام نتوانسته به n8n وصل شود. علت تقریباً همیشه یکی است: n8n روی localhost است و از اینترنت دیده نمیشود. راهحلش در مرحلهٔ ۶.
مرحله ۴: جواب دادن — ربات اکو
«اکو» (Echo) یعنی طنین: هرچه بگویی، همان را برمیگرداند. سادهترین تست زنده بودن یک ربات است — و پایهٔ همهٔ رباتهای جدیتر.
بعد از تریگر، روی + بزن و نود Telegram (همان نود معمولی، نه تریگر) را اضافه کن و با کشیدن خط، خروجی تریگر را به آن وصل کن.
در تنظیمات نود: Resource را Message و Operation را Send Message بگذار.
همان Credential مرحلهٔ ۲ را انتخاب کن.
در فیلد Chat ID این عبارت را بنویس: {{ $json.message.chat.id }} — یعنی «همان کسی که پیام داد». با این کار لازم نیست شناسه را دستی پیدا کنی؛ خودش از خروجی تریگر میآید.
در فیلد Text بنویس: {{ $json.message.text }} — یعنی «همان متنی که فرستاد».
Execute Workflow را بزن و به رباتت پیام بده.
نتیجهٔ موردانتظار: هر پیامی به ربات بدهی، عیناً برمیگردد. اگر بهجای اکو میخواهی جواب ثابت بدهد (مثلاً «سلام! من ربات یادآور توام»)، کافی است در فیلد Text همان جمله را بنویسی و عبارت آکولادی را پاک کنی.
نکته: متن هر پیام تلگرام حداکثر ۴۰۹۶ نویسه است — یعنی حدود ۶۰۰ تا ۷۰۰ کلمهٔ فارسی. برای جوابهای معمولی خیلی بیشتر از نیاز توست، ولی اگر خواستی متن بلند بفرستی، باید تکهتکهاش کنی.

مرحله ۵: ربات منودار — دکمههای لمسی
ربات اکو بامزه است ولی ربات واقعی «منو» دارد. دو راه استاندارد هست:
الف) دکمههای اینلاین (زیر پیام)
دکمهٔ اینلاین (Inline Keyboard) همان دکمههایی است که به پیام میچسبند و کاربر با یک لمس انتخاب میکند — برای «بله/خیر» یا انتخاب دستهبندی عالی است. طبق مستندات نود تلگرام n8n:
در همان نود Send Message، بخش Add Field را باز کن و Reply Markup را انتخاب کن.
Inline Keyboard را بزن، بعد Add Button — برای هر دکمه یک متن (مثل «شروع») مینویسی.
با Add Keyboard Row ردیف تازه میسازی تا دکمهها مرتب زیر هم بچینند.
حالا سؤال مهم: وقتی کاربر دکمه را میزند چه میشود؟ تلگرام یک رویداد تازه به اسم Callback Query میفرستد — یعنی «کاربر روی دکمه کلیک کرد». پس یک تریگر دوم با Events روی Callback Query میگذاری و با نود IF یا Switch مسیر را جدا میکنی: اگر دکمهٔ «شروع» بود، پیام خوشآمد بفرست؛ اگر «راهنما» بود، راهنما.
ب) منوی دستورات (مثل /start)
آن منویی که با زدن دکمهٔ کنار کادر تایپ باز میشود و دستورهایی مثل /start را نشان میدهد، از BotFather ساخته میشود، نه از n8n:
به چت BotFather برگرد و /setcommands را بفرست.
رباتت را از فهرست انتخاب کن.
دستورها را خطبهخط بفرست، مثل: start - شروع و معرفی ربات
نتیجهٔ موردانتظار: از این به بعد هرکس رباتت را باز کند، کنار کادر تایپ یک دکمهٔ منو میبیند و با یک لمس، دستورها را انتخاب میکند — دقیقاً مثل رباتهای حرفهای.

n8n یا پایتون؟ کدام برای تو بهتر است؟
دو روز پیش ساخت ربات تلگرام با پایتون را آموزش دادیم و امروز نسخهٔ بدونکدش را. هیچکدام «بهتر مطلق» نیستند؛ این جدول کمک میکند انتخاب کنی:
| n8n (این آموزش) | پایتون |
|---|---|---|
کدنویسی | لازم نیست | لازم است |
سرعت ساخت نمونهٔ اولیه | خیلی سریع — وصل کردن چند بلوک | کندتر — نوشتن و دیباگ کد |
منطق پیچیده و خاص | محدود به نودهای آماده | نامحدود — هر کاری که کد بتواند |
اجرا | n8n باید روشن باشد | اسکریپت باید جایی اجرا شود |
بهترین برای | اتوماسیونهای روزمره و تست سریع ایده | رباتهای سنگین و کاملاً سفارشی |
جدول را اینطور بخوان: اگر تازهکاری یا فقط میخواهی «سریع یک کاری راه بیفتد»، n8n. اگر کارت به منطق خاصی رسید که هیچ نودی ندارد، همان فلو را با پایتون بازنویسی کن — مفاهیم (توکن، تریگر، Chat ID) در هر دو یکی است.
سه ایدهٔ واقعی برای ادامهٔ همین امروز
اسکلت را داری؛ حالا فقط کافی است بلوک اول یا دوم را عوض کنی:
یادآور روزانه: بهجای Telegram Trigger، نود Schedule Trigger بگذار (مثلاً هر روز ساعت ۸ صبح) و بعدش همان Send Message. حالا هر صبح یک پیام یادآوری میگیری — بدون اینکه گوشی را لمس کنی.
خوشآمدگوی گروه: در Telegram Trigger رویداد Chat Member را انتخاب کن (ربات باید ادمین گروه باشد) و بعدش یک پیام خوشآمد بفرست. هر عضو تازه، خودکار سلام میشنود.
خبرخوان شخصی: همان فلوی آموزش دیروز بود: خبرها را میگیرد و به تلگرامت میفرستد. حالا که Send Message را بلدی، میتوانی همان فلو را با دکمهٔ اینلاین «خواندم» مجهز کنی.
مرحله ۶: اجرای دائمی — از تست تا ربات همیشهروشن
تا اینجا با دکمهٔ Execute Workflow تست میکردی؛ یعنی n8n فقط همان لحظه گوش میداد. برای اینکه ربات همیشه جواب بدهد:
بالای صفحهٔ ورکفلو، سوییچ Active را روشن کن.
از این به بعد n8n خودش وبهوک را در تلگرام ثبت میکند و هر پیام تازه، خودکار فلو را اجرا میکند.
اما یک شرط مهم هست: تلگرام پیامها را فقط به یک آدرس HTTPS عمومی میفرستد. اگر n8n را با داکر روی لپتاپت بالا آوردهای (آدرس localhost)، تلگرام نمیتواند به آن دسترسی پیدا کند و تریگر در حالت دائمی کار نمیکند. راهحل طبق راهنمای رسمی n8n: یک تونل بساز (ابزارهایی مثل ngrok به همین کار میآیند) و متغیر WEBHOOK_URL را روی آدرس عمومیات تنظیم کن. اگر هم n8n را روی یک سرور (VPS) با دامنه و HTTPS داری، همینطوری کار میکند و کاری لازم نیست.
نتیجهٔ موردانتظار: سوییچ Active روشن، n8n در دسترس از اینترنت، و رباتت حتی وقتی مرورگر بسته است جواب میدهد — به شرطی که خود n8n (داکر یا سرور) روشن باشد.
عیبیابی: اگر جایی گیر کردی
مشکل | راهحل |
|---|---|
ربات جواب نمیدهد؛ تریگر چیزی نمیگیرد | اول Credential را چک کن — توکن اشتباه، رایجترین علت است. بعد ببین فلو Active است و n8n روشن است. |
خطای «An HTTPS URL must be provided for webhook» | همان مشکل آدرس است: n8n باید با آدرس عمومی HTTPS در دسترس باشد (WEBHOOK_URL) — مرحلهٔ ۶. |
روی دکمهٔ اینلاین میزنم ولی هیچ اتفاقی نمیافتد | رویداد Callback Query را به تریگر اضافه کردهای؟ دکمهها بدون آن، هیچوقت به فلو نمیرسند. |
ته پیامهای ربات یک جملهٔ انگلیسی دربارهٔ n8n میآید | در نود Send Message فیلد Append n8n Attribution را خاموش کن. |
بعد از ریاستارت کامپیوتر ربات از کار افتاد | کانتینر داکر n8n را دوباره بالا بیاور و چک کن فلو هنوز Active باشد. |
چند تنظیم پیشرفته که بد نیست بدانی
Parse Mode: حالت پیشفرض متن، HTML است. اگر خواستی در پیامها بولد و ایتالیک بگذاری، همینجا مدیریتش میکنی؛ گزینههای Markdown هم هست.
Restrict to Chat IDs: در تنظیمات تریگر میتوانی بگویی «فقط به پیامهای همین یک گفتوگو جواب بده». برای ربات شخصی که فقط خودت از آن استفاده میکنی، عالی است — نه غریبهای، نه اسپمی.
محدودیت سرعت: تلگرام از هر ربات بیشتر از ۳۰ پیام در ثانیه قبول نمیکند. برای ربات شخصی هیچوقت به این سقف نمیرسی؛ فقط اگر روزی خواستی به هزاران نفر پیام گروهی بفرستی یادت باشد.
Download Images/Files: در تریگر میتوانی روشنش کنی تا فایل و عکسی که کاربر میفرستد هم وارد فلو شود — مثلاً برای رباتی که عکس را جایی ذخیره میکند.
نکتهای برای خوانندهٔ فارسیزبان
تلگرام در ایران فیلتر است؛ پس هم برای چت با BotFather و هم برای تست ربات، به یک اتصال پایدار نیاز داری — این را از قبل در نظر بگیر تا وسط کار گیر نکنی. نکتهٔ مثبت: خود n8n و Bot API تلگرام برای گرفتن توکن، احراز هویت یا تحریمی ندارند و توکن را رایگان میگیری. فقط یک هشدار جدی: توکن را هیچوقت جایی عمومی منتشر نکن — نه در گیتهاب، نه در اسکرینشات، نه در گروه. هرکس توکن را داشته باشد، صاحب رباتت است.
جمعبندی
حالا دو بلوک ساده داری که با هم یک ربات واقعیاند: یکی گوش میدهد، یکی جواب میدهد. پیشنهاد من این است: همین امروز همان فلوی اکو را به یکی از سه ایدهٔ بالا تبدیل کن — یادآور روزانه سادهترین شروع است و فردا صبح، اولین پیام خودکارش را میگیری. و اگر جایی حس کردی منطقت از نودهای آماده بزرگتر شد، برگرد سر آموزش پایتون؛ مفاهیمش را حالا دیگر بلدی.
پرسشهای پرتکرار
آیا برای ساخت ربات با n8n باید برنامهنویسی بلد باشم؟
نه. همهٔ کار با کلیک و پر کردن فیلد انجام میشود؛ تنها چیزی که تایپ میکنی دو عبارت آماده مثل {{ $json.message.text }} است که در مرحلهٔ ۴ کپیاش میکنی.
n8n را باید همیشه روشن نگه دارم؟
بله. ربات فقط وقتی جواب میدهد که n8n در حال اجرا باشد — چه روی لپتاپت با داکر، چه روی سرور. اگر کامپیوتر را خاموش کنی، ربات هم میخوابد.
توکن رباتم لو رفت؛ چه کار کنم؟
به BotFather برو، دستور /revoke را بفرست، رباتت را انتخاب کن تا توکن قبلی باطل و یکی تازه صادر شود؛ بعد همان Credential را در n8n بهروز کن. همهٔ فلوها خودشان درست میشوند.
میشود ربات را در گروه هم استفاده کرد؟
بله؛ کافی است ربات را به گروه اضافه کنی. فقط برای بعضی رویدادها — مثل فهمیدن عضو تازه (Chat Member) — ربات باید ادمین گروه باشد.
چرا وقتی روی دکمهٔ اینلاین میزنم هیچ اتفاقی نمیافتد؟
چون کلیک روی دکمه یک رویداد جداگانه به اسم Callback Query تولید میکند، نه Message. باید یک تریگر با همین رویداد بگذاری تا کلیکها به فلو برسند.
آیا n8n رایگان است؟
نسخهای که با داکر روی کامپیوتر خودت نصب میکنی (self-hosted) رایگان و متنباز است و برای این آموزش همان کافی است. n8n نسخهٔ ابری پولی هم دارد که در این آموزش به آن نیازی نیست.
فرق Telegram Trigger با نود معمولی Telegram چیست؟
تریگر «شروعکننده» است: منتظر پیام میماند و فلو را استارت میزند. نود معمولی Telegram یک «قدم وسط فلو» است: کاری انجام میدهد، مثل فرستادن پیام. در ربات اکو هر دو را کنار هم دیدی.
منابع
n8n: اتصال تلگرام (Telegram credentials) — مستندات رسمی
n8n: نود Telegram Trigger — مستندات رسمی
n8n: نود Telegram و عملیات Send Message — مستندات رسمی
تلگرام: راهنمای رباتها (Bots FAQ) — مستندات رسمی
تلگرام: مرجع Bot API — مستندات رسمی




