Games-In-Arabic / utils /state.py
qqqsfasdf's picture
Upload 60 files
8d21059 verified
# utils/state.py — إدارة حالات المستخدم بشكل معزول تماماً
# كل section لها مفتاحها الخاص لمنع أي تداخل
# مفاتيح الحالات
STATE_KEY = "bot_mode" # القيم: None | "wall" | "specs" | "igdb_game" | "igdb_char"
WALL_KEY = "wall_active" # True عندما يكون في قسم الخلفيات
SPECS_KEY = "specs_active" # True عندما يكون في قسم المواصفات
IGDB_KEY = "igdb_await" # "game" | "char"
SEARCH_KEY = "search_platform" # "pc" | "ps" | "all"
def clear_all(ctx) -> None:
"""مسح كل الحالات — يُستدعى قبل تعيين حالة جديدة."""
for key in (STATE_KEY, WALL_KEY, SPECS_KEY, IGDB_KEY, SEARCH_KEY):
ctx.user_data.pop(key, None)
def set_wall_mode(ctx) -> None:
clear_all(ctx)
ctx.user_data[WALL_KEY] = True
def set_specs_mode(ctx) -> None:
clear_all(ctx)
ctx.user_data[SPECS_KEY] = True
def set_igdb_mode(ctx, mode: str) -> None:
"""mode: 'game' | 'char'"""
clear_all(ctx)
ctx.user_data[IGDB_KEY] = mode
def set_search_mode(ctx, platform: str) -> None:
"""platform: 'pc' | 'ps'"""
clear_all(ctx)
ctx.user_data[SEARCH_KEY] = platform
def get_mode(ctx) -> str | None:
"""
يُعيد الوضع الحالي للمستخدم.
القيم: 'wall' | 'specs' | 'igdb_game' | 'igdb_char' | 'search_pc' | 'search_ps' | None
"""
if ctx.user_data.get(WALL_KEY):
return "wall"
if ctx.user_data.get(SPECS_KEY):
return "specs"
ig = ctx.user_data.get(IGDB_KEY)
if ig:
return f"igdb_{ig}"
sp = ctx.user_data.get(SEARCH_KEY)
if sp:
return f"search_{sp}"
return None