💎 Channel: @DevelopixRobot
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1👍1
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
Forwarded from | Erfan's Notes |
اگه توسعهدهنده Mini App های تلگرام هستید، احتمالا با مشکلات و موانع این کار هم آشنا هستید. ابزار جدیدی که نوشتم با عنوان TMA Studio با ارائه یک محیط Mock شبیهسازی شده فرایند توسعه مینیاپ رو سادهتر میکنه
اوپنسورس هم هست و میتونید از طریق لینک زیر در گیتهاب مشاهده کنید
⚙️ Github
🌐 Website
پ.ن: سعی میکنم در اولین فرصتی که تونستم، یک دوره توسعه مینی اپ تلگرام ضبط کنم
اوپنسورس هم هست و میتونید از طریق لینک زیر در گیتهاب مشاهده کنید
⚙️ Github
🌐 Website
پ.ن: سعی میکنم در اولین فرصتی که تونستم، یک دوره توسعه مینی اپ تلگرام ضبط کنم
🔥8❤5
Forwarded from | Erfan's Notes | via @DevelopixBot
⭕️ دوره آموزش برنامهنویسی مینی اپ تلگرام
💠 در این دوره به آموزش برنامهنویسی مینی اپ تلگرام میپردازیم، از مباحث پایه و عمومی شروع میکنیم و مفاهیم رو یاد میگیریم.
💠 در این دوره به آموزش برنامهنویسی مینی اپ تلگرام میپردازیم، از مباحث پایه و عمومی شروع میکنیم و مفاهیم رو یاد میگیریم.
Forwarded from Developix Support
🦾 زور بازوت رو نشون بده و جایزه ببر!
💰 یه مسابقه ۱۰۰ میلیون تومنی برای ساخت بازو (بات) و مینیاپ در اپلیکیشن بله
🎯 از استعدادت پول در بیار!
❓چطوری؟
بله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرمافزار، وب دولوپرها، صاحبان سایتها و اپلیکیشنها و تیمهای محصول فراهم کرده که پاسخگوی این دغدغههاست.
🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️
📎همین الان در مسابقه ثبتنام کن! ➡️
💬 کانال اخبار بازو دراپلیکیشن بله
کانال اطلاعرسانی بله | @BaleMessenger
💰 یه مسابقه ۱۰۰ میلیون تومنی برای ساخت بازو (بات) و مینیاپ در اپلیکیشن بله
🎯 از استعدادت پول در بیار!
❓چطوری؟
بله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرمافزار، وب دولوپرها، صاحبان سایتها و اپلیکیشنها و تیمهای محصول فراهم کرده که پاسخگوی این دغدغههاست.
🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️
📎همین الان در مسابقه ثبتنام کن! ➡️
💬 کانال اخبار بازو دراپلیکیشن بله
کانال اطلاعرسانی بله | @BaleMessenger
👎7
تیکه کد عضویت اجباری برای رباتهای تلگرام
برای همه حالت های ابدیت نوشته شده
برای حالت عادی میتونید به صورت :
استفاده کنید ، و در حالت اینلاین مود از شرط
اگه کاربر عضو شده باشد ، true برمیگردونه در غیر اینصورت پیام عضویت اجباری رو میفرسته و نیازی نیست شرط else رو بنویسید
🔖 #TelegramBot, #ربات, #تلگرام, #PHP, #BotAPI
👤 ❉্᭄͜͡𝓐𝓵𝓲𝓻𝓮𝔃𝓪❉্᭄͜͡
💎 Channel: @DevelopixRobot
// Join Channel
$bot_channel_ids = [-1002084850763];
function check_join($from_id, $first_name, $chat_id, $bot_channel_ids, $inlineQueryId = null) {
global $message_id;
$join_Status = ['member', 'creator', 'administrator'];
foreach ($bot_channel_ids as $bot_channel_id) {
$check_join = bot('getChatMember', [
'chat_id' => $bot_channel_id,
'user_id' => $from_id
])->result->status;
if (!in_array($check_join, $join_Status)) {
$invite_link = bot('createChatInviteLink', [
'chat_id' => $bot_channel_id
])->result->invite_link;
$join_buttons = [[
['text' => " عضویت در کانال ", 'url' => $invite_link]
]];
$join_button = json_encode([
'inline_keyboard' => $join_buttons
]);
if ($inlineQueryId != null) {
bot('answerInlineQuery', [
'inline_query_id' => $inlineQueryId,
'cache_time' => 0,
'results' => json_encode([[
'type' => 'article',
'id' => rand(1, 10000000),
'title' => " شما عضو کانال نیستید ",
'input_message_content' => [
'message_text' => "🫰 برای استفاده از ربات، ابتدا در کانال ما عضو شوید ",
'parse_mode' => 'Markdown'
],
'reply_markup' => json_decode($join_button),
'description' => " لطفاً ابتدا وارد کانال شوید ",
'thumbnail_url' => "https://bot.turk-service.ir/iauTools/telegram.png",
]]),
]);
} else {
bot('sendMessage', [
'chat_id' => $chat_id,
'reply_to_message_id' => $message_id,
'parse_mode' => 'Markdown',
'text' => "⚠️ کاربر گرامی [$first_name](tg://user?id=$from_id) \nUserID : $from_id\nبرای استفاده از ربات ابتدا عضو چنل ما شوید ",
'reply_markup' => $join_button,
]);
}
return false;
}
}
return true;
}
if (check_join($from_id, $first_name, $chat_id, $bot_channel_ids)) {}
if (check_join($from_id, $first_name, $chat_id, $bot_channel_ids, $inlineQueryId)) {}
برای همه حالت های ابدیت نوشته شده
برای حالت عادی میتونید به صورت :
if (check_join($from_id, $first_name, $chat_id, $bot_channel_ids)) {}استفاده کنید ، و در حالت اینلاین مود از شرط
if (check_join($from_id, $first_name, $chat_id, $bot_channel_ids, $inlineQueryId)){}اگه کاربر عضو شده باشد ، true برمیگردونه در غیر اینصورت پیام عضویت اجباری رو میفرسته و نیازی نیست شرط else رو بنویسید
🔖 #TelegramBot, #ربات, #تلگرام, #PHP, #BotAPI
👤 ❉্᭄͜͡𝓐𝓵𝓲𝓻𝓮𝔃𝓪❉্᭄͜͡
💎 Channel: @DevelopixRobot
👍6
🤖 دریافت دادهها (update) از تلگرام: Webhooks vs Long Polling
🗂 رباتهای تلگرامی به طور کلی به دو دسته تقسیم میشن:
◀️ رباتهایی که نیازی به دریافت آپدیت ندارند.
◀️ رباتهایی که نیازمند دریافت از تلگرام هستند.
📱 برای هر دو دسته میشه مثالهایی ارائه داد:
◀️ تصور کنید یک ربات طراحی شده که هر شب در ساعت مشخصی، پیام خاصی رو به کاربرانی ارسال میکنه. این ربات نیازی به دریافت آپدیت از تلگرام نداره، چون عملکرد اون مستقل از تعامل با کاربرانه.
◀️ اما حالا رباتی رو تصور کنید که منتظره. منتظر کاربری که به عنوان مثال دستور معروف /start رو براش ارسال کنه تا به اون خوشآمد بگه. این ربات نیازمند دریافت آپدیت هست، چون عملکرد اون مبتنی بر واکنش کاربران میشه.
💡 به این واکنشها یا دستورات کاربران، آپدیت (update) میگیم؛ یعنی همون "واکنش کاربر".
🤔 حالا یک سوال مهم مطرح میشه، رباتهای تلگرامی از چه راههایی میتونند به این آپدیتها دسترسی پیدا کنند؟
🗂 دو روش اصلی برای این کار وجود داره:
◀️ روش Long Polling
◀️ روش استفاده از Webhook
ℹ️ در این پست، قصد داریم بررسی کنیم که کدوم یک از این دو روش برای شما میتونه مناسبتر باشه. اما قبل از مقایسه، لازمه هر دو روش رو به خوبی درک کنیم.
📶 روش اول: Long Polling
ℹ️ در این روش، فرض میکنیم تلگرام تمامی آپدیتهای مربوط به ربات ما رو جایی نگه میداره تا ربات بتونه اونها رو دریافت کنه و ازش بگیره. حالا ربات ما به طور مداوم از تلگرام درخواست میکنه که "آیا آپدیت جدیدی برای من ثبت شده یا نه؟"
🎙 اگر آپدیت جدیدی وجود داشته باشه، تلگرام اون رو در اختیار ربات قرار میده و ربات اون رو پردازش میکنه. و باز برای آپدیت های بعدی درخواست میده.
🎙 و اگر آپدیتی وجود نداشته باشه، ربات دوباره همون درخواست رو ارسال میکند و این چرخه در هر صورت ادامه پیدا میکند.
💡 به عبارت دیگه، در روش Long Polling، ربات به صورت ۲۴ ساعته و مداوم به تلگرام درخواست میده تا آپدیتهای جدید رو دریافت کنه. این عمل میتونه از طریق Bot API و متد getUpdates انجام بشه یا مستقیماً از طریق تعامل با MTProto و متد getDifference صورت بگیره.
⬇️ روش دوم: استفاده از Webhook
ℹ️ در این روش، دیگه نیازی نیست که ربات به طور مداوم از تلگرام درخواست آپدیت کنه. تلگرام خودش آپدیتها رو برای ربات ارسال میکنه. برای این کار، ما نیازمند این هستیم یک وبسرور راهاندازی کنیم و webhook provider رو جوری تنظیم کنیم تا آپدیتها رو برای این وبسرور ارسال کنه. این تنظیم در BotAPI از طریق متد setWebhook انجام میشه.
💡 به بیان سادهتر، در روش استفاده از Webhook، تلگرام وظیفه ارسال آپدیتها رو به عهده میگیره و ربات فقط باید منتظر دریافت آپدیتها باشه.
🍔 مقایسه Long Polling و Webhook در BotAPI
ℹ️ سهولت استفاده
◀️ اگر دنبال سادهترین روش باشید، بدون شک Long Polling انتخاب مناسبیتری میتونه باشه. تنها کاری که باید انجام بشه، ارسال درخواست به تلگرام برای دریافت آپدیتها رو در قالب یک آرایهست. این روش حتی روی دستگاه شخصی خودتون هم قابل پیادهسازی و اجراست و نیازی به داشتن یک hosting عمومی https ندارید.
ℹ️ سرعت و عملکرد
◀️ اگر سرعت برای شما اهمیت داره، Webhook گزینه بهتری میتونه باشه و همونطور که توضیح داده شد، در این روش آپدیتها توسط تلگرام به ربات ارسال میشن. این ویژگی باعث میشه استفاده از Webhook برای رباتهای بزرگ، ربات های پرترافیک و ربات هایی که آپدیت های زیادی دریافت میکنند مناسبتر باشه.
💡 در نهایت، هر دو روش کاربردی هستند و بسته به پروژه شما میتونند به خوبی عمل کنند.
✍️ *ژنرال*
💎 Channel: @DevelopixRobot
💎 Channel: @DevelopixRobot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥3
💎 Channel: @DevelopixRobot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤4🔥1
LaraGram یک فریمورک توسعهپذیر، منعطف و مدرن به زبان PHP برای ساخت رباتهای تلگرامه که با الهام از ساختار لاراول طراحی شده.
اگر با لاراول آشنایی دارید، کار با LaraGram براتون راحت، لذتبخش و قابل پیشبینی خواهد بود — و حتی اگه آشنایی ندارید، ساختار منظمش خیلی زود براتون جا میافته.
LaraGram امکانات زیادی درون خودش داره که میتونید سختترین رباتها رو با چند خط کد پیادهسازی کنید، اگر قابلیتی رو هم نداشته باشه میتونید به عنوان پکیج جانبی بهش اضافه کنید یا حتی برای اون پکیج توسعه بدید.
به عنوان مثال، LaraGram مجهز به یک سیستم Update Listener پیشرفته هست که به شما امکاناتی مانند گروهبندی لیسنرها، نامدهی به هر لیسنر، اعمال محدودیت و Middleware بر روی لیسنر، پردازش متن و ورودیها، و... رو میده.
همچنین نسخه بازنویسی شده Eloquent ORM رو در خودش جا داده با پشتیبانی از ۵ دیتابیس مختلف، همراه با تعریف روابط، Migrations، Seeders و Factoryها.
سایر قابلیت های کلیدی اون:
🔐 سیستم کنترل مجوز با قابلیت تعریف Gate و Policy برای مدیریت دقیق سطح دسترسی کاربران به منابع مختلف.
💻 Commander System برای ساخت و اجرای راحت commandها، مدیریت سادهتر پروژه، و زمانبندی اجرای وظایف (Scheduled Tasks).
📨 Queue و Job System برای ساخت صف و اجرای کارها در پسزمینه با زمانبندی دلخواه.
🧰 رابط Redis با امکانات لازم برای توسعههای وابسته به کش، صف و پیامرسانی آنی.
🧠 سیستم کشینگ با پشتیبانی از ۷ درایور مختلف برای ذخیرهسازی دادههای موقتی، بههمراه پیادهسازی Step Manager بر همین بستر.
🔁 کالکشنها برای کار سادهتر و منعطفتر با دادههای Iterable، مشابه کالکشنهای Laravel.
⚙️ Concurrency داخلی با امکان پردازش همزمان چند درخواست در پسزمینه بدون پیچیدگی اضافه.
🔒 ابزارهای امنیتی با پشتیبانی از سیستمهای رمزنگاری (Crypt) و هشینگ (Hash).
📢 Event Dispatcher برای تعریف و مدیریت رویدادها و واکنش به آنها.
🎛 کیبورد بیلدر توسعهیافته با استفاده ساده و انعطاف پذیری بالا.
🧩 موتور قالبسازی پیشرفته الهامگرفته از Blade برای ساخت پیامها بهصورت پویا و قابل نگهداری.
🌍 سیستم چندزبانه (Translation) برای ساخت رباتهایی با پشتیبانی از زبانهای مختلف.
✅ سیستم اعتبارسنجی با قوانین متنوع و امکان تعریف Ruleهای سفارشی.
🤖 پشتیبانی از چند ربات همزمان و امکان تعریف چند کانکشن و مدیریت آنها بهصورت مستقل.
یک مثال ساده برای ایجاد یک کامند بن با user_id به مدت 7 روز، با کنترل دسترسی و شرط ریپلای نشدن کامند:
برخی از ویژگیها با افزونهها و پکیجهای جانبی به LaraGram اضافه میشوند، به عنوان مثال:
⚡️ LaraGram Surge
پکیجی برای اجرای سریعتر رباتها با پشتیبانی از Swoole و OpenSwoole
🔧 LaraGram Installer
برای نصب و راهاندازی سریع و ساده پروژههای LaraGram
🛢 LaraGram MongoDB
درایور پایگاهداده MongoDB برای Eloquent ORM
📚 مستندات رسمی LaraGram نیز از طریق لینک زیر در دسترس است:
🔗 laraxgram.github.io
💬 گروه پرسش و پاسخ:
🔹 @LaraGramChat
📌 پروژه در گیتهاب:
♦️ LaraGram
🔖 #TelegramBot, #ربات, #تلگرام
👤 AmirHossein
💎 Channel: @DevelopixRobot
اگر با لاراول آشنایی دارید، کار با LaraGram براتون راحت، لذتبخش و قابل پیشبینی خواهد بود — و حتی اگه آشنایی ندارید، ساختار منظمش خیلی زود براتون جا میافته.
LaraGram امکانات زیادی درون خودش داره که میتونید سختترین رباتها رو با چند خط کد پیادهسازی کنید، اگر قابلیتی رو هم نداشته باشه میتونید به عنوان پکیج جانبی بهش اضافه کنید یا حتی برای اون پکیج توسعه بدید.
به عنوان مثال، LaraGram مجهز به یک سیستم Update Listener پیشرفته هست که به شما امکاناتی مانند گروهبندی لیسنرها، نامدهی به هر لیسنر، اعمال محدودیت و Middleware بر روی لیسنر، پردازش متن و ورودیها، و... رو میده.
همچنین نسخه بازنویسی شده Eloquent ORM رو در خودش جا داده با پشتیبانی از ۵ دیتابیس مختلف، همراه با تعریف روابط، Migrations، Seeders و Factoryها.
سایر قابلیت های کلیدی اون:
🔐 سیستم کنترل مجوز با قابلیت تعریف Gate و Policy برای مدیریت دقیق سطح دسترسی کاربران به منابع مختلف.
💻 Commander System برای ساخت و اجرای راحت commandها، مدیریت سادهتر پروژه، و زمانبندی اجرای وظایف (Scheduled Tasks).
📨 Queue و Job System برای ساخت صف و اجرای کارها در پسزمینه با زمانبندی دلخواه.
🧰 رابط Redis با امکانات لازم برای توسعههای وابسته به کش، صف و پیامرسانی آنی.
🧠 سیستم کشینگ با پشتیبانی از ۷ درایور مختلف برای ذخیرهسازی دادههای موقتی، بههمراه پیادهسازی Step Manager بر همین بستر.
🔁 کالکشنها برای کار سادهتر و منعطفتر با دادههای Iterable، مشابه کالکشنهای Laravel.
⚙️ Concurrency داخلی با امکان پردازش همزمان چند درخواست در پسزمینه بدون پیچیدگی اضافه.
🔒 ابزارهای امنیتی با پشتیبانی از سیستمهای رمزنگاری (Crypt) و هشینگ (Hash).
📢 Event Dispatcher برای تعریف و مدیریت رویدادها و واکنش به آنها.
🎛 کیبورد بیلدر توسعهیافته با استفاده ساده و انعطاف پذیری بالا.
🧩 موتور قالبسازی پیشرفته الهامگرفته از Blade برای ساخت پیامها بهصورت پویا و قابل نگهداری.
🌍 سیستم چندزبانه (Translation) برای ساخت رباتهایی با پشتیبانی از زبانهای مختلف.
✅ سیستم اعتبارسنجی با قوانین متنوع و امکان تعریف Ruleهای سفارشی.
🤖 پشتیبانی از چند ربات همزمان و امکان تعریف چند کانکشن و مدیریت آنها بهصورت مستقل.
یک مثال ساده برای ایجاد یک کامند بن با user_id به مدت 7 روز، با کنترل دسترسی و شرط ریپلای نشدن کامند:
Bot::onCommand("ban {id}", function (Request $request, $id) {
$request->banChatMember(
chat_id: chat()->id,
user_id: $id,
until_date: now()->addDays(7)->timestamp
);
})->can('administrator')->hasNotReply();برخی از ویژگیها با افزونهها و پکیجهای جانبی به LaraGram اضافه میشوند، به عنوان مثال:
⚡️ LaraGram Surge
پکیجی برای اجرای سریعتر رباتها با پشتیبانی از Swoole و OpenSwoole
🔧 LaraGram Installer
برای نصب و راهاندازی سریع و ساده پروژههای LaraGram
🛢 LaraGram MongoDB
درایور پایگاهداده MongoDB برای Eloquent ORM
📚 مستندات رسمی LaraGram نیز از طریق لینک زیر در دسترس است:
🔗 laraxgram.github.io
💬 گروه پرسش و پاسخ:
🔹 @LaraGramChat
📌 پروژه در گیتهاب:
♦️ LaraGram
🔖 #TelegramBot, #ربات, #تلگرام
👤 AmirHossein
💎 Channel: @DevelopixRobot
🔥14❤2
الگوی 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