chore: misc

This commit is contained in:
2026-01-28 12:47:48 +03:00
parent 0ceb92b3be
commit c3e0da7029
4 changed files with 26 additions and 8 deletions

View File

@ -1,4 +1,4 @@
version: '3.8' version: "3.8"
services: services:
postgres: postgres:
@ -9,7 +9,7 @@ services:
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
POSTGRES_DB: bdbot POSTGRES_DB: bdbot
ports: ports:
- "5432:5432" - "5432"
# Persist data in a local folder ./postgres_data # Persist data in a local folder ./postgres_data
volumes: volumes:
- ./postgres_data:/var/lib/postgresql/data - ./postgres_data:/var/lib/postgresql/data

View File

@ -23,9 +23,18 @@ def register_command_handlers(bot: telebot.TeleBot) -> None:
bot.reply_to(message, "Мне нужны права администратора для выполнения этой команды.") bot.reply_to(message, "Мне нужны права администратора для выполнения этой команды.")
return return
# Get total members count # Get total members count (exclude bots)
try: try:
total_members = bot.get_chat_member_count(chat_id) total_members_raw = bot.get_chat_member_count(chat_id)
# Try to subtract all bots (including this bot) using admin list
human_members = total_members_raw
try:
admins = bot.get_chat_administrators(chat_id)
bots_in_admins = sum(1 for m in admins if getattr(m.user, "is_bot", False))
human_members = max(total_members_raw - bots_in_admins, 0)
except Exception:
human_members = total_members_raw
total_members = human_members
except Exception: except Exception:
total_members = 0 total_members = 0
@ -34,7 +43,7 @@ def register_command_handlers(bot: telebot.TeleBot) -> None:
UserChat.chat_id == chat_id UserChat.chat_id == chat_id
).distinct().count() ).distinct().count()
users_without_birthday = total_members - users_with_birthday users_without_birthday = max(total_members - users_with_birthday, 0)
# Format message # Format message
if total_members > 0: if total_members > 0:

View File

@ -145,9 +145,18 @@ def show_statistics(bot: telebot.TeleBot, chat: telebot.types.Chat) -> None:
try: try:
chat_id = chat.id chat_id = chat.id
# Get all chat members # Get all chat members (exclude bots where possible)
try: try:
members_count = bot.get_chat_member_count(chat_id) members_count_raw = bot.get_chat_member_count(chat_id)
# Try to subtract all bots (including this bot) using admin list
human_members = members_count_raw
try:
admins = bot.get_chat_administrators(chat_id)
bots_in_admins = sum(1 for m in admins if getattr(m.user, "is_bot", False))
human_members = max(members_count_raw - bots_in_admins, 0)
except Exception:
human_members = members_count_raw
members_count = human_members
except Exception: except Exception:
members_count = 0 members_count = 0

View File

@ -17,7 +17,7 @@ def main() -> None:
scheduler_thread.start() scheduler_thread.start()
# Start bot polling # Start bot polling
print("Bot is starting...") print("Bot is starting...", flush=True)
bot.infinity_polling(none_stop=True) bot.infinity_polling(none_stop=True)