ChessCalcNextTour/bots/admin_bot.py

60 lines
2 KiB
Python
Raw Permalink Normal View History

"""
Админский 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 = (
'*🔧 chessCalc — админский бот*\n\n'
'Доступные команды:\n'
'/stat — статистика использования клиентского бота\n'
'/start — эта справка'
)
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 '')
await update.message.reply_text(START_MSG, parse_mode=ParseMode.MARKDOWN_V2)
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 = (
'*📊 Статистика chessCalc*\n\n'
f'👤 Уникальных пользователей: *{stats["unique_users"]}*\n'
f'🔢 Всего запросов: *{stats["total_requests"]}*\n'
f'📅 За сегодня запросов: *{stats["today_requests"]}*\n'
f'👥 Из них уникальных: *{stats["today_unique_users"]}*'
)
await update.message.reply_text(text, parse_mode=ParseMode.MARKDOWN_V2)
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()