این فریمورک تا حد زیادی قابل قبول نوشته شده. به راحتی امکان استفاده از تمام 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
👍9❤7
🔹 انواع ارور ها در پایتون
🔸 بخش اول
برای رفع و هندل کردن ارور ها ابتدا ما باید آنها رو به خوبی بشناسیم و بدونیم دلایل رخ دادن آنها چیست.
— SyntaxError
یکی از خطا های رایج در پایتون این ارور هست. هنگامی این ارور اتفاق میافتد که شما نگارش و قانون نوشتاری کد های پایتونی را رعایت نکرده باشید.
برخی از دلایل نمایش SyntaxError:
• نبستن استرینگ
• غلط املایی در نوشتار کلمات کلیدی
• استفاده از سینتکس ورژن جدید پایتون در ورژن های قدیمیتر
• فراموش کردن بستن براکت، آکولاد یا پرانتز
مثال:
— IndentionError
در پایتون این ارور زمانی نمایش داده میشود که شما تو رفتگی ها را به خوبی رعایتنکرده باشید.
چند مورد از دلایل وقوع این ارور:
• فاصله های نادرست
• بلوک های تودرتوی نادرست
• فضای خالی در ابتدای شروع یک دستور
مثال:
— NameError
اگر هنگام استفاده از یک متغیر، آن متغیر تعریف نشده باشد این ارور را مشاهده خواهید کرد.
برای رفع این ارور اطمینان حاصل کنید که متغیر یا تابعی که از آن استفاده میکنید تعریف شده باشد.
مثال:
— ValueError
هنگامی این ارور رخ میدهد که نوع مقدار ورودی شما صحیح نیست.
مانند وقتی که یک input با تایپ int تعریف کرده باشید اما کاربر یک استرینگ به آن پاس دهد.
مثال:
— TypeError
این ارور هنگامی رخ میدهد که شما عملیاتی انجام دهید که برای آن نوع داده نامناسب باشد.
مانند زمانی که یک استرینگ را با یک تایپ int تقسیم کنید.
مثال:
منبع:
betterstack 〽️
🔖 #Python, #پایتون
👤 Yasin
💎 Channel: @DevelopixPython
🔸 بخش اول
برای رفع و هندل کردن ارور ها ابتدا ما باید آنها رو به خوبی بشناسیم و بدونیم دلایل رخ دادن آنها چیست.
— SyntaxError
یکی از خطا های رایج در پایتون این ارور هست. هنگامی این ارور اتفاق میافتد که شما نگارش و قانون نوشتاری کد های پایتونی را رعایت نکرده باشید.
برخی از دلایل نمایش SyntaxError:
• نبستن استرینگ
• غلط املایی در نوشتار کلمات کلیدی
• استفاده از سینتکس ورژن جدید پایتون در ورژن های قدیمیتر
• فراموش کردن بستن براکت، آکولاد یا پرانتز
مثال:
a = "salam
print(a)
SyntaxError: unterminated string literal
— IndentionError
در پایتون این ارور زمانی نمایش داده میشود که شما تو رفتگی ها را به خوبی رعایتنکرده باشید.
چند مورد از دلایل وقوع این ارور:
• فاصله های نادرست
• بلوک های تودرتوی نادرست
• فضای خالی در ابتدای شروع یک دستور
مثال:
a = "salam"
if a:
print(a)
IndentationError: expected an indented block after 'if' statement
— NameError
اگر هنگام استفاده از یک متغیر، آن متغیر تعریف نشده باشد این ارور را مشاهده خواهید کرد.
برای رفع این ارور اطمینان حاصل کنید که متغیر یا تابعی که از آن استفاده میکنید تعریف شده باشد.
مثال:
print(a)
a = 10
NameError: name 'a' is not defined
— ValueError
هنگامی این ارور رخ میدهد که نوع مقدار ورودی شما صحیح نیست.
مانند وقتی که یک input با تایپ int تعریف کرده باشید اما کاربر یک استرینگ به آن پاس دهد.
مثال:
age = int(input("age: ")) #input: Yasin
ValueError: invalid literal for int() with base 10: 'Yasin'— TypeError
این ارور هنگامی رخ میدهد که شما عملیاتی انجام دهید که برای آن نوع داده نامناسب باشد.
مانند زمانی که یک استرینگ را با یک تایپ int تقسیم کنید.
مثال:
print("hello" / 3)
TypeError: unsupported operand type(s) for /: 'str' and 'int'منبع:
betterstack 〽️
🔖 #Python, #پایتون
👤 Yasin
💎 Channel: @DevelopixPython
👍12🔥5❤3