diff --git a/app/handlers/admin/campaigns.py b/app/handlers/admin/campaigns.py
index 07ab7090..ddb33817 100644
--- a/app/handlers/admin/campaigns.py
+++ b/app/handlers/admin/campaigns.py
@@ -3,6 +3,7 @@ import re
import structlog
from aiogram import Bot, Dispatcher, F, types
from aiogram.fsm.context import FSMContext
+from sqlalchemy import inspect as sa_inspect
from sqlalchemy.ext.asyncio import AsyncSession
from app.config import settings
@@ -237,8 +238,10 @@ async def show_campaigns_list(
text_lines = ['π Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΉ\n']
for campaign in campaigns:
- registrations = len(campaign.registrations or [])
- total_balance = sum(r.balance_bonus_kopeks or 0 for r in campaign.registrations or [])
+ # Access from instance dict to avoid MissingGreenlet on lazy load
+ regs = sa_inspect(campaign).dict.get('registrations', []) or []
+ registrations = len(regs)
+ total_balance = sum(r.balance_bonus_kopeks or 0 for r in regs)
status = 'π’' if campaign.is_active else 'βͺ'
line = (
f'{status} {campaign.name} β {campaign.start_parameter}\n'