Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ jobs:
env:
BOT_TOKEN: dummy-token
CHAT_ID: ${{ secrets.CHAT_ID || '0' }}
ADMIN_ID: ${{ secrets.ADMIN_ID }}
run: |
python -m pytest -q

Expand Down Expand Up @@ -89,4 +90,5 @@ jobs:
-v /opt/saintbot/db/database.db:/app/src/db/database.db \
-e BOT_TOKEN=${{ secrets.BOT_TOKEN }} \
-e CHAT_ID=${{ secrets.CHAT_ID }} \
-e ADMIN_ID=${{ secrets.ADMIN_ID }} \
$IMAGE
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
```
BOT_TOKEN="<токен вашего Telegram-бота от @BotFather>"
CHAT_ID="<ID технического чата/канала, куда бот дублирует фото желаний туда надо добавить бота с доступом к записи>"
ADMIN_ID="<обязательный ID администратора для команд /backup и /status>"
```
- `BOT_TOKEN` — обязательный токен бота.
- `CHAT_ID` — необязательный, но полезный ID чата/канала, куда бот отправляет копии фото из желаний, чтобы они не пропали из-за ограничений Telegram. Получить можно командой `/ID`, переслав боту сообщение из нужного чата/канала.
- `ADMIN_ID` — обязательный ID администратора, которому доступны команды `/backup` и `/status`.

Не храните `.env` в репозитории.

Expand Down
2 changes: 2 additions & 0 deletions src/app/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
debug,
join_room,
settings as room_settings,
admin_command,
)


Expand All @@ -37,6 +38,7 @@ async def run_bot(token: str) -> None:
debug.router,
join_room.router,
room_settings.router,
admin_command.router,
)

await bot.delete_webhook(drop_pending_updates=True)
Expand Down
18 changes: 18 additions & 0 deletions src/db/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,24 @@ async def update_room_settings(room_iden, price=None, event_time=None, exchange_
)

db.commit()


async def get_stats():
total_users_raw = cur.execute("SELECT COUNT(*) FROM users").fetchone()
participants_raw = cur.execute(
"SELECT COUNT(DISTINCT tg_id) FROM user_rooms WHERE is_member = TRUE"
).fetchone()
rooms_total_raw = cur.execute("SELECT COUNT(*) FROM rooms").fetchone()
started_rooms_raw = cur.execute(
"SELECT COUNT(*) FROM rooms WHERE status = TRUE"
).fetchone()

total_users = total_users_raw[0] if total_users_raw else 0
participants = participants_raw[0] if participants_raw else 0
rooms_total = rooms_total_raw[0] if rooms_total_raw else 0
started_rooms = started_rooms_raw[0] if started_rooms_raw else 0

return total_users, participants, rooms_total, started_rooms
return True


Expand Down
1 change: 1 addition & 0 deletions src/settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
class Settings(BaseSettings):
bot_token: str = ""
chat_id: int | None = Field(default=None, alias="CHAT_ID")
admin_id: int

@field_validator("chat_id", mode="before")
def _normalize_chat_id(cls, v):
Expand Down