| کانال ربات تلگرام |
1K subscribers
3 photos
9 links
⭕️ کانال توسعه‌دهندگان ربات تلگرام دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
الگوی Command برای هندلرهای ربات تلگرام — سازماندهی دستورات

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

مثال ساده در پایتون برای درک بهتر:
class Command:
def execute(self, update, context):
raise NotImplementedError

class StartCommand(Command):
def execute(self, update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text="سلام! خوش آمدید.")

class HelpCommand(Command):
def execute(self, update, context):
context.bot.send_message(chat_id=update.effective_chat.id, text="لیست دستورات: /start, /help")

router = {
'/start': StartCommand(),
'/help': HelpCommand(),
}

def handle_update(update, context):
text = update.message.text.split()[0]
cmd = router.get(text)
if cmd:
cmd.execute(update, context)


چند نکته عملی:
- Single Responsibility: هر کلاس فقط یک کار انجام می‌دهد (SRP از اصول SOLID).
- تست‌پذیری: می‌توان هر Command را جداگانه unit-test کرد بدون نیاز به بوت‌استرپ کل بات.
- گسترش‌پذیری: اضافه کردن دستور جدید فقط اضافه کردن یک کلاس و ثبت آن در router است.
- Middleware: اگر نیاز به لاگ یا اعتبارسنجی باشد، می‌توان لایه‌ای بین handle_update و اجرای Command قرار داد یا یک Decorator برای Commandها نوشت.

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

🔖 #TelegramBot #ربات #تلگرام #design_patterns #command_pattern #telegram_bot #python #clean_code

👤 Developix

💎 Channel: @DevelopixRobot
👍7👎1
python-telegram-bot — کتابخانهٔ محبوب و فعال برای ساخت ربات‌های Telegram با Python

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

ویژگی‌ها و مزایا:
- هندلینگ async/await و Application-based API
- پشتیبانی از inline keyboards و callback queries
- ابزارهای کاربردی برای وب‌هوک و polling
- مستندات کامل و اکوسیستم گسترده

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("سلام از بات شما!")

app = ApplicationBuilder().token("YOUR_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()


نکته: برای بات‌های مقیاس‌پذیر از وب‌هوک + reverse proxy استفاده کنید، و توکن را در متغیر محیطی نگه دارید 🔒

مراجع رسمی: Docs | GitHub

امتحانش کنید و بازخوردتان را به اشتراک بگذارید 🚀

🔖 #TelegramBot #ربات #تلگرام #python #telegram #bot #python_telegram_bot

👤 Developix

💎 Channel: @DevelopixRobot
1👍1
🔹 وقتی ربات شروع می‌کند رشد کردن، getUpdates (long polling) کم‌کم دردسرساز می‌شود: صف طولانی، delay و فشار روی سرور.
یک ارتقا ساده و حرفه‌ای اینجاست: استفاده از Webhook

ایدهٔ اصلی 🧠
به‌جای این‌که سرور هر چند ثانیه برود سراغ Telegram و آپدیت‌ها را بگیرد، خود Telegram هر آپدیت را مستقیم با یک HTTP POST به آدرس شما می‌فرستد. این یعنی:

• سرعت بیشتر در پاسخ‌گویی ⏱️
• مصرف کمتر CPU و network روی سرور 🌱
• مقیاس‌پذیری بهتر برای ربات‌های شلوغ 📈

نمونه پیاده‌سازی با python-telegram-bot (وب‌هوک ساده روی Flask)

from flask import Flask, request
from telegram import Update
from telegram.ext import Application, CommandHandler

TOKEN = "YOUR_BOT_TOKEN"
app = Flask(__name__)

app_telegram = Application.builder().token(TOKEN).build()

async def start(update: Update, context):
await update.message.reply_text("سلام! وب‌هوک فعاله ")

app_telegram.add_handler(CommandHandler("start", start))

@app.post("/webhook")
async def webhook():
data = request.get_json(force=True)
update = Update.de_json(data, app_telegram.bot)
await app_telegram.process_update(update)
return "ok"

if __name__ == "__main__":
import asyncio
from telegram import Bot

bot = Bot(TOKEN)
url = "https://example.com/webhook" # آدرس HTTPS معتبر
asyncio.run(bot.set_webhook(url=url))

app.run(port=8443)


چند نکتهٔ عملی ⚙️
• حتماً از HTTPS با گواهی معتبر استفاده شود (LetsEncrypt کافی است).
• یک endpoint تمیز مثل /webhook بساز تا فقط Telegram به آن POST بزند.
• لاگ خطاها و زمان پاسخ را حتماً مانیتور کن؛ timeout پیش‌فرض در Webhook محدود است و handlerهای سنگین را بهتر است آسنکرون یا در صف جدا (queue) پردازش کنی.

📚 مستند رسمی برای جزئیات بیشتر:
Telegram Bot API – setWebhook

این تغییر کوچک معمولاً بزرگ‌ترین جهش کیفیت در ربات‌هایی است که از مرحلهٔ اولیه عبور کرده‌اند و جدی‌تر استفاده می‌شوند 🚀

🔖 #TelegramBot #ربات #تلگرام #telegram_bot #webhook #python #performance #scaling

👤 Developix

💎 Channel: @DevelopixRobot
👍52
کتابخونه python-telegram-bot یکی از محبوب‌ترین ابزارها برای ساخت ربات تلگرام با Python هست؛ ساده، منعطف و پر از Featureهای آماده برای کارهای روزمره ربات‌نویسی 🧩

با این کتابخونه می‌شه خیلی سریع:
• پیام‌ها و Commandها رو هندل کرد
• InlineKeyboard ساخت
• روی Webhook یا Long Polling کار کرد
• با Context و Middlewareها منطق پیچیده‌تر پیاده کرد

نصب:
pip install python-telegram-bot --upgrade


نمونه ربات ساده (Echo) 👇
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters

TOKEN = "YOUR_BOT_TOKEN"

async def start(update: Update, context):
await update.message.reply_text("سلام، یه پیام بفرست 👋")

async def echo(update: Update, context):
await update.message.reply_text(update.message.text)

app = ApplicationBuilder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
app.run_polling()


برای ربات‌های واقعی (مانیتورینگ، پنل ادمین، Botهای فروشگاهی) هم به‌خوبی جواب می‌ده و روی نسخه‌های جدید Bot API همیشه آپدیت می‌مونه 🔧

Docs و سورس:
📚 Documentations
💻 GitHub

امتحانش کن، روی یه پروژه کوچک تست کن و کم‌کم منطق‌های پیچیده‌تر رو اضافه کن 🚀

🔖 #TelegramBot #ربات #تلگرام #python_telegram_bot #Telegram_Bot #Python #ربات_تلگرام #Webhook #Inline_Keyboard

👤 Developix

💎 Channel: @DevelopixRobot
برای ربات‌هایی که روی سرور یا هاست پایدار بالا هستند، استفاده از Webhook به‌جای long polling هم مصرف منابع را کم می‌کند هم تاخیر پیام‌ها را پایین می‌آورد 🚀

با Webhook، Telegram هر آپدیت را مستقیم به URL ربات می‌فرستد و دیگه لازم نیست سرور مدام getUpdates صدا بزند.

📌 نکته مهم: آدرس Webhook حتماً باید HTTPS باشد و روی پورتی که فایروال اجازه می‌دهد در دسترس باشد.

نمونه ساده با python-telegram-bot (ورژن v20+):

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

TOKEN = "YOUR_BOT_TOKEN"
WEBHOOK_URL = "https://example.com/bot/webhook" # URL عمومی

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("ربات با Webhook فعاله ")

app = ApplicationBuilder().token(TOKEN).build()

app.add_handler(CommandHandler("start", start))

app.run_webhook(
listen="0.0.0.0",
port=8443,
url_path="bot/webhook",
webhook_url=WEBHOOK_URL,
)


چند نکته عملی 🛠️

- برای ترافیک زیاد، Webhook بهتر از polling جواب می‌دهد و scale کردن پشت Nginx یا Load Balancer راحت‌تر می‌شود.
- روی endpoint مربوط به Webhook هیچ لاگ حساس (مثل توکن) چاپ نشود و timeout پاسخ‌دهی خیلی بالا نرود.
- روی سرور، health-check سبک برای اطمینان از زنده بودن ربات نگه‌داری شود.

برای جزئیات بیشتر و پارامترهای دقیق Webhook:
مستندات رسمی Telegram Bot API - setWebhook

امتحان Webhook روی یک ربات واقعی، خیلی خوب تفاوت سرعت و پایداری را نشان می‌دهد؛ مخصوصاً وقتی تعداد چت‌ها بالا می‌رود ⚙️

🔖 #TelegramBot #ربات #تلگرام #telegram_bot #webhook #python #performance #security

👤 Developix

💎 Channel: @DevelopixRobot
👍1