ساخت ربات تلگرام با n8n

ساخت ربات تلگرام پیشرفته با n8n در سال 1404: دکمه‌های شیشه‌ای، مدیریت گروه و پاسخ خودکار

نسخه صوتی این مقاله (هوش مصنوعی کارورا)

اگر شما هم مثل ما در کارورا، از پیچیدگی‌های نگهداری اسکریپت‌های پایتون یا PHP برای ربات‌های تلگرامی که وظایف نسبتاً ساده‌ای دارند خسته شده‌اید، این راهنما برای شماست.

توسعه، تست و دیپلوی یک ربات تلگرام که چند دکمه شیشه‌ای دارد و به یک API خارجی متصل می‌شود، نباید چندین روز زمان و انرژی مهندسی را صرف کند. مشکل اصلی در کدنویسی سنتی، هزینه‌های پنهان است: مدیریت dependencyها (dependency hell)، راه‌اندازی و نگهداری سرور، و چرخه‌های طولانیِ تغییر-تست-استقرار.

اینجاست که n8n، به عنوان یک ابزار اتوماسیون ویژوال، این معادله را کاملاً تغییر می‌دهد. n8n به ما اجازه می‌دهد تا منطق ربات را به صورت گرافیکی و با اتصال نودها به یکدیگر طراحی کنیم.

در تجربه‌ی ما در پروژه‌های واقعی، فرآیند ساخت پروتوتایپ یک ربات پیچیده از چند روز به چند ساعت کاهش یافته است. دیگر نیازی به درگیر شدن با کتابخانه‌های مختلف، مدیریت محیط‌های مجازی یا نوشتن کدهای تکراری برای مدیریت Webhook نیست. تمرکز شما مستقیماً روی منطق کسب‌وکار ربات قرار می‌گیرد، نه زیرساخت آن.

چرا ساخت ربات تلگرام با کدنویسی سنتی دیگر به صرفه نیست؟

ساخت ربات تلگرام با n8n
طراحی ورک‌فلوهای پیچیده ربات تلگرام به صورت ویژوال در n8n.

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

  • سریع‌تر پروتوتایپ بسازید: ایده‌ی جدیدی دارید؟ می‌توانید در کمتر از یک ساعت ورک‌فلو آن را در n8n پیاده‌سازی و تست کنید.
  • هزینه‌های نگهداری را به شکل چشمگیری کاهش دهید: نگرانی بابت آپدیت پکیج‌ها و مشکلات امنیتی کتابخانه‌های زیرساختی کاهش می‌یابد، زیرا n8n این لایه را برای شما مدیریت می‌کند.
  • توسعه را بصری و قابل فهم کنید: ورک‌فلوهای گرافیکی به راحتی توسط دیگر اعضای تیم (حتی افراد غیرفنی) قابل درک هستند و مستندسازی را ساده‌تر می‌کنند.
  • یکپارچه‌سازی را آسان کنید: اتصال تلگرام به سرویس‌های دیگر مانند Google Sheets, Slack, دیتابیس‌های SQL یا هر API دیگری، تنها با اضافه کردن یک نود جدید انجام می‌شود.
  • در این راهنمای جامع، ما به صورت کاملاً عملی و فنی، نحوه ساخت یک ربات تلگرام پیشرفته با قابلیت‌های کلیدی مانند دکمه‌های شیشه‌ای، مدیریت گروه و اتصال به APIهای خارجی را با استفاده از n8n به شما نشان خواهیم داد.

    پیش‌نیازهای ضروری: از BotFather تا آماده‌سازی n8n

    اتصال n8n به تلگرام
    وارد کردن توکن API تلگرام در بخش Credentials برای اتصال امن.

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

    ۱. دریافت توکن API از BotFather

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

  • به BotFather (@BotFather) یک پیام ارسال کنید.
  • دستور /newbot را تایپ و ارسال کنید.
  • یک نام برای ربات خود انتخاب کنید (مثلاً Karvara Support).
  • یک یوزرنیم منحصر به فرد برای ربات انتخاب کنید که به bot ختم شود (مثلاً KarvaraSupportBot).
  • پس از انجام این مراحل، BotFather یک توکن منحصر به فرد شبیه به 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 به شما می‌دهد. این توکن کلید اصلی ربات شماست؛ آن را در مکانی امن نگهداری کنید.

    ۲. آماده‌سازی نمونه n8n

    این راهنما فرض می‌کند که شما یک نمونه (instance) از n8n را به صورت Self-hosted روی سرور خود یا از طریق سرویس ابری n8n Cloud در اختیار دارید.

    نکته کلیدی این است که نمونه n8n شما باید از طریق اینترنت قابل دسترس باشد تا سرورهای تلگرام بتوانند آپدیت‌ها را به Webhook شما ارسال کنند.

    قدم اول: اتصال n8n به تلگرام با Webhook در کمتر از ۵ دقیقه

    ورک‌فلو پاسخ خودکار تلگرام
    ساختار پایه ورک‌فلو برای پاسخ به دستور /start در تلگرام.

    اینجاست که قدرت واقعی n8n نمایان می‌شود. در روش سنتی، شما باید به صورت دستی آدرس سرور خود را در تلگرام ثبت می‌کردید. n8n این فرآیند را کاملاً خودکار کرده است.

    ۱. یک ورک‌فلو جدید در n8n بسازید.
    ۲. روی دکمه + کلیک کرده و نود Telegram Trigger را جستجو و انتخاب کنید.
    ۳. در تنظیمات نود، روی بخش Telegram API کلیک کرده و Create New را انتخاب کنید.
    ۴. در پنجره باز شده، توکن ربات خود را که از BotFather دریافت کرده‌اید، در فیلد Access Token وارد کنید و ذخیره نمایید.

    [اسکرین‌شات از پنجره تنظیمات Credentials تلگرام در n8n]

    ۵. در نود Telegram Trigger، اطمینان حاصل کنید که گزینه Updates روی message تنظیم شده باشد.
    ۶. ورک‌فلو را با کلیک روی دکمه سوئیچ در بالای صفحه، فعال (Active) کنید.

    به محض فعال کردن ورک‌فلو، n8n به صورت خودکار Webhook ربات شما را تنظیم می‌کند. تمام شد! دیگر نیازی به کدنویسی، مدیریت SSL یا نگرانی در مورد در دسترس بودن سرور نیست.

    ⚠️ نکته امنیتی: وب‌هوک شما به صورت عمومی در دسترس است. اگرچه توکن تلگرام به عنوان یک لایه امنیتی عمل می‌کند، اما برای سناریوهای حساس، توصیه می‌شود از گزینه‌های Authentication موجود در تنظیمات وب‌هوک n8n (مانند Header Auth) استفاده کنید تا مطمئن شوید فقط سرورهای تلگرام می‌توانند به آن درخواست ارسال کنند.

    ساخت اولین پاسخ خودکار: مدیریت دستور start

    دکمه‌های شیشه‌ای با n8n
    پیکربندی دکمه‌های شیشه‌ای (Inline Keyboard) با استفاده از JSON در n8n.

    بیایید یک ورک‌فلو “Hello World” بسازیم تا به دستور /start پاسخ دهیم. این کار به ما کمک می‌کند تا با ساختار داده‌ها و منطق شرطی در n8n آشنا شویم.

    ورک‌فلو مورد نیاز: Telegram Trigger -> IF Node -> Telegram Node

    ۱. Telegram Trigger: این نود را همانطور که در بخش قبل توضیح داده شد، پیکربندی کنید.

    ۲. IF Node: یک نود IF اضافه کنید تا بررسی کنیم آیا متن پیام ورودی برابر با /start است یا خیر.

  • در Value 1، از Expression زیر استفاده کنید: {{ $json.message.text }}
  • Operation را روی String -> Equal تنظیم کنید.
  • در Value 2، مقدار /start را وارد کنید.
  • [اسکرین‌شات از تنظیمات IF Node برای بررسی دستور /start]

    نکته تخصصی: برای درک بهتر داده‌ها، پس از تست، خروجی JSON نود Telegram Trigger را بررسی کنید. این ساختار شامل اطلاعات کلیدی مانند message.chat.id و message.from.first_name است که در مراحل بعد به آن‌ها نیاز خواهیم داشت.

    ۳. Telegram Node: حالا یک نود Telegram به خروجی true نود IF متصل کنید.

  • Resource را روی Message و Operation را روی Send Message تنظیم کنید.
  • در فیلد Chat ID، از Expression داینامیک زیر استفاده کنید: {{ $json.message.chat.id }}
  • در فیلد Text، پیام خوشامدگویی خود را بنویسید: سلام {{ $json.message.from.first_name }}! به ربات کارورا خوش آمدید.
  • ورک‌فلو را فعال کنید و در تلگرام به ربات خود دستور /start را ارسال کنید. باید بلافاصله پاسخ خودکار را دریافت نمایید.

    جادوی دکمه‌های شیشه‌ای (Inline Keyboard): راهنمای کامل

    اتصال ربات تلگرام به API
    فراخوانی یک API خارجی با نود HTTP Request برای دریافت اطلاعات لحظه‌ای.

    دکمه‌های شیشه‌ای (Inline Keyboards) یکی از قدرتمندترین ابزارهای تعاملی در ربات‌های تلگرام هستند که مستقیماً زیر پیام ربات نمایش داده می‌شوند.

    ساخت دکمه ساده از طریق UI

    ساده‌ترین راه، استفاده از رابط کاربری خود نود Telegram است.

    ۱. در نود Telegram، به بخش Options رفته و Add Option -> Reply Markup را انتخاب کنید.
    ۲. از منو، Inline Keyboard را انتخاب کرده و دکمه‌های خود را اضافه کنید.
    ۳. هر دکمه دو فیلد اصلی دارد:

  • Text: متنی که روی دکمه نمایش داده می‌شود (مثلاً “وبسایت ما”).
  • URL/Callback Data: مقداری که با کلیک ارسال می‌شود. برای لینک از URL و برای تعامل داخلی از Callback Data (مثلاً show_services) استفاده کنید.
  • کنترل کامل با JSON (روش پیشنهادی برای حرفه‌ای‌ها)

    برای ساختارهای پیچیده‌تر، کنترل مستقیم از طریق JSON بهترین گزینه است. در بخش Reply Markup گزینه JSON Parameters را فعال کرده و ساختار کیبورد را خودتان بنویسید.

    در فیلد Inline Keyboard، کد JSON زیر را وارد کنید:

    {
      "inline_keyboard": [
        [
          { "text": "مشاهده سرویس‌ها", "callback_data": "services_menu" },
          { "text": "تماس با پشتیبانی", "callback_data": "support_contact" }
        ],
        [
          { "text": "وبسایت کارورا", "url": "https://karvara.com" }
        ]
      ]
    }
    
  • inline_keyboard یک آرایه از سطرهاست.
  • هر سطر، یک آرایه از دکمه‌هاست.
  • مدیریت Callback Query (پاسخ به کلیک کاربر)

    وقتی کاربر روی دکمه‌ای با callback_data کلیک می‌کند، تلگرام یک آپدیت از نوع callback_query ارسال می‌کند.

    ۱. یک نود Telegram Trigger جدید اضافه کنید.
    ۲. در تنظیمات آن، Updates را فقط روی Callback Query تنظیم کنید.
    ۳. یک نود Switch بعد از این تریگر قرار دهید تا بر اساس callback_data تصمیم‌گیری کند.
    ۴. در Property Name نود Switch، از Expression زیر استفاده کنید: {{ $json.callback_query.data }}
    ۵. حالا برای هر مقدار (مانند services_menu) یک خروجی تعریف کرده و به آن یک نود Telegram برای ارسال پاسخ مناسب متصل کنید.

    [اسکرین‌شات از ورک‌فلو مدیریت Callback Query با Telegram Trigger و Switch Node]

    مدیریت هوشمند گروه: خوشامدگویی و حذف هرزنامه

    یکی از کاربردی‌ترین سناریوها، اتوماسیون مدیریت گروه‌هاست.

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

    ۱. پیکربندی Telegram Trigger:

  • یک Telegram Trigger بسازید و در Updates، گزینه‌های Message و New Chat Members را فعال کنید.
  • فراموش نکنید که ربات خود را به گروه اضافه کرده و به آن دسترسی Admin بدهید.
  • ۲. منطق انشعاب با IF Node (شناسایی کاربر جدید):

  • یک نود IF قرار دهید تا وجود فیلد new_chat_member را بررسی کند.
  • Value 1: {{ $json.message.new_chat_member }}
  • Operation: Is Not Empty
  • ۳. شاخه خوشامدگویی (خروجی true):

  • به خروجی true، یک نود Telegram متصل کنید و با Text: سلام {{ $json.message.new_chat_member.first_name }}، به گروه ما خوش آمدی! به کاربر جدید خوشامد بگویید.
  • ۴. شاخه حذف هرزنامه (خروجی false):

  • به خروجی false، یک نود IF دیگر برای شناسایی اسپم متصل کنید.
  • Value 1: {{ $json.message.text }}
  • Operation: String -> Contains
  • Value 2: کلمه کلیدی اسپم، مثلاً فروش ویژه
  • به خروجی true این نود، یک نود Telegram با Operation: Delete Message متصل کنید.
  • Chat ID: {{ $json.message.chat.id }}
  • Message ID: {{ $json.message.message_id }} (این فیلد برای حذف پیام ضروری است).
  • [اسکرین‌شات کامل از ورک‌فلو مدیریت گروه با دو شاخه خوشامدگویی و ضد اسپم]

    اتصال ربات به APIهای دیگر: نمونه عملی قیمت لحظه‌ای ارز

    اینجاست که n8n از یک ابزار ساده، به یک پلتفرم یکپارچه‌سازی قدرتمند تبدیل می‌شود.

    ورک‌فلو: Telegram Trigger -> IF Node -> HTTP Request Node -> Telegram Node

    ۱. Trigger و IF Node: مانند مثال /start، یک IF Node برای شناسایی دستور /btc بسازید.

    ۲. HTTP Request Node: این نود قلب این ورک‌فلو است.

  • Request Method: GET
  • URL: https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd
  • در Options، گزینه Response Format را روی JSON تنظیم کنید.
  • [اسکرین‌شات از تنظیمات نود HTTP Request برای فراخوانی API]

    ۳. نود HTTP Request را به تنهایی اجرا کنید (Execute Node) تا ساختار پاسخ JSON را ببینید.

    ۴. Telegram Node (ارسال پاسخ): یک نود Telegram برای ارسال پیام اضافه کنید.

  • Chat ID: {{ $json.message.chat.id }}
  • Text: برای استخراج قیمت از خروجی نود قبلی، از Expression زیر استفاده کنید:
  • قیمت لحظه‌ای بیت‌کوین: {{ $json.body.bitcoin.usd }} دلار

    این ورک‌فلو، قدرت واقعی n8n را به نمایش می‌گذارد: دریافت فرمان، فراخوانی سرویس خارجی، پردازش پاسخ و ارسال نتیجه به کاربر، همه بدون یک خط کد بک‌اند.

    ورک‌فلو آماده این آموزش را دانلود کنید

    چرا از صفر شروع کنید؟ این فایل JSON شامل تمام نودها و تنظیمات آموزش است. آن را در n8n خود ایمپورت کرده و فوراً شروع به کار کنید.

    دانلود فایل JSON ورک‌فلو →

    ربات شما آماده است: قدم‌های بعدی برای توسعه و کسب درآمد

    تا اینجا، شما یک ربات تلگرام کاملاً کاربردی ساخته‌اید. این یک پایه بسیار محکم برای توسعه‌های آینده است.

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

  • اتصال به دیتابیس: با استفاده از نودهای Postgres یا MySQL، ربات‌های State-aware بسازید که اطلاعات کاربران را ذخیره و بازیابی کنند.
  • ایجاد فلوهای شخصی‌سازی شده: با ذخیره سوابق کاربران، تجربه‌های کاملاً منحصر به فردی را برای آن‌ها خلق کنید.
  • مدل‌های کسب درآمد: ربات شما می‌تواند به یک محصول تبدیل شود. از مدل‌های اشتراکی برای قابلیت‌های ویژه تا فروش مستقیم خدمات از طریق ربات، امکانات بی‌شماری وجود دارد.
  • هدف این بود که نشان دهیم چگونه می‌توان فرآیندهای پیچیده را با ابزارهای نوین ساده‌سازی کرد.

    یک قدم فراتر بروید: از اتوماسیون تا استراتژی

    پیاده‌سازی این ورک‌فلوها قدرتمند است، اما ادغام آن‌ها در استراتژی کسب‌وکار شما یک بازی دیگر است. اگر مطمئن نیستید چگونه این فرآیندها را برای سودآوری بهینه کنید، بیایید صحبت کنیم.

    رزرو جلسه استراتژی رایگان →

    سوالات متداول

    آیا برای استفاده از n8n با تلگرام، نیاز به سرور یا دامنه دارم؟

    اگر از نسخه Self-hosted استفاده می‌کنید، بله، به یک سرور با IP عمومی یا دامنه نیاز دارید. اما اگر از n8n Cloud استفاده کنید، هیچ نیازی به مدیریت سرور ندارید.

    چگونه می‌توانم پیام‌ها را با فرمت Markdown یا HTML ارسال کنم؟

    در نود Telegram (برای ارسال پیام)، به بخش Options بروید و گزینه Parse Mode را اضافه کنید. سپس می‌توانید MarkdownV2 یا HTML را انتخاب کرده و از سینتکس مربوطه برای بولد کردن یا افزودن لینک استفاده کنید.

    آیا n8n می‌تواند فایل‌ها (عکس، ویدیو، سند) را مدیریت کند؟

    بله. برای ارسال، از Resource: Document, Photo و… در نود Telegram استفاده کنید. برای دریافت، Telegram Trigger آپدیت‌های حاوی فایل را دریافت می‌کند و شما می‌توانید از نود Telegram Get File برای دانلود آن استفاده کنید.

    امنیت توکن ربات من در n8n چگونه تامین می‌شود؟

    وقتی شما یک Credential در n8n ذخیره می‌کنید، توکن شما به صورت رمزنگاری شده در دیتابیس ذخیره می‌شود و در رابط کاربری نمایش داده نمی‌شود. این روش بسیار امن‌تر از Hard-code کردن توکن در اسکریپت‌ها است.

    اگر API خارجی (مثل قیمت ارز) از دسترس خارج شود چه اتفاقی می‌افتد؟

    در ورک‌فلو فعلی، نود HTTP Request با خطا مواجه شده و ورک‌فلو متوقف می‌شود. در سناریوهای واقعی و حساس، باید مدیریت خطا را پیاده‌سازی کنید. می‌توانید تنظیمات نود را طوری تغییر دهید که در صورت خطا ادامه دهد (Continue on Fail) و یا از یک Error Trigger برای اجرای یک مسیر جایگزین (مثلاً ارسال پیام خطا به کاربر یا ادمین) استفاده کنید.

    نوشته های مرتبط