def send_balance(message): income_sum = session.query(func.sum(Incomes.value)).scalar() or 0 expenses_sum = session.query(func.sum(Expenses.price)).scalar() or 0 balance = round(income_sum - expenses_sum, 2) bot.send_message(message.chat.id, f'*{balance} грн*', parse_mode='Markdown')
def send_month_expenses(message): last_month_date = datetime.today() - relativedelta(months=1) expenses = session.query(func.sum(Expenses.price)).filter( Expenses.created_at > last_month_date).scalar() or 0 bot.send_message(message.chat.id, f'*{expenses}* грн', parse_mode='Markdown')
def listener(messages): for m in messages: chat_id = m.chat.id user = session.query(User).filter( User.telegram_id == m.from_user.id).first() if not user: user = User( telegram_id=m.from_user.id, first_name=m.from_user.first_name, username=m.from_user.username, ) session.add(user) message = m.text.strip() if message.isdigit(): item = session.query(Item).filter(Item.code == message).first() if not item: bot.send_message(chat_id, 'Товара с таким номером нет') else: item.views = item.views + 1 user.views = user.views + 1 if user.views else 1 bot.send_message(chat_id, f'Ссылка на товар:\n{item.link}') else: bot.send_message(chat_id, 'Неверный код товара') session.commit()
def send_last_expenses(message): expenses = session.query(Expenses).order_by( Expenses.created_at.desc())[:10] message_to_send = [f'{expense.name.title()}' for expense in expenses] max_length = len(max(message_to_send, key=len)) for i in range(len(message_to_send)): item = message_to_send[i] message_to_send[ i] = item + f"`{(max_length - len(item)) * ' '}`" + f" *{expenses[i].price}*" message_to_send = '\n'.join(message_to_send) bot.send_message(message.chat.id, message_to_send, parse_mode='Markdown')
def send_last_incomes(message): incomes = session.query(Incomes).order_by(Incomes.created_at.desc())[:10] message_to_send = [ f'{income.user.first_name} *{income.value}*' for income in incomes ] max_length = len(max(message_to_send, key=len)) for i in range(len(message_to_send)): item = message_to_send[i] message_to_send[ i] = item + f"`{(max_length - len(item)) * ' '}`" + f" {format_date(incomes[i].created_at)}" message_to_send = '\n'.join(message_to_send) bot.send_message(message.chat.id, message_to_send, parse_mode='Markdown')
def send_month_incomes(message): last_month_date = datetime.today() - relativedelta(months=1) incomes = session.query(Incomes).filter( Incomes.created_at > last_month_date).order_by( Incomes.created_at.desc()) message_to_send = [ f'{income.user.first_name.strip()} *{income.value}*' for income in incomes ] max_length = len(max(message_to_send, key=len)) for i in range(len(message_to_send)): item = message_to_send[i] message_to_send[ i] = item + f"`{(max_length - len(item)) * ' '}`" + f" {format_date(incomes[i].created_at)}" total_incomes = sum([income.value for income in incomes]) message_to_send = '\n'.join( message_to_send) + f'\n\nСумма: *{total_incomes}*' bot.send_message(message.chat.id, message_to_send, parse_mode='Markdown')
def listener(messages): for m in messages: chat_id = m.chat.id user = session.query(User).filter( User.telegram_id == m.from_user.id).first() if not user: first_name = m.from_user.first_name username = m.from_user.username if not first_name or username: bot.send_message( chat_id, f'Error', ) user = User( telegram_id=m.from_user.id, first_name=m.from_user.first_name, username=m.from_user.username, ) session.add(user) add_transaction(user, m.text.lower(), chat_id) session.commit()