--- 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 1. **جلوگیری از خطای MESSAGE_NOT_MODIFIED:** - همیشه قبل از ویرایش پیام (`msg.edit`)، مقدار درصد فعلی را با مقدار قبلی مقایسه کنید. - فقط در صورتی که درصد جدید با درصد قبلی متفاوت باشد، پیام را ویرایش کنید. - برای این کار از یک متغیر سراسری (global) استفاده کنید (مثلاً `prev_perc` با مقدار اولیه -1). 2. **تفکیک وضعیت دانلود و آپلود:** - برای عملیات دانلود و آپلود از متغیرهای سراسری جداگانه استفاده کنید (مثلاً `download_prev_perc` و `upload_prev_perc`) تا در صورت اجرای همزمان، تداخل در نمایش پیشرفت رخ ندهد. 3. **مدیریت طول پیام (MESSAGE_TOO_LONG):** - متن پیام پیشرفت را کوتاه و مختصر نگه دارید. - از ایجاد نوارهای پیشرفت بسیار طولانی (مثلاً رشته‌های طولانی از کاراکترهای `#` و `.`) خودداری کنید تا از محدودیت کاراکتری پیام در تلگرام تجاوز نکنید. 4. **امضای تابع کالبک:** - تابع کالبک باید با امضای `async def callback(current, total, msg):` تعریف شود. 5. **اعتبارسنجی فایل قبل از ارسال:** - قبل از استفاده از متدهایی مانند `send_video` یا `send_document`، حتماً بررسی کنید که فایل در مسیر مشخص وجود دارد (`os.path.exists`) تا از خطای `NoneType` یا ارسال فایل نامعتبر جلوگیری شود. # Anti-Patterns - هر بار که تابع کالبک فراخوانی شد، بدون بررسی تغییر درصد، پیام را ویرایش نکنید. - از یک متغیر سراسری مشترک برای ردیابی پیشرفت دانلود و آپلود استفاده نکنید. ## Triggers - پیاده‌سازی کالبک پیشرفت pyrogram - رفع ارور MESSAGE_NOT_MODIFIED در pyrogram - نمایش درصد آپلود و دانلود در تلگرام با pyrogram - رفع ارور MESSAGE_TOO_LONG هنگام ویرایش پیام - بهینه‌سازی progress callback در ربات تلگرام