Forwarded from | کانال توسعهدهندگان پایتون |
این فریمورک تا حد زیادی قابل قبول نوشته شده. به راحتی امکان استفاده از تمام method هارو فراهم کرده و مزیت بزرگی این فریمورک اینه که شما مستقیما با MTProto API در ارتباط هستید و واسطهای وجود نداره. پایروگرام از tgcrypto برای رمزنگاری استفاده میکنه تا بتونه با MTProto در ارتباط باشه. این کتابخونه با زبان C نوشته شده و باعث بهبود سرعته.
یکی از معایب بزرگ این فریمورک بروز نبودن اونه. تلگرام در یک سال اخیر تغییرات زیادی داشته و این فریمورک خودش رو بروز نکرده. پس شما به ناچار مجبور به استفاده از یکی از fork های اون هستید. پیشنهاد من استفاده از این fork هستش.
از بابت مستندات این فریمورک مشکلی خاصی نداره و توضیحات تمیز و مرتب برای یادگیری نوشته شدند و درعین حال با جزئیات کامل هستند.
فریمورک بعدی که مستقیما با MTProto ارتباط برقرار میکنه telethon هستش. این package نسبتا بروز و منعطف نوشته شده. برای بهبود سرعت، این فریمورک از افزونه یا کتابخونه خاص خودش به اسم cryptg استفاده میکنه. از مزایای این فریمورک داشتن امکانات مازاد هستش؛ به عنوان مثال اگر pillow نصب شده باشه کار resize کردن تصاویر رو خودش انجام میده. یا از hachoir و aiohttp برای دانلود و مدیریت document ها استفاده میکنه.
شباهت زیاد pyrogram و telethon قابل چشم پوشی نیست؛ با تسلط به یکی از این دو، میتونید ظرف کمتر از یک ساعت با مورد دیگه بطور کلی آشنایی پیدا کنید. از نحوه log کردن ها، ساختار کلاس client و سایر کلاس ها، اسامی method ها بگیرید تا نحوه استفاده از proxy ها و dispather هر دو فریمورک. شباهت این دو غیرقابل انکاره.
با وجود پیچیدگی MTProto این فریمورک و pyrogram ساختاری مشابه telebot دارند (از بابت پیاده سازی کد) و شما تقریبا حتی متوجه پیچیدگی MTProto نخواهید شد.
این فریمورک برخلاف دو فریمورک قبلی مستقیما با MTProto درارتباط نیست و نویسندگان اون ترجیح دادند که کار رو با BotAPI جلو ببرند. از بابت ساختار فوقالعاده ساده و اصطلاحا کارراهبنداز هستش. عملکرد این فریمورک به شکل long polling صورت میگیره و داده به صورت http دریافت و ارسال میشه. درحالت کلی میشه گفت که اندکی از دو فریمورکی که نام بردیم سرعت کمتری رو دارا هستش اما این دال بر این نیست که امکانات کمی رو مهیا کرده باشه و اگر نگاهی به لیست مطرح ترین کتابخانه های مرتبط به ربات های تلگرامی بیاندازیم، قطعا telebot رو در بین اونها میبینیم.
نمیتونیم مستندات این فریمورک رو تمیز بنامیم، اما نمیشه گفت که کامل هم نیستند و تمامی توضیحات ارائه شدند. ولی برای یادگیری توصیه نمیکنم که با این مستندات جلو برید چون برای دادن جزئیات کامل طراحی شده، نه برای آموزش.
همونطور که telethon رو فریمورکی مشابه pyrogram خطاب کردیم، اینجا هم میتونیم aiogram رو چیزی مشابه telebot بنامیم. این فریمورک بطور خاص برای استفاده از مفهوم asynchronous طراحی شده. یکی از ویژگی های خوب این فریمورک اینه که به لطف tg-codegen هیچ وقت از بروزرسانی های BotAPI عقب نمیمونه. از aiohttp استفاده می کنه و از بابت سرعت و عملکرد تقریبا مشابه telebot هستش.
یکی دیگه از فریمورک هایی که بر اساس BotAPI کار میکنه با اسم PTB شناخته میشه. این فریمورک دارای یک wiki خوبه و برای یادگیری بسیار مناسبه. به عنوان یکی از قدیمی ترین فریمورک ها درحاضر در سرویس های زیادی استفاده میشه و با آخرین نسخه BotAPI کاملا هماهنگه. از بابت عملکرد کلی توضیح خاصی نداره چون مشابه دو مورد قبل از http requests استفاده میکنه و میشه گفت که تا حدودی شبیه telebot هستش. کامیونیتی بزرگی داره و همونطور که اشاره شد کاربران زیادی بهش علاقهمند هستند.
✅ حرف آخر
پیشنهاد شخصی من استفاده از pyrogram هست. این فریمورک در عین سادگی هنگام استفاده میتونه کاملا منعطف عمل کنه و پاسخگوی تمام نیاز های شما باشه. به نسبت رقبای خودش سرعت نسبتا بهتری داره و با وجود uvloop و tgcrypto این اختلاف افزایش سرعت بیشتر هم به چشم دیده میشه. به راحتی قابل استفادهست و امکانات بیشتری نسبت به سایر موارد مطرح شده داره و دسترسی کامل به MTProtoAPI به شما میده. همه این موارد در کنار هم اون رو تا حدودی نسبت به رقبای خودش ممتاز میکنه.
اگر تجربه ای دارید که فکر میکنید میتونه مفید باشه اون رو کامنت کنید و برای اطلاعات بیشتر به کانال ربات تلگرام مراجعه کنید.
🔖 #ربات, #تلگرام, #bot, #python, #pyrogram, #telethon
💎 Channel: @DevelopixPython
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
| کانال ربات تلگرام |
⭕️ کانال توسعهدهندگان ربات تلگرام دولوپیکس
💠 دولوپیکس | جامعه توسعهدهندگان ایرانی
💎 @Developix
🚀 Developix.ir
📌 پشتیبانی و تبلیغات:
@DevelopixSupport
💠 دولوپیکس | جامعه توسعهدهندگان ایرانی
💎 @Developix
🚀 Developix.ir
📌 پشتیبانی و تبلیغات:
@DevelopixSupport
👍5❤4👎1
الگوی Command برای هندلرهای ربات تلگرام — سازماندهی دستورات
الگوی Command یکی از سادهترین و کاربردیترین راهها برای جداسازی منطق هر دستور در ربات تلگرام است. به جای نوشتن یک تابع بزرگ که همه دستورات را هندل میکند، برای هر دستور یک کلاس یا شیء مجزا تعریف میکنیم که تنها مسئول اجرای آن دستور باشد. این کار خوانایی، تستپذیری و گسترشپذیری پروژه را بهطور چشمگیر بالا میبرد.
مثال ساده در پایتون برای درک بهتر:
چند نکته عملی:
- Single Responsibility: هر کلاس فقط یک کار انجام میدهد (SRP از اصول SOLID).
- تستپذیری: میتوان هر Command را جداگانه unit-test کرد بدون نیاز به بوتاسترپ کل بات.
- گسترشپذیری: اضافه کردن دستور جدید فقط اضافه کردن یک کلاس و ثبت آن در
- Middleware: اگر نیاز به لاگ یا اعتبارسنجی باشد، میتوان لایهای بین
الگوی Command مخصوصاً وقتی تعداد دستورات زیاد است یا هر دستور منطق پیچیدهای دارد، مزیت دارد. با این ساختار نگهداری و توسعه رباتهای تلگرام سادهتر و مرتبتر خواهد شد.
🔖 #TelegramBot #ربات #تلگرام #design_patterns #command_pattern #telegram_bot #python #clean_code
👤 Developix
💎 Channel: @DevelopixRobot
الگوی 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
- مستندات کامل و اکوسیستم گسترده
نکته: برای باتهای مقیاسپذیر از وبهوک + reverse proxy استفاده کنید، و توکن را در متغیر محیطی نگه دارید 🔒
مراجع رسمی: Docs | GitHub
امتحانش کنید و بازخوردتان را به اشتراک بگذارید 🚀
🔖 #TelegramBot #ربات #تلگرام #python #telegram #bot #python_telegram_bot
👤 Developix
💎 Channel: @DevelopixRobot
این کتابخانه رابطی ساده و مدرن روی 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)
چند نکتهٔ عملی ⚙️
• حتماً از HTTPS با گواهی معتبر استفاده شود (LetsEncrypt کافی است).
• یک endpoint تمیز مثل
• لاگ خطاها و زمان پاسخ را حتماً مانیتور کن؛ timeout پیشفرض در Webhook محدود است و handlerهای سنگین را بهتر است آسنکرون یا در صف جدا (queue) پردازش کنی.
📚 مستند رسمی برای جزئیات بیشتر:
Telegram Bot API – setWebhook
این تغییر کوچک معمولاً بزرگترین جهش کیفیت در رباتهایی است که از مرحلهٔ اولیه عبور کردهاند و جدیتر استفاده میشوند 🚀
🔖 #TelegramBot #ربات #تلگرام #telegram_bot #webhook #python #performance #scaling
👤 Developix
💎 Channel: @DevelopixRobot
یک ارتقا ساده و حرفهای اینجاست: استفاده از 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
👍5❤1
کتابخونه python-telegram-bot یکی از محبوبترین ابزارها برای ساخت ربات تلگرام با Python هست؛ ساده، منعطف و پر از Featureهای آماده برای کارهای روزمره رباتنویسی 🧩
با این کتابخونه میشه خیلی سریع:
• پیامها و Commandها رو هندل کرد
• InlineKeyboard ساخت
• روی Webhook یا Long Polling کار کرد
• با Context و Middlewareها منطق پیچیدهتر پیاده کرد
نصب:
نمونه ربات ساده (Echo) 👇
برای رباتهای واقعی (مانیتورینگ، پنل ادمین، Botهای فروشگاهی) هم بهخوبی جواب میده و روی نسخههای جدید Bot API همیشه آپدیت میمونه 🔧
Docs و سورس:
📚 Documentations
💻 GitHub
امتحانش کن، روی یه پروژه کوچک تست کن و کمکم منطقهای پیچیدهتر رو اضافه کن 🚀
🔖 #TelegramBot #ربات #تلگرام #python_telegram_bot #Telegram_Bot #Python #ربات_تلگرام #Webhook #Inline_Keyboard
👤 Developix
💎 Channel: @DevelopixRobot
با این کتابخونه میشه خیلی سریع:
• پیامها و 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