مستندات n8n
74+ نود
✈️

تلگرام

Telegram

اتوماسیون تلگرام: ارسال پیام، ربات هوشمند، مدیریت کانال و گروه

ارتباطات
مقدماتی
۰ بازدید
n8n 1.0+

نمای کلی

نود تلگرام یکی از مهم‌ترین و پرکاربردترین نودهای n8n است، به خصوص برای کسب‌وکارهای ایرانی.

قابلیت‌های کلیدی:

  • ارسال پیام متنی با فرمت HTML/Markdown
  • ارسال عکس، ویدیو، صدا و فایل
  • ارسال لوکیشن و Contact
  • Inline Keyboard و Reply Keyboard
  • ویرایش و حذف پیام‌ها
  • پین کردن پیام در گروه/کانال
  • مدیریت اعضای گروه (Kick, Ban, Restrict)
  • دریافت اطلاعات چت و کاربر
  • ارسال Poll و Quiz
  • Forward و کپی پیام

Telegram Trigger:

  • دریافت پیام‌های جدید
  • پاسخ به Callback Query (دکمه‌ها)
  • دریافت رویدادهای گروه
  • فیلتر بر اساس نوع پیام

کاربردها در ایران:

  • اعلان فروش و سفارش جدید
  • ربات پشتیبانی مشتری 24/7
  • مدیریت خودکار کانال فروشگاه
  • هشدار امنیتی و مانیتورینگ سرور
  • ربات استعلام قیمت و موجودی
  • سیستم نظرسنجی و بازخورد
  • ربات رزرو و نوبت‌دهی
  • اعلان‌های مالی و تراکنش
  • گزارش فروش روزانه به مدیران
  • ربات آموزشی و Quiz

احراز هویت

احراز هویت تلگرام

ساخت ربات با BotFather

#### مراحل ایجاد ربات:

  1. 1در تلگرام به [@BotFather](https://t.me/BotFather) پیام دهید
  2. 2دستور /newbot را ارسال کنید
  3. 3نام ربات را وارد کنید (مثل: "فروشگاه من")
  4. 4Username ربات (باید به bot ختم شود): my_shop_bot
  5. 5توکن دریافتی را کپی کنید:
code
123456789:ABCdefGHIjklMNOpqrsTUVwxyz

#### تنظیم در n8n:

  1. 1Credentials > Telegram API
  2. 2Access Token را وارد کنید
  3. 3Test Connection بزنید

تنظیمات ربات در BotFather:

code
/setdescription    → توضیح ربات
/setabouttext      → درباره ربات
/setuserpic        → عکس پروفایل ربات
/setcommands       → لیست دستورات:
  start - شروع
  help - راهنما
  order - سفارش جدید
  status - وضعیت سفارش
  support - پشتیبانی

/setjoingroups     → اجازه عضویت در گروه
/setprivacy        → حالت حریم خصوصی (Disable برای خواندن همه پیام‌ها)
/setinline         → فعال کردن Inline Mode

دریافت Chat ID:

#### روش 1: از getUpdates

  1. 1به ربات پیام دهید
  2. 2در n8n: Telegram > getUpdates
  3. 3Chat ID در پاسخ:
json
{"chat": {"id": 123456789}}

#### روش 2: از @userinfobot

  1. 1پیام /start به @userinfobot بفرستید
  2. 2ID خود را ببینید

#### روش 3: برای کانال

  • ID کانال عمومی: @channel_username
  • ID کانال خصوصی: از getUpdates (با -100 شروع می‌شود)

#### روش 4: برای گروه

  1. 1ربات را به گروه اضافه کنید
  2. 2یک پیام در گروه بفرستید
  3. 3getUpdates → Chat ID گروه (منفی)

نکات امنیتی:

  • توکن ربات را به اشتراک نگذارید
  • از Environment Variable برای ذخیره توکن استفاده کنید
  • دسترسی ربات را محدود کنید
  • در کانال‌ها فقط دسترسی Admin بدهید

عملیات‌های موجود

1

sendMessage

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

2

sendPhoto

ارسال تصویر به چت

3

sendVideo

ارسال فایل ویدیویی

4

sendDocument

ارسال هر نوع فایلی (PDF, ZIP, ...)

5

sendAudio

ارسال فایل صوتی (MP3, ...)

6

sendLocation

ارسال موقعیت مکانی

7

editMessage

ویرایش پیام ارسال شده قبلی

8

deleteMessage

حذف پیام از چت

9

pinMessage

پین کردن پیام در گروه/کانال

10

answerCallbackQuery

پاسخ به کلیک دکمه Inline Keyboard

11

sendPoll

ارسال Poll یا Quiz

12

getUpdates

دریافت پیام‌ها و رویدادهای جدید

کاربردهای متداول

1. اعلان فروش فروشگاه آنلاین

هر بار که سفارش جدید ثبت شد:

code
Webhook (سفارش جدید)
  → Set (فرمت فارسی)
  → Telegram (sendMessage)
    ChatId: @my_shop_channel
    ParseMode: HTML
    Text:
      <b>سفارش جدید</b>

      مشتری: {{$json.name}}
      موبایل: {{$json.phone}}
      مبلغ: {{$json.amount}} تومان

      محصولات:
      {{$json.items.map(i => '• ' + i.name + ' × ' + i.qty).join('\n')}}

      تاریخ: {{$now.toFormat('yyyy/MM/dd HH:mm')}}

2. ربات پشتیبانی با Inline Keyboard

پاسخ خودکار با دکمه:

code
Telegram Trigger (پیام /start)
  → Telegram (sendMessage)
    Text: "سلام! از کجا شروع کنیم؟"
    ReplyMarkup:
      InlineKeyboard: [
        [{text: "پیگیری سفارش", callback_data: "order_status"}],
        [{text: "لیست محصولات", callback_data: "products"}],
        [{text: "ارتباط با پشتیبانی", callback_data: "support"}]
      ]

Telegram Trigger (Callback: order_status)
  → Telegram (answerCallbackQuery)
  → Telegram (sendMessage)
    Text: "لطفاً کد سفارش خود را ارسال کنید:"

Telegram Trigger (پیام عددی)
  → MySQL (جستجوی سفارش)
  → IF (پیدا شد)
    → Telegram (sendMessage)
      Text: "وضعیت سفارش: {{$json.status}}"
    → Else: "سفارش یافت نشد"

3. مدیریت خودکار کانال فروشگاه

انتشار محصول جدید:

code
MySQL (محصولات جدید)
  → Loop
    → Telegram (sendPhoto)
      ChatId: @my_store
      Photo: {{$json.imageUrl}}
      Caption:
        <b>{{$json.name}}</b>

        {{$json.description}}

        قیمت: <s>{{$json.oldPrice}}</s> <b>{{$json.price}} تومان</b>
        تخفیف: {{$json.discount}}%

        <a href="{{$json.link}}">خرید آنلاین</a>
      ReplyMarkup:
        InlineKeyboard: [
          [{text: "خرید", url: "{{$json.link}}"}],
          [{text: "اشتراک‌گذاری", switch_inline_query: "{{$json.name}}"}]
        ]
    → Wait (2 seconds)  // رعایت Rate Limit

4. هشدار مانیتورینگ سرور

اعلان Down شدن سرور:

code
Schedule (هر 5 دقیقه)
  → HTTP Request (بررسی سایت)
  → IF (status != 200)
    → Telegram (sendMessage)
      ChatId: ADMIN_CHAT_ID
      Text:
        <b>هشدار سرور</b>

        سرور {{$json.name}} از دسترس خارج شد!
        زمان: {{$now.toFormat('HH:mm:ss')}}
        Status: {{$json.statusCode}}
        URL: {{$json.url}}

5. گزارش فروش روزانه

ارسال آمار هر شب:

code
Schedule (هر شب ساعت 23)
  → MySQL (آمار روز)
  → Telegram (sendMessage)
    ChatId: @managers_group
    ParseMode: HTML
    Text:
      <b>گزارش فروش {{$now.toFormat('yyyy/MM/dd')}}</b>

      تعداد سفارش: {{$json.totalOrders}}
      مبلغ کل: {{$json.totalSales}} تومان
      میانگین سفارش: {{$json.avgOrder}} تومان
      بیشترین فروش: {{$json.topProduct}}

      نسبت به دیروز: {{$json.growth > 0 ? '+' : ''}}{{$json.growth}}%

6. ربات استعلام قیمت

بررسی قیمت لحظه‌ای:

code
Telegram Trigger (پیام با /price)
  → HTTP Request (API قیمت ارز)
  → Telegram (sendMessage)
    Text:
      <b>قیمت لحظه‌ای ارز</b>

      دلار: {{$json.usd}} تومان
      یورو: {{$json.eur}} تومان
      پوند: {{$json.gbp}} تومان

      آخرین بروزرسانی: {{$json.updatedAt}}

7. سیستم نظرسنجی

ارسال نظرسنجی به کاربران:

code
Schedule/Webhook → Telegram (sendPoll)
  ChatId: @my_channel
  Question: "از خدمات ما راضی هستید؟"
  Options: ["عالی", "خوب", "متوسط", "ضعیف"]
  IsAnonymous: false

8. ارسال فایل و فاکتور

ارسال PDF فاکتور به مشتری:

code
Webhook (پرداخت موفق)
  → HTTP Request (دریافت PDF فاکتور)
  → Telegram (sendDocument)
    ChatId: {{$json.telegramId}}
    Document: Binary PDF
    Caption: "فاکتور خرید شماره {{$json.invoiceId}}"

9. ربات رزرو و نوبت‌دهی

رزرو وقت آنلاین:

code
Telegram Trigger (/reserve)
  → MySQL (زمان‌های خالی)
  → Telegram (sendMessage)
    Text: "زمان مورد نظر را انتخاب کنید:"
    ReplyMarkup:
      InlineKeyboard: [
        [{text: "شنبه 10:00", callback_data: "slot_1"}],
        [{text: "شنبه 14:00", callback_data: "slot_2"}],
        [{text: "یکشنبه 10:00", callback_data: "slot_3"}]
      ]

Telegram Trigger (Callback: slot_*)
  → MySQL (ثبت رزرو)
  → Telegram (editMessage)
    Text: "رزرو شما با موفقیت ثبت شد!"

10. Forward محتوا بین کانال‌ها

بازنشر خودکار:

code
Telegram Trigger (پست جدید در کانال اصلی)
  → Telegram (copyMessage)
    FromChatId: @source_channel
    ToChatId: @destination_channel
    MessageId: {{$json.message_id}}

نکات حرفه‌ای

نکات حرفه‌ای

  1. 1فرمت‌دهی HTML (توصیه بر Markdown):
html
<b>متن Bold</b>
   <i>متن Italic</i>
   <u>زیرخط</u>
   <s>خط خورده</s>
   <code>کد تک خطی</code>
   <pre>بلوک کد</pre>
   <a href="https://example.com">لینک</a>
   <tg-spoiler>اسپویلر</tg-spoiler>
  1. 1Inline Keyboard ساختار:
json
{
     "inline_keyboard": [
       [
         {"text": "تایید", "callback_data": "confirm"},
         {"text": "لغو", "callback_data": "cancel"}
       ],
       [
         {"text": "سایت ما", "url": "https://example.com"}
       ],
       [
         {"text": "اشتراک در کانال", "url": "https://t.me/channel"}
       ]
     ]
   }
  1. 1Reply Keyboard:
json
{
     "keyboard": [
       [{"text": "پیگیری سفارش"}, {"text": "محصولات"}],
       [{"text": "پشتیبانی"}, {"text": "درباره ما"}]
     ],
     "resize_keyboard": true,
     "one_time_keyboard": false
   }
  1. 1حذف Reply Keyboard:
json
{"remove_keyboard": true}
  1. 1Emoji مفید برای پیام‌ها:
code
سفارش جدید:  اعلان
   موفقیت: تایید
   خطا: هشدار
   پرداخت: مالی
   کاربر: کاربر
   زمان: ساعت
   سرور: سرور
  1. 1ارسال به چند چت همزمان:
code
MySQL (لیست Chat IDها) → Loop → Telegram → Wait (50ms)
  1. 1Escape کاراکترهای خاص در MarkdownV2:
code
_ * [ ] ( ) ~ ` > # + - = | { } . !
   // همه باید با \ escape شوند
   // توصیه: از HTML استفاده کنید
  1. 1دریافت Chat ID گروه/کانال:
code
1. ربات را به گروه/کانال Admin کنید
   2. یک پیام بفرستید
   3. getUpdates فراخوانی کنید
   4. chat.id را ببینید (منفی برای گروه)
  1. 1Privacy Mode: اگر ربات در گروه همه پیام‌ها را نبیند:
  • به BotFather بروید: /setprivacyDisable
  1. 1Silent Message: ارسال بدون صدا:
code
disableNotification: true

برای هشدارهای شبانه یا پیام‌های غیرفوری.

  1. 1Forward vs Copy:
  • Forward: نام فرستنده اصلی نشان داده می‌شود
  • Copy: بدون نام فرستنده (مثل پیام جدید)
  1. 1Web App: دکمه با Mini App تلگرام:
json
{"text": "باز کردن فروشگاه", "web_app": {"url": "https://shop.com"}}
  1. 1محدودیت‌های مهم تلگرام:
code
پیام متنی: 4096 کاراکتر
    کپشن: 1024 کاراکتر
    Callback Data: 64 بایت
    فایل: 50 مگابایت
    عکس: 10 مگابایت
    Inline Keyboard: 100 دکمه
    Poll: 10 گزینه
  1. 1Webhook vs Polling:
  • n8n از Polling استفاده می‌کند (ساده‌تر)
  • برای Real-time: از Telegram Trigger استفاده کنید
  1. 1Parse Mode برای فارسی:
  • HTML قابل اطمینان‌تر از Markdown است
  • حتماً parseMode: HTML تنظیم کنید
  • تگ‌ها باید صحیح بسته شوند

رفع مشکلات

خطاهای رایج و راه‌حل‌ها

1. خطای "Unauthorized" (401)

علت: توکن ربات اشتباه یا غیرفعال شده

راه‌حل

  • توکن را از @BotFather مجدداً بگیرید: /token
  • مطمئن شوید توکن کامل کپی شده (شامل عدد و رشته بعد از :)
  • ربات حذف نشده باشد
  • Credential در n8n را بروز کنید

2. خطای "Chat not found" (400)

علت: Chat ID اشتباه یا ربات دسترسی ندارد

راه‌حل

  • برای کانال عمومی: از @username استفاده کنید
  • برای کانال خصوصی: ID عددی با -100 شروع می‌شود
  • ربات باید Admin کانال/گروه باشد
  • ابتدا یک پیام به ربات بفرستید تا چت ایجاد شود
  • از getUpdates برای یافتن Chat ID استفاده کنید

3. خطای "Bot was blocked by the user"

علت: کاربر ربات را Block کرده

راه‌حل

  • این خطا طبیعی است و باید Handle شود
  • از Error Handling استفاده کنید:
code
Telegram → Error → Set (mark as blocked) → MySQL (update user)
  • کاربر Block کرده را از لیست ارسال حذف کنید

4. خطای "Too Many Requests" (429)

علت: محدودیت Rate Limit تلگرام

راه‌حل

  • محدودیت‌ها:
  • 30 پیام/ثانیه به چت‌های مختلف
  • 20 پیام/دقیقه به یک گروه
  • 1 پیام/ثانیه به یک چت خصوصی
  • از Wait Node استفاده کنید:
code
Loop → Telegram → Wait (100ms) → Next
  • پیام‌ها را Batch کنید
  • از retry_after در خطا استفاده کنید

5. خطای "Message is too long"

علت: متن بیش از حد مجاز

راه‌حل

  • sendMessage: حداکثر 4096 کاراکتر
  • Caption: حداکثر 1024 کاراکتر
  • متن را تکه‌تکه ارسال کنید:
code
Code (تقسیم متن به 4000 کاراکتر) → Loop → Telegram

6. عکس/فایل ارسال نمی‌شود

علت: فرمت یا حجم نادرست

راه‌حل

  • عکس: حداکثر 10MB (JPEG, PNG, GIF)
  • فایل: حداکثر 50MB
  • ویدیو: حداکثر 50MB
  • مطمئن شوید URL عمومی و قابل دسترس است
  • از Binary Data در n8n استفاده کنید

7. Inline Keyboard کار نمی‌کند

علت: فرمت JSON اشتباه

راه‌حل

  • ساختار صحیح:
json
{
    "inline_keyboard": [
      [{"text": "دکمه 1", "callback_data": "btn1"}],
      [{"text": "سایت", "url": "https://example.com"}]
    ]
  }
  • callback_data حداکثر 64 بایت
  • هر ردیف یک آرایه جداگانه
اشتراک‌گذاری:

آیا این مستندات مفید بود؟

100٪ این مستندات را مفید دانسته‌اند