رفتن به محتوای اصلی
📣 سطح: متوسط · رایگان

سورس ربات اطلاع‌رسانی و ارسال همگانی تلگرام

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

سوال یا راهنمایی لازم داری؟ از صفحهٔ تماس با ما بپرس.

طراحی و کدنویسی: زبان: Python 3وابستگی: requestsزمان راه‌اندازی: ۱۵ دقیقهمجوز: رایگان (CC0)به‌روزرسانی: ۲ مهر ۱۴۰۵

این ربات چه کاری انجام می‌دهد؟

هر کاربری که ربات را /start کند به لیست مشترک‌ها اضافه می‌شود و فقط مدیر ربات می‌تواند با دستور «send/ متن پیام» یک اطلاعیه، خبر یا تخفیف را یک‌جا برای همهٔ مشترک‌ها بفرستد. لیست مشترک‌ها در فایل ذخیره می‌شود.

⚠️ نکتهٔ مهم: ربات تلگرام باید روی سروری اجرا شود که به api.telegram.org دسترسی دارد؛ روی خیلی از هاست‌های داخل ایران این آدرس مستقیم باز نیست. اگر ربات اجرا نشد، معمولاً مشکل از دسترسی سرور است نه از کد. اگر گیر کردی، از طریق صفحهٔ تماس با ما کمک بگیر.

آموزش راه‌اندازی قدم‌به‌قدم

این مراحل را به‌ترتیب انجام بده تا ربات روی سیستم خودت یا سرور بالا بیاید. داخل فایل ZIP یک راهنمای README هم هست.

از BotFather در تلگرام توکن ربات را بگیر.
پایتون را نصب کن و pip install requests را اجرا کن.
فایل bot.py را باز کن و مقدار TOKEN را جایگزین کن.
ربات را یک‌بار اجرا کن و /start بزن؛ chat_id تو در ترمینال چاپ می‌شود. آن را در ADMIN_CHAT_ID بگذار.
برای ارسال همگانی، دستور «send/ متن پیام» را بفرست تا پیام برای همهٔ مشترک‌ها برود.

کل سورس ربات (کپی یا دانلود کن)

این همان کدی است که داخل فایل ZIP هم هست. فقط یادت باشد مقدار TOKEN را با توکن رباتت عوض کنی.

bot.py
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
#  ربات اطلاع‌رسانی و ارسال همگانی تلگرام
#  طراحی و کدنویسی: سروش مقدمی — فیلتور (filtori.com)
# ------------------------------------------------------------
#  با این ربات می‌تونی به همهٔ کسایی که ربات رو استارت کردن
#  یک‌جا پیام (اطلاعیه، تخفیف، خبر) بفرستی:
#   - هر کاربری /start بزنه، به لیست مشترک‌ها اضافه می‌شه
#   - فقط «ادمین» می‌تونه با دستور  /send متن_پیام  به همه پیام بده
#  لیست مشترک‌ها در فایل subscribers.txt ذخیره می‌شه.
#
#  ⚠️ نکته: ربات تلگرام باید روی سروری اجرا بشه که به
#     api.telegram.org دسترسی داره.
#
#  آموزش کامل:
#     https://filtori.com/telegram-bot-source/broadcast-bot/
#  نسخهٔ اختصاصی با پنل مدیریت و زمان‌بندی؟  09122874862
#  تلگرام ما: https://t.me/filtori
# ------------------------------------------------------------

import time
import requests

TOKEN = "توکن_ربات_خودت_را_اینجا_بگذار"
BASE = f"https://api.telegram.org/bot{TOKEN}"

# ------------------------------------------------------------
#  chat_id عددی خودت رو اینجا بذار تا فقط تو بتونی پیام همگانی بفرستی.
#  چطور chat_id خودت رو پیدا کنی؟ ربات رو /start کن و یک پیام بفرست؛
#  در ترمینال، chat_id چاپ می‌شه (خط print پایین).
# ------------------------------------------------------------
ADMIN_CHAT_ID = 123456789  # <-- این عدد رو با chat_id خودت عوض کن

SUBSCRIBERS_FILE = "subscribers.txt"

# تلگرام اجازه می‌ده تا حدود ۳۰ پیام در ثانیه به کاربران مختلف بفرستی؛
# برای اینکه خطای 429 نگیریم، بین هر ارسال کمی مکث می‌ذاریم.
SEND_DELAY = 0.05


def send_message(chat_id, text):
    url = f"{BASE}/sendMessage"
    try:
        requests.post(url, json={"chat_id": chat_id, "text": text}, timeout=15)
    except requests.RequestException as error:
        print("خطا در ارسال پیام:", error)


def get_updates(offset):
    url = f"{BASE}/getUpdates"
    params = {"offset": offset, "timeout": 30}
    try:
        return requests.get(url, params=params, timeout=40).json()
    except requests.RequestException as error:
        print("خطا در دریافت پیام‌ها:", error)
        return {"ok": False, "result": []}


def load_subscribers():
    """خواندن لیست chat_id مشترک‌ها از فایل."""
    try:
        with open(SUBSCRIBERS_FILE, "r", encoding="utf-8") as file:
            return set(line.strip() for line in file if line.strip())
    except FileNotFoundError:
        return set()


def add_subscriber(chat_id):
    """اضافه‌کردن یک مشترک جدید (اگر قبلاً نبوده)."""
    subscribers = load_subscribers()
    if str(chat_id) not in subscribers:
        with open(SUBSCRIBERS_FILE, "a", encoding="utf-8") as file:
            file.write(f"{chat_id}\n")


def broadcast(text):
    """ارسال یک پیام به همهٔ مشترک‌ها."""
    subscribers = load_subscribers()
    sent = 0
    for chat_id in subscribers:
        send_message(chat_id, text)
        sent += 1
        time.sleep(SEND_DELAY)  # رعایت محدودیت نرخ ارسال تلگرام
    return sent


def handle(chat_id, text):
    if text == "/start":
        add_subscriber(chat_id)
        send_message(
            chat_id,
            "سلام 👋 عضو کانال اطلاع‌رسانی ما شدی!\n"
            "از این به بعد خبرها و تخفیف‌ها رو همین‌جا برات می‌فرستیم.\n"
            "— فیلتور (filtori.com)",
        )
        return

    if text.startswith("/send"):
        if chat_id != ADMIN_CHAT_ID:
            send_message(chat_id, "فقط مدیر ربات می‌تواند پیام همگانی بفرستد.")
            return
        payload = text[len("/send"):].strip()
        if not payload:
            send_message(chat_id, "متن پیام را بعد از دستور بنویس:\n/send سلام به همه!")
            return
        count = broadcast(payload)
        send_message(chat_id, f"پیام برای {count} مشترک ارسال شد ✅")
        return


def main():
    print("ربات اطلاع‌رسانی فیلتور روشن شد... (Ctrl+C برای خاموش‌کردن)")
    offset = 0
    while True:
        updates = get_updates(offset)
        if not updates.get("ok"):
            time.sleep(2)
            continue

        for update in updates.get("result", []):
            offset = update["update_id"] + 1
            message = update.get("message")
            if not message:
                continue
            chat_id = message["chat"]["id"]
            text = message.get("text", "")
            print("پیام از chat_id:", chat_id, "->", text)
            if text:
                handle(chat_id, text)

        time.sleep(0.5)


if __name__ == "__main__":
    main()
کل سورس این ربات ↑

⬇ دانلود فایل ZIP این ربات

شخصی‌سازی سریع

با چند تغییر کوچک، ربات را مخصوص کسب‌وکار خودت کن.

متن عضویت

پیام خوش‌آمد بعد از /start را در تابع handle با متن برند خودت عوض کن.

سرعت ارسال

مقدار SEND_DELAY را کمتر از 0.04 نکن تا تلگرام خطای 429 (ارسال بیش از حد) ندهد.

عضویت در کانال

اگر می‌خواهی قبل از دریافت محتوا کاربر عضو کانالت شود، ربات عضویت اجباری را ببین.

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

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

پیام خطاعلتراه‌حل
401 Unauthorizedتوکن اشتباه است یا فاصلهٔ اضافه دارد.توکن را دوباره از BotFather کپی کن و بین دو علامت نقل‌قول بگذار.
409 Conflictیک نسخهٔ دیگر از ربات در حال اجراست یا روی ربات وب‌هوک تنظیم شده.نسخهٔ دیگر را خاموش کن. اگر قبلاً وب‌هوک گذاشته‌ای، آدرس api.telegram.org/bot<TOKEN>/deleteWebhook را یک بار باز کن.
Timeout یا ConnectionErrorسرور به api.telegram.org دسترسی ندارد.ربات را روی سروری اجرا کن که به تلگرام دسترسی دارد؛ روی بیشتر هاست‌های داخل ایران این آدرس باز نیست.
ModuleNotFoundError: requestsکتابخانهٔ requests نصب نشده.دستور pip install -r requirements.txt یا pip install requests را اجرا کن.
429 Too Many Requestsدر زمان کوتاه پیام زیادی ارسال شده.بین ارسال‌ها مکث بگذار؛ تلگرام حدود ۳۰ پیام در ثانیه اجازه می‌دهد.
ربات در گروه جواب نمی‌دهدPrivacy Mode ربات روشن است.در BotFather دستور /setprivacy را بزن و آن را Disable کن، یا ربات را ادمین گروه کن.

اجرای ۲۴ ساعته روی سرور لینوکس

با python bot.py ربات تا وقتی ترمینال باز است کار می‌کند. برای اجرای دائمی روی سرور لینوکس (Ubuntu/Debian)، فایل‌ها را در پوشهٔ /opt/mybot بگذار و یک سرویس systemd بساز تا ربات بعد از خطا یا ری‌استارت سرور خودش دوباره روشن شود.

/etc/systemd/system/mybot.service
[Unit]
Description=Filtori Telegram Bot
After=network-online.target

[Service]
WorkingDirectory=/opt/mybot
ExecStart=/usr/bin/python3 /opt/mybot/bot.py
Environment=PYTHONUNBUFFERED=1
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
فایل سرویس
terminal
sudo nano /etc/systemd/system/mybot.service   # متن بالا را اینجا بگذار
sudo systemctl daemon-reload
sudo systemctl enable --now mybot             # روشن‌کردن + اجرای خودکار بعد از ری‌استارت
journalctl -u mybot -f                        # دیدن لاگ‌ها
دستورها

راه‌اندازی روی سرور برایت سخت است؟ نصب و راه‌اندازی را به ما بسپار.

درخواست راه‌اندازی

از سورس رایگان تا ربات حرفه‌ای کسب‌وکار

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

امکانسورس رایگاننسخهٔ اختصاصی
ذخیره‌سازیفایل CSV/TXTدیتابیس
پنل مدیریت—✓
پرداخت آنلاین—✓
اتصال به سایت / CRM—✓
نصب و پشتیبانیخودتتیم فیلتور

سوال‌های پرتکرار دربارهٔ این ربات

چرا فقط من باید بتوانم پیام همگانی بفرستم؟

برای امنیت، ربات فقط به chat_id مدیر (ADMIN_CHAT_ID) اجازهٔ ارسال همگانی می‌دهد تا کاربران عادی نتوانند به همه پیام بدهند.

محدودیت تعداد پیام دارد؟

تلگرام تا حدود ۳۰ پیام در ثانیه اجازه می‌دهد؛ در کد بین هر ارسال کمی مکث گذاشته شده تا خطای ۴۲۹ نگیرید.

می‌خواهم پیام‌ها زمان‌بندی‌شده ارسال شوند؛ ممکن است؟

بله، نسخهٔ حرفه‌ای با زمان‌بندی و پنل مدیریت را فیلتور برایتان می‌سازد.

سوال یا مشکلی داشتم از کجا راهنمایی بگیرم؟

از صفحهٔ تماس با ما در filtori.com/contact پیام بدهید یا با شمارهٔ ۰۹۱۲۲۸۷۴۸۶۲ تماس بگیرید؛ اگر نسخهٔ اختصاصی همین ربات را برای کسب‌وکارتان بخواهید هم همین مسیر را استفاده کنید.

طراح و برنامه‌نویس این سورس‌ها · بنیان‌گذار فیلتور

مدیر بخش دیتابیس همراه اول و فعال در توسعهٔ نرم‌افزار از سال ۱۳۹۱؛ با سابقهٔ کار روی سامانه‌های بانکی و پرتراکنش. این سورس‌ها را طوری نوشته که ساده، خوانا و قابل توسعه باشند و مستقیم در کسب‌وکار واقعی استفاده شوند.

سوالی داری یا راهنمایی می‌خواهی؟

اگر در راه‌اندازی گیر کردی، یا می‌خواهی همین ربات برای کسب‌وکارت نصب و شخصی‌سازی شود، از صفحهٔ تماس با ما پیام بده.

سورس‌های دیگر ربات تلگرام