به سوالهای پرتکرار مشتریها بهصورت خودکار و با کیبورد دکمهای پاسخ میدهد؛ ساعت کاری، قیمت، آدرس و هر سوالی که هر روز تکرار میشود.
سوال یا راهنمایی لازم داری؟ از صفحهٔ تماس با ما بپرس.
این ربات برای کسبوکارهاست: بهجای اینکه خودتان مدام جواب سوالهای تکراری مشتریها را بدهید، ربات بهصورت خودکار جواب آماده میفرستد و یک کیبورد از سوالهای پرتکرار هم به کاربر نشان میدهد.
این مراحل را بهترتیب انجام بده تا ربات روی سیستم خودت یا سرور بالا بیاید. داخل فایل ZIP یک راهنمای README هم هست.
این همان کدی است که داخل فایل ZIP هم هست. فقط یادت باشد مقدار TOKEN را با توکن رباتت عوض کنی.
# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# ربات پاسخگوی خودکار سوالات پرتکرار (FAQ) تلگرام
# طراحی و کدنویسی: سروش مقدمی — فیلتور (filtori.com)
# ------------------------------------------------------------
# این ربات برای کسبوکارهاست: بهجای اینکه خودت مدام جواب
# سوالهای تکراری مشتریها رو بدی، ربات جواب آماده میفرسته.
# - یک کیبورد با دکمههای سوالهای پرتکرار نشون میده
# - روی هر کلمهٔ کلیدی که تنظیم کنی، جواب آماده میفرسته
#
# ⚠️ نکته: ربات تلگرام باید روی سروری اجرا بشه که به
# api.telegram.org دسترسی داره.
#
# آموزش کامل:
# https://filtori.com/telegram-bot-source/faq-bot/
# نسخهٔ اختصاصی برای کسبوکارت میخوای؟ 09122874862
# تلگرام ما: https://t.me/filtori
# ------------------------------------------------------------
import time
import requests
# توکن ربات از @BotFather
TOKEN = "توکن_ربات_خودت_را_اینجا_بگذار"
BASE = f"https://api.telegram.org/bot{TOKEN}"
# ------------------------------------------------------------
# اینجا سوالهای پرتکرار و جوابهاشون رو تنظیم کن.
# کلید = متن دکمه (و همون چیزی که کاربر میفرسته)
# مقدار = جوابی که ربات میده
# ------------------------------------------------------------
FAQ = {
"ساعت کاری": "ساعت کاری ما هر روز از ۹ صبح تا ۶ عصر است (بهجز جمعهها).",
"قیمتها": "برای دریافت لیست قیمت، لطفاً شمارهٔ تماس بگذارید تا کارشناس ما تماس بگیرد.",
"آدرس": "آدرس دقیق و مسیر روی گوگلمپ در سایت ما موجود است: filtori.com",
"پشتیبانی": "برای پشتیبانی میتوانید همینجا سوال خود را بنویسید یا با ما تماس بگیرید.",
}
# متن دکمههایی که پایین صفحه به کاربر نشون داده میشه
KEYBOARD = {
"keyboard": [
[{"text": "ساعت کاری"}, {"text": "قیمتها"}],
[{"text": "آدرس"}, {"text": "پشتیبانی"}],
],
"resize_keyboard": True,
}
def send_message(chat_id, text, reply_markup=None):
"""ارسال پیام؛ در صورت نیاز همراه با کیبورد."""
url = f"{BASE}/sendMessage"
data = {"chat_id": chat_id, "text": text}
if reply_markup is not None:
data["reply_markup"] = reply_markup
try:
requests.post(url, json=data, timeout=15)
except requests.RequestException as error:
print("خطا در ارسال پیام:", error)
def get_updates(offset):
"""دریافت پیامهای جدید با long polling."""
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 answer(chat_id, text):
"""منطق اصلی: تصمیم میگیره چه جوابی بده."""
if text == "/start":
send_message(
chat_id,
"سلام 👋 من ربات پاسخگوی خودکار هستم.\n"
"یکی از دکمههای پایین رو بزن یا سوالت رو بنویس.",
reply_markup=KEYBOARD,
)
return
if text in FAQ:
send_message(chat_id, FAQ[text], reply_markup=KEYBOARD)
return
for keyword, reply in FAQ.items():
if keyword in text:
send_message(chat_id, reply, reply_markup=KEYBOARD)
return
send_message(
chat_id,
"سوالت رو نفهمیدم 🤔 یکی از دکمههای پایین رو انتخاب کن،\n"
"یا برای گفتگو با کارشناس با ما تماس بگیر.",
reply_markup=KEYBOARD,
)
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", "")
if text:
answer(chat_id, text)
time.sleep(0.5)
if __name__ == "__main__":
main()
با چند تغییر کوچک، ربات را مخصوص کسبوکار خودت کن.
در دیکشنری FAQ کلید، متن دکمه و مقدار، جواب ربات است. هر سوال جدید را یک خط اضافه کن.
در KEYBOARD هر لیست داخلی یک ردیف دکمه است؛ متن دکمهها باید دقیقاً با کلیدهای FAQ یکی باشد.
برای سوالهایی که ربات جواب ندارد، ربات پشتیبانی و تیکت پیام را به اپراتور میرساند.
اگر ربات اجرا نشد، اول پیام خطای ترمینال را با این جدول مقایسه کن. اگر خطایت اینجا نبود، از صفحهٔ تماس با ما بپرس.
| پیام خطا | علت | راهحل |
|---|---|---|
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 بساز تا ربات بعد از خطا یا ریاستارت سرور خودش دوباره روشن شود.
[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
sudo nano /etc/systemd/system/mybot.service # متن بالا را اینجا بگذار
sudo systemctl daemon-reload
sudo systemctl enable --now mybot # روشنکردن + اجرای خودکار بعد از ریاستارت
journalctl -u mybot -f # دیدن لاگها
راهاندازی روی سرور برایت سخت است؟ نصب و راهاندازی را به ما بسپار.
درخواست راهاندازیاین سورس برای یادگیری و شروع کار عالی است. وقتی ربات قرار است هر روز با مشتری واقعی کار کند، معمولاً به دیتابیس، پنل مدیریت، امنیت بیشتر و پشتیبانی نیاز دارد. تیم فیلتور همین ربات پاسخگوی خودکار سوالات تلگرام را اختصاصی و متناسب با فرآیند کسبوکارت میسازد.
| امکان | سورس رایگان | نسخهٔ اختصاصی |
|---|---|---|
| ذخیرهسازی | فایل CSV/TXT | دیتابیس |
| پنل مدیریت | — | ✓ |
| پرداخت آنلاین | — | ✓ |
| اتصال به سایت / CRM | — | ✓ |
| نصب و پشتیبانی | خودت | تیم فیلتور |
در فایل bot.py بخشی به نام FAQ هست؛ کافی است کلید (سوال) و مقدار (جواب) را با اطلاعات خودتان جایگزین کنید.
خیر. اگر کاربر عین سوال یا حتی بخشی از کلمهٔ کلیدی را تایپ کند هم ربات جواب مناسب را میدهد.
این سورس با جوابهای آماده کار میکند. پاسخگویی با هوش مصنوعی بر اساس اطلاعات کسبوکار در نسخهٔ اختصاصی قابل پیادهسازی است.
از صفحهٔ تماس با ما در filtori.com/contact پیام بدهید یا با شمارهٔ ۰۹۱۲۲۸۷۴۸۶۲ تماس بگیرید؛ اگر نسخهٔ اختصاصی همین ربات را برای کسبوکارتان بخواهید هم همین مسیر را استفاده کنید.
اگر در راهاندازی گیر کردی، یا میخواهی همین ربات برای کسبوکارت نصب و شخصیسازی شود، از صفحهٔ تماس با ما پیام بده.