הראה קוד מקור ל cache_commands

"""
פקודות ניהול Cache לבוט
Cache Management Commands for Bot
"""

import logging
from telegram import Update
from telegram.ext import ContextTypes, CommandHandler
from cache_manager import cache
from html import escape as html_escape

logger = logging.getLogger(__name__)

[תיעוד] async def cache_stats_command(update: Update, context: ContextTypes.DEFAULT_TYPE): """הצגת סטטיסטיקות cache""" user_id = update.effective_user.id # בדיקה אם המשתמש הוא admin (אופציונלי) # if user_id not in ADMIN_USER_IDS: # await update.message.reply_text("❌ פקודה זמינה רק למנהלים") # return try: stats = cache.get_stats() if not stats.get("enabled", False): await update.message.reply_text( "📊 **סטטיסטיקות Cache**\n\n" "❌ Redis Cache מושבת\n" "💡 להפעלה: הגדר REDIS_URL במשתני הסביבה", parse_mode='Markdown' ) return if "error" in stats: await update.message.reply_text( f"📊 **סטטיסטיקות Cache**\n\n" f"⚠️ שגיאה: {html_escape(stats['error'])}", parse_mode='HTML' ) return # הצגת סטטיסטיקות מפורטות hit_rate = stats.get('hit_rate', 0) hit_emoji = "🎯" if hit_rate > 80 else "📈" if hit_rate > 60 else "📉" message = ( f"📊 <b>סטטיסטיקות Cache</b>\n\n" f"✅ <b>סטטוס:</b> פעיל\n" f"💾 <b>זיכרון בשימוש:</b> {stats.get('used_memory', 'N/A')}\n" f"👥 <b>חיבורים:</b> {stats.get('connected_clients', 0)}\n\n" f"🎯 <b>ביצועי Cache:</b>\n" f"{hit_emoji} <b>Hit Rate:</b> {hit_rate}%\n" f"✅ <b>Hits:</b> {stats.get('keyspace_hits', 0):,}\n" f"❌ <b>Misses:</b> {stats.get('keyspace_misses', 0):,}\n\n" f"💡 <b>טיפ:</b> Hit Rate גבוה = ביצועים טובים יותר!" ) await update.message.reply_text(message, parse_mode='HTML') except Exception as e: logger.error(f"שגיאה בהצגת סטטיסטיקות cache: {e}") await update.message.reply_text( "❌ שגיאה בקבלת סטטיסטיקות cache" )
[תיעוד] async def clear_cache_command(update: Update, context: ContextTypes.DEFAULT_TYPE): """ניקוי cache של המשתמש""" user_id = update.effective_user.id try: deleted = cache.invalidate_user_cache(user_id) await update.message.reply_text( f"🧹 <b>Cache נוקה בהצלחה!</b>\n\n" f"🗑️ נמחקו {deleted} ערכים\n" f"⚡ הפעולות הבאות יהיו מעט איטיות יותר עד שה-cache יתמלא מחדש", parse_mode='HTML' ) except Exception as e: logger.error(f"שגיאה בניקוי cache: {e}") await update.message.reply_text("❌ שגיאה בניקוי cache")
[תיעוד] def setup_cache_handlers(application): """הוספת handlers לפקודות cache""" application.add_handler(CommandHandler("cache_stats", cache_stats_command)) application.add_handler(CommandHandler("clear_cache", clear_cache_command)) logger.info("Cache handlers הוגדרו בהצלחה")