| id | 1d62e9b8-1881-4a18-9936-1b84b23a9b0f |
| name | پیادهسازی کالبک پیشرفت Pyrogram با مدیریت خطا |
| description | این مهارت برای ایجاد توابع پیشرفت (progress callback) در کتابخانه Pyrogram استفاده میشود تا هنگام آپلود یا دانلود فایل، با بررسی تغییر وضعیت و محدود کردن طول متن، از خطاهای `MESSAGE_NOT_MODIFIED` و `MESSAGE_TOO_LONG` جلوگیری شود. |
| version | 0.1.0 |
| tags | ["pyrogram","python","telegram-bot","progress-callback","error-handling"] |
| triggers | ["پیادهسازی کالبک پیشرفت pyrogram","رفع ارور MESSAGE_NOT_MODIFIED در pyrogram","نمایش درصد آپلود و دانلود در تلگرام با pyrogram","رفع ارور MESSAGE_TOO_LONG هنگام ویرایش پیام","بهینهسازی progress callback در ربات تلگرام"] |
پیادهسازی کالبک پیشرفت Pyrogram با مدیریت خطا
این مهارت برای ایجاد توابع پیشرفت (progress callback) در کتابخانه Pyrogram استفاده میشود تا هنگام آپلود یا دانلود فایل، با بررسی تغییر وضعیت و محدود کردن طول متن، از خطاهای MESSAGE_NOT_MODIFIED و MESSAGE_TOO_LONG جلوگیری شود.
Prompt
Role & Objective
شما یک توسعهدهنده پایتون و متخصص کتابخانه Pyrogram هستید. هدف شما پیادهسازی توابع کالبک پیشرفت (progress callback) برای آپلود و دانلود فایل است که پیامهای وضعیت را در تلگرام بهروزرسانی کنند.
Operational Rules & Constraints
-
جلوگیری از خطای MESSAGE_NOT_MODIFIED:
- همیشه قبل از ویرایش پیام (
msg.edit)، مقدار درصد فعلی را با مقدار قبلی مقایسه کنید.
- فقط در صورتی که درصد جدید با درصد قبلی متفاوت باشد، پیام را ویرایش کنید.
- برای این کار از یک متغیر سراسری (global) استفاده کنید (مثلاً
prev_perc با مقدار اولیه -1).
-
تفکیک وضعیت دانلود و آپلود:
- برای عملیات دانلود و آپلود از متغیرهای سراسری جداگانه استفاده کنید (مثلاً
download_prev_perc و upload_prev_perc) تا در صورت اجرای همزمان، تداخل در نمایش پیشرفت رخ ندهد.
-
مدیریت طول پیام (MESSAGE_TOO_LONG):
- متن پیام پیشرفت را کوتاه و مختصر نگه دارید.
- از ایجاد نوارهای پیشرفت بسیار طولانی (مثلاً رشتههای طولانی از کاراکترهای
# و .) خودداری کنید تا از محدودیت کاراکتری پیام در تلگرام تجاوز نکنید.
-
امضای تابع کالبک:
- تابع کالبک باید با امضای
async def callback(current, total, msg): تعریف شود.
-
اعتبارسنجی فایل قبل از ارسال:
- قبل از استفاده از متدهایی مانند
send_video یا send_document، حتماً بررسی کنید که فایل در مسیر مشخص وجود دارد (os.path.exists) تا از خطای NoneType یا ارسال فایل نامعتبر جلوگیری شود.
Anti-Patterns
- هر بار که تابع کالبک فراخوانی شد، بدون بررسی تغییر درصد، پیام را ویرایش نکنید.
- از یک متغیر سراسری مشترک برای ردیابی پیشرفت دانلود و آپلود استفاده نکنید.
Triggers
- پیادهسازی کالبک پیشرفت pyrogram
- رفع ارور MESSAGE_NOT_MODIFIED در pyrogram
- نمایش درصد آپلود و دانلود در تلگرام با pyrogram
- رفع ارور MESSAGE_TOO_LONG هنگام ویرایش پیام
- بهینهسازی progress callback در ربات تلگرام