2026-06-14 20:39:19 +00:00
|
|
|
|
"""
|
|
|
|
|
|
Админский Telegram-бот chessCalc.
|
|
|
|
|
|
Показывает статистику использования клиентского бота.
|
|
|
|
|
|
"""
|
|
|
|
|
|
import os
|
|
|
|
|
|
import sys
|
|
|
|
|
|
from telegram import Update
|
|
|
|
|
|
from telegram.ext import Application, CommandHandler, ContextTypes
|
|
|
|
|
|
from telegram.constants import ParseMode
|
|
|
|
|
|
|
|
|
|
|
|
from bots.stats import get_stats, record_user
|
|
|
|
|
|
|
|
|
|
|
|
TOKEN = os.environ.get('ADMIN_BOT_TOKEN', '')
|
|
|
|
|
|
|
|
|
|
|
|
START_MSG = (
|
2026-06-14 20:48:02 +00:00
|
|
|
|
r'*🔧 chessCalc — админский бот*\n\n'
|
|
|
|
|
|
r'Доступные команды:\n'
|
|
|
|
|
|
r'/stat — статистика использования клиентского бота\n'
|
|
|
|
|
|
r'/start — эта справка'
|
2026-06-14 20:39:19 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|
|
|
|
|
user = update.effective_user
|
|
|
|
|
|
record_user(user.id, user.username or '', user.first_name or '',
|
|
|
|
|
|
user.last_name or '')
|
2026-06-14 20:48:02 +00:00
|
|
|
|
await update.message.reply_text(START_MSG, parse_mode=ParseMode.MARKDOWN_V2)
|
2026-06-14 20:39:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def stat(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|
|
|
|
|
user = update.effective_user
|
|
|
|
|
|
record_user(user.id, user.username or '', user.first_name or '',
|
|
|
|
|
|
user.last_name or '')
|
|
|
|
|
|
stats = get_stats()
|
|
|
|
|
|
text = (
|
2026-06-14 20:48:02 +00:00
|
|
|
|
r'*📊 Статистика chessCalc*\n\n'
|
|
|
|
|
|
rf'👤 Уникальных пользователей: *{stats["unique_users"]}*\n'
|
|
|
|
|
|
rf'🔢 Всего запросов: *{stats["total_requests"]}*\n'
|
|
|
|
|
|
rf'📅 За сегодня: *{stats["today_requests"]}*'
|
2026-06-14 20:39:19 +00:00
|
|
|
|
)
|
2026-06-14 20:48:02 +00:00
|
|
|
|
await update.message.reply_text(text, parse_mode=ParseMode.MARKDOWN_V2)
|
2026-06-14 20:39:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
|
if not TOKEN:
|
|
|
|
|
|
print('ADMIN_BOT_TOKEN not set', file=sys.stderr)
|
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
|
|
app = Application.builder().token(TOKEN).build()
|
|
|
|
|
|
app.add_handler(CommandHandler('start', start))
|
|
|
|
|
|
app.add_handler(CommandHandler('stat', stat))
|
|
|
|
|
|
|
|
|
|
|
|
print('Admin bot started', file=sys.stderr)
|
|
|
|
|
|
app.run_polling()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
|
main()
|