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

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

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
🤔 ارتباط گیری با تلگرام و نوشتن ربات های تلگرامی

اساسا دو نوع کاربر میتونند داخل تلگرام وجود داشته باشند. botها و userها. تلگرام برای هر کدوم از این موارد محدودیت هایی درنظر گرفته؛ به عنوان مثال userها قادر به ارسال پیامی که شامل reply_markup باشند نیستند یا botها امکان دیدن محتوای پیام bot های دیگر رو ندارند.

در این پست به طور ساده و بدون اینکه وارد جزئیات بشیم مراحل ارتباط گیری با سرور های تلگرامی رو توضیح خواهیم داد.

به طور کلی شما هر درخواستی که به هر سرویس مرتبطی به تلگرام بزنید، نهایتا MTProto اون رو دریافت میکنه.
شما دو راه برای انجام این کار دارید. اولین راه استفاده مستقیم از MTProto هستش (کاری که تمام client های رسمی تلگرام اعم از telegram desktop/ios/android انجام میدهند). و راه دوم استفاده از interface هاست که بیشتر مورد توجه برنامه‌نویس ها قرار گرفته.

عملکرد interface ها به چه صورته؟
درواقع به عنوان یک واسطه بین ما و MTProto قرار میگیرن و نقش مفسر رو بازی میکنند. به این شکل که درخواست ورودی ما رو پردازش میکنند، اون رو به MTProto میفرستند و جواب (update) ئی که MTProto میده رو مجددا به زبان خودشون تفسیر کرده و برمیگردونند.

بزرگترین مثال برای این توضیح، BotAPI هستش. تمام چیزی که برای استفاده از اون لازم دارید یک token هست که باید از botfather گرفته بشه و بعد با تعیین endpoint و ارسال یک http request ساده قادر هستید که با MTProtoAPI در تعامل باشید. هنگام استفاده از BotAPI شما هیچ پیچیدگی خاصی مشاهده نمی‌کنید چون ورودی های شما به شکل json داده و به همون شکل برگشت داده میشن.

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

✍️ *ژنرال*

💎 Channel: @DevelopixRobot
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41👍1
✈️ ربات های تلگرامی
در زبان پایتون framework های مطرحی وجود دارند که به منظور طراحی ربات های تلگرامی نوشته شدند. در این پست به معرفی این فریم‌ورک ها می‌پردازیم.


🔢 Pyrogram

این فریم‌ورک تا حد زیادی قابل قبول نوشته شده. به راحتی امکان استفاده از تمام method هارو فراهم کرده و مزیت بزرگی این فریم‌ورک اینه که شما مستقیما با MTProto API در ارتباط هستید و واسطه‌ای وجود نداره. پایروگرام از tgcrypto برای رمزنگاری استفاده میکنه تا بتونه با MTProto در ارتباط باشه. این کتابخونه با زبان C نوشته شده و باعث بهبود سرعته.
یکی از معایب بزرگ این فریم‌ورک بروز نبودن اونه. تلگرام در یک سال اخیر تغییرات زیادی داشته و این فریم‌ورک خودش رو بروز نکرده. پس شما به ناچار مجبور به استفاده از یکی از fork های اون هستید. پیشنهاد من استفاده از این fork هستش.

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


🔢 Telethon

فریم‌ورک بعدی که مستقیما با MTProto ارتباط برقرار میکنه telethon هستش. این package نسبتا بروز و منعطف نوشته شده. برای بهبود سرعت، این فریم‌ورک از افزونه یا کتابخونه خاص خودش به اسم cryptg استفاده می‌کنه. از مزایای این فریم‌ورک داشتن امکانات مازاد هستش؛ به عنوان مثال اگر pillow نصب شده باشه کار resize کردن تصاویر رو خودش انجام میده. یا از hachoir و aiohttp برای دانلود و مدیریت document ها استفاده میکنه.
شباهت زیاد pyrogram و telethon قابل چشم پوشی نیست؛ با تسلط به یکی از این دو، می‌تونید ظرف کمتر از یک ساعت با مورد دیگه بطور کلی آشنایی پیدا کنید. از نحوه log کردن ها، ساختار کلاس client و سایر کلاس ها، اسامی method ها بگیرید تا نحوه استفاده از proxy ها و dispather هر دو فریم‌ورک. شباهت این دو غیرقابل انکاره.

با وجود پیچیدگی MTProto این فریم‌ورک و pyrogram ساختاری مشابه telebot دارند (از بابت پیاده سازی کد) و شما تقریبا حتی متوجه پیچیدگی MTProto نخواهید شد.


🔢 pyTelegramBotAPI (telebot)

این فریم‌ورک برخلاف دو فریم‌ورک قبلی مستقیما با MTProto درارتباط نیست و نویسندگان اون ترجیح دادند که کار رو با BotAPI جلو ببرند. از بابت ساختار فوق‌العاده ساده و اصطلاحا کارراه‌بنداز هستش. عملکرد این فریم‌ورک به شکل long polling صورت میگیره و داده به صورت http دریافت و ارسال میشه. درحالت کلی میشه گفت که اندکی از دو فریم‌ورکی که نام بردیم سرعت کمتری رو دارا هستش اما این دال بر این نیست که امکانات کمی رو مهیا کرده باشه و اگر نگاهی به لیست مطرح ترین کتابخانه های مرتبط به ربات های تلگرامی بیاندازیم، قطعا telebot رو در بین اونها میبینیم.

نمیتونیم مستندات این فریم‌ورک رو تمیز بنامیم، اما نمیشه گفت که کامل هم نیستند و تمامی توضیحات ارائه شدند. ولی برای یادگیری توصیه نمیکنم که با این مستندات جلو برید چون برای دادن جزئیات کامل طراحی شده، نه برای آموزش.


🔢 Aiogram

همونطور که telethon رو فریم‌ورکی مشابه pyrogram خطاب کردیم، اینجا هم میتونیم aiogram رو چیزی مشابه telebot بنامیم. این فریم‌ورک بطور خاص برای استفاده از مفهوم asynchronous طراحی شده. یکی از ویژگی های خوب این فریم‌ورک اینه که به لطف tg-codegen هیچ وقت از بروزرسانی های BotAPI عقب نمیمونه. از aiohttp استفاده می کنه و از بابت سرعت و عملکرد تقریبا مشابه telebot هستش.


🔢 python-telegram-bot (PTB)

یکی دیگه از فریم‌ورک هایی که بر اساس 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
👍54👎1
Forwarded from | Erfan's Notes |
اگه توسعه‌دهنده Mini App های تلگرام هستید، احتمالا با مشکلات و موانع این کار هم آشنا هستید. ابزار جدیدی که نوشتم با عنوان TMA Studio با ارائه یک محیط Mock شبیه‌سازی شده فرایند توسعه مینی‌اپ رو ساده‌تر می‌کنه

اوپن‌سورس هم هست و می‌تونید از طریق لینک زیر در گیت‌هاب مشاهده کنید

⚙️ Github
🌐 Website

پ.ن: سعی می‌کنم در اولین فرصتی که تونستم، یک دوره توسعه مینی اپ تلگرام ضبط کنم
🔥85
Forwarded from | Erfan's Notes | via @DevelopixBot
⭕️ دوره آموزش برنامه‌نویسی مینی اپ تلگرام

💠 در این دوره به آموزش برنامه‌نویسی مینی اپ تلگرام می‌پردازیم، از مباحث پایه و عمومی شروع می‌کنیم و مفاهیم رو یاد می‌گیریم.
Forwarded from Developix Support
🦾 زور بازوت رو نشون بده و جایزه ببر!
💰 یه مسابقه ۱۰۰ میلیون تومنی برای ساخت بازو (بات) و مینی‌اپ در اپلیکیشن بله

🎯 از استعدادت پول در بیار!
چطوری؟
بله با مسابقهٔ «زور بازوت رو نشون بده!» یک فرصت عالی برای مهندسین نرم‌افزار، وب دولوپر‌ها، صاحبان سایت‌ها و اپلیکیشن‌ها و تیم‌های محصول فراهم کرده که پاسخگوی این دغدغه‌هاست.

🎁 یه مسابقه با ۱۰۰ میلیون تومن جایزهٔ نقدی و ۱ میلیارد تومن اعتبار تبلیغات منتظرته! ♨️

📎همین الان در مسابقه
ثبت‌نام کن! ➡️

💬
کانال اخبار بازو دراپلیکیشن بله
کانال اطلاع‌رسانی بله | @BaleMessenger
👎7
تیکه کد عضویت اجباری برای رباتهای تلگرام

// 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥3
🤖 طراحی ربات به سبک تمیز و مرتب

ℹ️ به عنوان یک کاربر تلگرامی، احتمالا با ربات‌های زیادی تعامل داشتید و تجربه مناسبی در این زمینه دارید. در این پست، نکاتی رو بررسی می‌کنیم که به شما کمک میکنه رباتی بسازید که هم از نظر فنی قوی باشه و هم از نظر ظاهری و تجربه کاربری تمیز و حرفه‌ای به نظر برسه.


💬 پشتیبانی ربات

◀️ اگر تنها هدف شما از پشتیبانی ارائه یک username (مثل @DevelopixSupport) هست، بهتره اون رو در قسمت bio ربات قرار بدید. نیازی نیست این قابلیت رو داخل خود ربات پیاده‌سازی کنید چون فقط یک چیز اضافه رو پیاده‌سازی کردید.

◀️ اگر تجربه پاسخگویی به سوالات استفاده کنندگان یک ربات رو داشته باشید، میدونید که غالبا در مورد تبلیغات و اتفاقاتی که ربات رقم میزنه و برای کاربران مجهوله پیام داده میشه. این دو مورد رو میشه با ایجاد یک قسمت برای "پاسخوگویی به سوالات متداول" مدیریت کرد.

⬅️ اینطور هم کاربران زودتر به جواب سوالات خودشون میرسند و هم پشتیبانی ملزم به پاسخگویی به سوالات تکراری نیست. این میتونه حتی خارج از ربات شما و داخل یک کانال مستقل مثل @DevelopixFAQ مدیریت بشه.


🔵 ارائه دستورالعمل در مورد ربات

◀️ از دستور استاندارد /help استفاده کنید! تلگرام به‌طور خودکار دکمه‌ای با مضمون "Bot Help" در پروفایل ربات شما قرار میده که کاربران می‌توانند با یک کلیک از اون استفاده کنند و کلاینت تلگرامی اونها دستور /help رو برای ربات شما ارسال میکنه.

⬅️ استفاده از دستورات مشابه /help مثل /info یا /guide با وجود این ویژگی که تلگرام در اختیار کاربران و توسعه دهندگان قرار داده با این اوصاف غیرضروری بنظر میرسه.

◀️همچنین قسمت راهنمای ربات الزاما نباید یک طومار بلند باشه! توضیح مختصری درمورد عملکرد ربات و هدف اون کفایت میکنه. هر بخش از ربات باید خودش به‌خوبی عملکردش رو توضیح بده و نباید در مورد تک تک اجزای ربات توضیحات نوشته بشه چون کسی اونها رو نمیخونه! هر قسمت از ربات باید خودش توضیح دهنده کاری باشه که قراره انجام بده، نه اینکه تمام توضیحات یک‌جا ارائه شده باشه.


تنظیمات ربات

◀️ اگر ربات شما تنظیماتی مثل تغییر زبان، مدیریت اعلان‌ها یا هر نوع تنظیمات عمومی دیگه ای داره، از دستور استاندارد /settings استفاده کنید. تلگرام به‌طور خودکار دکمه‌ای با عنوان "Bot Settings" در پروفایل ربات شما قرار میده که کاربران میتونند از اون استفاده کنند.


💬 پیام‌ها و تعاملات ربات با کاربر

◀️ پیام‌های ربات باید کوتاه و واضح باشند. اما اگر کوتاهی پیام باعث این میشه که مفهوم به درستی منتقل نشه، میشه از این مورد صرف‌نظر کرد چون همیشه باید اولویت با این باشه که کاربر مفهوم رو به درستی دریافت کرده.

◀️ کاربر فقط در چند دفعه اول متن پیام ها رو میخونند و اگر "استفاده کننده" ربات شما باشند میدونند که چه متنی در هر قسمت نوشته شده پس فقط دنبال متغیر های اون متن میگردند (درصورت وجود) و عمده درصد توجه اونها به inline button های اون پیامه، نه متن اون.

⬅️ یکی از بزرگترین مشکلاتی که این موضوع بوجود میاره اینه که تغییر متون ربات مقداری سخت میشه. از دید برنامه‌نویس تغییر متن یعنی ویرایش یک string ساده، اما از دید کاربر معمولا این یعنی هیچی؛ چون اگر شخص کاربر واقعی ربات شما باشه فرضش اینه که میدونه توی هر قسمت چی نوشته شده و معمولا حتی متن رو نمیخونه و از دکمه های اون پیام استفاده میکنه.

⬅️ پس اگر لازمه تکه متنی رو تغییر بدید که همه کاربران ربات شما باید اون رو بدونند بهتره موقع ویرایش از ایموجی هایی که توجه کاربر رو به خودشون جلب میکنند استفاده کنید.

◀️ استفاده از ایموجی‌ها میتونه پیام‌ها رو جذاب‌تر نشون بده. اما زیاده‌روی در این زمینه همیشه یک اشتباهه. شخصا یک ایموجی مرتبط در ابتدای هر بند از متن پیام قرار میدم و زیبایی به همراه تمیز بودن حفظ میشه.


🖋 بازخورد کاربران

◀️ تلگرام برای دریافت بازخورد از کاربران global command هایی مثل /help یا /settings ارائه نمیده. پس خود توسعه‌دهنده باید به سلیقه خودش بخشی رو برای دریافت بازخورد طراحی، و کاربران رو از وجود اون مطلع کنه.


ℹ️ ساخت یک ربات فقط نوشتن کد نیست. چیزی که کاربر از ربات شما میبینه همون چیزی هست که تلگرام به اون نشون میده و طراحی تمیز، تجربه کاربری مناسب و رعایت نکات میتونند ربات شما رو حرفه‌ای و جذاب‌تر کنند.

✍️ *ژنرال*

💎 Channel: @DevelopixRobot
Please open Telegram to view this post
VIEW IN TELEGRAM
👍174🔥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 روز، با کنترل دسترسی و شرط ریپلای نشدن کامند:
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
🔥142
الگوی 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