статистика telegram бота telebot
хочу в своем боте сделать статистику, но что-то не получается. код:
sql.execute(f"SELECT alllogsteam FROM infoteam")
alllogsteam = sql.fetchall()[0][0]
sql.execute(f"SELECT dateopenteam FROM infoteam")
dateopenteam = sql.fetchall()[0][0]
sql.execute(f"SELECT allusersteam FROM infoteam")
allusers = sql.fetchall()[0][0]
sql.execute(f"SELECT moneypays FROM users")
moneypays = sql.fetchall()[0][0]
sql.execute(f"SELECT status FROM users")
status = sql.fetchall()[0][0]
admins = 0
supports = 0
workers = 0
installers = 0
blocked = 0
otrabov = 0
ogidaut = 0
soplatoizalog = 0
if soplatoizalog == 1:
soplatoizalog = soplatoizalog+1
if status == 0:
workers = workers+1
elif status == 1:
admins = admins+1
elif status == 2:
supports = supports+1
elif status == 3:
blocked = blocked+1
elif status == 4:
installers = installers+1
elif status == 5:
otrabov = otrabov+1
elif status == 999:
ogidaut = ogidaut+1
bot.edit_message_text(
f'''<i>? Статистика тимы </i><b>{config.team}:</b>\n\n''' \
f'''┌ ?? Всего пользователей: <b>{allusers}</b>\n''' \
f'''├ ⛏ Воркеров: <b>{workers}</b>\n''' \
f'''├ ?✈️ Администраторов: <b>{admins}</b>\n''' \
f'''├ ? Саппортов: <b>{supports}</b>\n''' \
f'''├ ? Отработчиков: <b>{otrabov}</b>\n''' \
f'''├ ? Инсталлеров: <b>{installers}</b>\n''' \
f'''├ ⛔️ Заблокировано: <b>{blocked}</b>\n''' \
f'''└ ⏳ Ожидающих: <b>{ogidaut}</b>\n\n''' \
f'''┌ ? Всего логов: <b>{alllogsteam}</b>\n''' \
f'''└ ? Дата нашего открытия: <b>{dateopenteam}</b>\n'''
, call.message.chat.id, call.message.message_id, reply_markup=ToAdmMenu, parse_mode='HTML')
Ответы (1 шт):
Автор решения: ASKIT
→ Ссылка
Вот пример правильной(на сколько мне известно) работы с данными SQL. Исходя из этого примера делай свою статистику.
Структура таблицы: id | telegram | is_support | is_admin | balance
# Получаем данные из БД.
data = sql.execute('SELECT * FROM users').fetchall()
users = len(data) # Получаем кол-во пользователей.
# Создаём пустые переменные.
admins = 0
support = 0
balance = 0
# Проходимся по всем пользователям, и получаем данные каждого пользователя.
# Так как bool значения храняться в базе в виде 0 или 1 - можем их спокойно прибавлять к переменным.
# "admins += 1" это как "admins = admins + 1"
for user in data:
admins += user[3] # Получаем кол-во админов.
support += user[2] # Получаем кол-во саппортов.
balance += user[4] # Получаем общий баланс пользователей.
print(f'Общая статистика:\n\n'
f'Пользователей: {users}\n'
f'Администраторов: {admins}\n'
f'Саппортов: {support}\n'
f'Общий баланс: {balance}')
