diff --git a/database.sqlite b/database.sqlite index 857d18a..d80da12 100644 Binary files a/database.sqlite and b/database.sqlite differ diff --git a/database/models.py b/database/models.py index 63994c9..27e4e54 100644 --- a/database/models.py +++ b/database/models.py @@ -1,3 +1,5 @@ +import datetime + from peewee import * from .base import conn @@ -18,11 +20,16 @@ class User(BaseModel): table_name = 'User' +# модель транзакции class Transaction(BaseModel): id = AutoField(column_name='TransactionId') type = CharField(column_name='TransactionType', max_length=10, null=False, default='incom') sum = FloatField(column_name='TransactionSum', null=False, default=0) - user = ForeignKeyField(User, unique=True) + user = ForeignKeyField(User, unique=False) + date = DateField(column_name='Date', default=datetime.datetime.today()) + + class Meta: + table_name = 'Transaction' conn.create_tables([User, Transaction]) diff --git a/locale.py b/locale.py index 44bab3d..0d817ec 100644 --- a/locale.py +++ b/locale.py @@ -11,7 +11,9 @@ ru = { /add или + - добавить доход /rm или - - добавить расход ''', - 'error404_message': 'Я не могу это сделать.' + 'error404_message': 'Я не могу это сделать.', + 'erradd': 'Используйте /add [сумма] или + [сумма]', + 'errrm': 'Используйте /rm [сумма] или - [сумма]' } en = { @@ -25,5 +27,7 @@ Hi i am finance bot and i can do this: /add или + - add incom /rm или - - add consuption ''', - 'error404_message': 'I can\'t do this.' + 'error404_message': 'I can\'t do this.', + 'erradd': 'Use /add [sum] or + [sum]', + 'errrm': 'Use /rm [sum] or - [sum]' } diff --git a/main.py b/main.py index f680e88..b7b09b5 100644 --- a/main.py +++ b/main.py @@ -2,13 +2,15 @@ from termcolor import cprint from bot import bot import locale from changelocale import change_locale -from database.models import User +from database.models import User, Transaction +# функция ограничения количества знаков после запятой def to_fixed(num_obj, digits=0): return f"{num_obj:.{digits}f}" +# основной обработчик для бота def main_bot(messages): for message in messages: if message.text.split(' ')[0] == '/start' or message.text.split(' ')[0] == '/help': @@ -28,27 +30,37 @@ def main_bot(messages): if len(message.text.split(' ')) < 2: mes = None if locale.LOCALE == 'ru': - mes = 'Используйте /add [сумма] или + [сумма]' + mes = locale.ru['erradd'] elif locale.LOCALE == 'en': - mes = 'Use /add [sum] or + [sum]' + mes = locale.en['erradd'] bot.send_message(message.chat.id, mes) else: user = User.get(username=message.chat.id) user.balance += float(message.text.split(' ')[1]) user.save() + Transaction.create( + sum=int(message.text.split(' ')[1]), + type='incom', + user=User.get(username=message.chat.id) + ) bot.send_message(message.chat.id, to_fixed(user.balance, 2)) elif message.text.split(' ')[0] == '/rm' or message.text.split(' ')[0] == '-': if len(message.text.split(' ')) < 2: mes = None if locale.LOCALE == 'ru': - mes = 'Используйте /rm [сумма] или - [сумма]' + mes = locale.ru['errrm'] elif locale.LOCALE == 'en': - mes = 'Use /rm [sum] or - [sum]' + mes = locale.en['errrm'] bot.send_message(message.chat.id, mes) else: user = User.get(username=message.chat.id) user.balance -= float(message.text.split(' ')[1]) user.save() + Transaction.create( + sum=int(message.text.split(' ')[1]), + type='consuption', + user=User.get(username=message.chat.id) + ) bot.send_message(message.chat.id, to_fixed(user.balance, 2)) else: mes = None