@Holorso

Как сделать время пробытия юезра в боте?

Как сделатт такое? 63a0a201aa601794026479.jpeg
Такое нужно отдельно для каждого юзера

Мой код (не работает как надо)
date2 = datetime.date(2022,12,20)
date1 = datetime.date.today()
date = date2  - date1        
                              
@dp.message_handler(content_types=["text"]) # Реакция на текст
async def reaction(message: types.Message):
	chat_id = message.chat.id
	fc.first(chat_id=chat_id)
	if message.text == 'Профиль ':
		bal = q.execute(f'SELECT balance FROM users WHERE user_id = "{message.chat.id}"').fetchone()
		connection.commit()
		await message.answer(f"Ваш профиль:\n\n➖➖➖➖➖➖➖\n\n<b>Ваш айди</b>: {message.from_user.id}\n<b>Ваш баланс:</b> {fc.toFixed(bal[0], 1)}₽\n<b>Ваш логин: {ghoul}</b>\n<b>Вы с нами уже:</b> {date}", reply_markup=kb.inline_kb1, parse_mode="HTML")
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
1. Определите момент, с которого вы будете отсчитывать дни, сколько пользователь "с вами": это может быть запуск бота командой /start, либо какое-то другое значительное действие (например, регистрация);
2. Запишите этот момент в виде даты и времени в базу данных.
3. Когда нужно отобразить, сколько пользователь с вами, берите текущее время и вычитайте из него время из базы данных. Для этого удобно использовать модуль datetime:
import datetime as dt

joined = …  # Момент, с которого пользователь начал пользоваться ботом (тип данных dt.datetime, из БД)
now = dt.datetime.now()
days_with_us = (now - joined).days
msg = f"Вы с нами дней: {days}"

Если нужно красиво выводить разницу во времени (вроде "9 дней, 2 часа" или "2 года, 3 месяца 7 дней"), то можно воспользоваться сторонними библиотеками, которые позволяют перевести объект datetime.timedelta в удобочитаемое представление. Например, Humanize: https://python-humanize.readthedocs.io/en/latest/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы