diff --git a/changelocale.py b/changelocale.py index 10470db..64e385b 100644 --- a/changelocale.py +++ b/changelocale.py @@ -1,11 +1,11 @@ from bot import bot -import locale +import locales def change_locale(message): if message.text.split(' ')[0] == '/ru': - locale.LOCALE = 'ru' + locales.LOCALE = 'ru' bot.send_message(message.chat.id, 'Выбран русский язык') elif message.text.split(' ')[0] == '/en': - locale.LOCALE = 'en' + locales.LOCALE = 'en' bot.send_message(message.chat.id, 'Selected language: english') diff --git a/database.sqlite b/database.sqlite index d80da12..1647fa5 100644 Binary files a/database.sqlite and b/database.sqlite differ diff --git a/database/models.py b/database/models.py index f975ab0..947e170 100644 --- a/database/models.py +++ b/database/models.py @@ -27,6 +27,7 @@ class Transaction(BaseModel): sum = FloatField(column_name='TransactionSum', null=False, default=0) user = ForeignKeyField(User, unique=False) date = DateField(column_name='Date', default=datetime.datetime.today()) + category = TextField(column_name='category', default='none category') class Meta: table_name = 'Transaction' diff --git a/locale.py b/locale.py deleted file mode 100644 index 0d817ec..0000000 --- a/locale.py +++ /dev/null @@ -1,33 +0,0 @@ -LOCALE = 'ru' - -ru = { - 'help_message': - ''' -Привет я бот для управления твоими финансами и вот что я умею: -/help - показать этот список. -/ru - русский язык -/en - английский язык -/balance - текущий баланс -/add или + - добавить доход -/rm или - - добавить расход - ''', - 'error404_message': 'Я не могу это сделать.', - 'erradd': 'Используйте /add [сумма] или + [сумма]', - 'errrm': 'Используйте /rm [сумма] или - [сумма]' -} - -en = { - 'help_message': - ''' -Hi i am finance bot and i can do this: -/help - open this list -/ru - russian language -/en - english language -/balance - balance -/add или + - add incom -/rm или - - add consuption - ''', - 'error404_message': 'I can\'t do this.', - 'erradd': 'Use /add [sum] or + [sum]', - 'errrm': 'Use /rm [sum] or - [sum]' -} diff --git a/locales.py b/locales.py new file mode 100644 index 0000000..1e6beef --- /dev/null +++ b/locales.py @@ -0,0 +1,41 @@ +LOCALE = 'ru' + +ru = { + 'help_message': + ''' +Привет я бот для управления твоими финансами и вот что я умею: +1. /help - показать этот список. +2. /ru - русский язык +3. /en - английский язык +4. /balance - текущий баланс +5. /add или + - добавить доход +6. /rm или - - добавить расход +7. /addtoday - доходы за сегодня +8. /rmtoday - расходы за сегодня +9. /addall - доходы за все время +10. /rmall - расходы за все время + ''', + 'error404_message': 'Я не могу это сделать.', + 'erradd': 'Используйте:\n1. /add [сумма]\n2. + [сумма]\n3. /add [сумма] [категория]\n4. + [сумма] [категория]', + 'errrm': 'Используйте:\n1. /rm [сумма]\n2. - [сумма]\n3. /rm [сумма] [категория]\n4. - [сумма] [категория]' +} + +en = { + 'help_message': + ''' +Hi i am finance bot and i can do this: +1. /help - open this list +2. /ru - russian language +3. /en - english language +4. /balance - balance +5. /add или + - add incom +6. /rm или - - add consuption +7. /addtoday - incomes today +8. /rmtoday - consuptions today +9. /addall - incomes to all time +10. /rmall - consuptions to all time + ''', + 'error404_message': 'I can\'t do this.', + 'erradd': 'Use:\n1. /add [sum]\n2. + [sum]\n3. /add [sum] [category]\n4. + [sum] [category]', + 'errrm': 'Use\n1. /rm [sum]\n2. - [sum]\n3. /rm [sum] [category]\n4. - [sum] [category]' +} diff --git a/main.py b/main.py index b7b09b5..74e3c25 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,8 @@ +import datetime + from termcolor import cprint from bot import bot -import locale +import locales from changelocale import change_locale from database.models import User, Transaction @@ -15,59 +17,147 @@ def main_bot(messages): for message in messages: if message.text.split(' ')[0] == '/start' or message.text.split(' ')[0] == '/help': mes = None - if locale.LOCALE == 'ru': - mes = locale.ru['help_message'] - elif locale.LOCALE == 'en': - mes = locale.en['help_message'] + if locales.LOCALE == 'ru': + mes = locales.ru['help_message'] + elif locales.LOCALE == 'en': + mes = locales.en['help_message'] _, user = User.get_or_create(username=message.chat.id) bot.send_message(message.chat.id, mes) elif message.text.split(' ')[0] == '/ru' or message.text.split(' ')[0] == '/en': - change_locale(message) + change_locale(message) # функция для изменения языка elif message.text.split(' ')[0] == '/balance': user = User.get(username=message.chat.id) - bot.send_message(message.chat.id, to_fixed(user.balance, 2)) + mes = '' + if locales.LOCALE == 'ru': + mes = 'Баланс: ' + elif locales.LOCALE == 'en': + mes = 'Balance: ' + mes += to_fixed(user.balance, 2) + bot.send_message(message.chat.id, mes) elif message.text.split(' ')[0] == '/add' or message.text.split(' ')[0] == '+': if len(message.text.split(' ')) < 2: mes = None - if locale.LOCALE == 'ru': - mes = locale.ru['erradd'] - elif locale.LOCALE == 'en': - mes = locale.en['erradd'] + if locales.LOCALE == 'ru': + mes = locales.ru['erradd'] + elif locales.LOCALE == 'en': + mes = locales.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) - ) + if len(message.text.split(' ')) == 3: + Transaction.create( + sum=int(message.text.split(' ')[1]), + type='incom', + user=User.get(username=message.chat.id), + category=message.text.split(' ')[2] + ) + else: + 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 = locale.ru['errrm'] - elif locale.LOCALE == 'en': - mes = locale.en['errrm'] + if locales.LOCALE == 'ru': + mes = locales.ru['errrm'] + elif locales.LOCALE == 'en': + mes = locales.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) - ) + if len(message.text.split(' ')) == 3: + Transaction.create( + sum=int(message.text.split(' ')[1]), + type='consuption', + user=User.get(username=message.chat.id), + category=message.text.split(' ')[2] + ) + else: + 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)) + elif message.text.split(' ')[0] == '/addtoday': + transactions = Transaction.select().where( + Transaction.type == 'incom', + Transaction.date == datetime.datetime.today(), + Transaction.user == User.get(username=message.chat.id).id + ) + mes = '' + if locales.LOCALE == 'ru': + mes = 'Ваши доходы за сегодня:\n\n' + elif locales.LOCALE == 'en': + mes = 'Your incomes today:\n\n' + iteration = 1 + for i in transactions: + mes += str(iteration) + '. 􀅼' + str(i.sum) + '􁑆 ' + i.category + '\n\n' + iteration += 1 + + bot.send_message(message.chat.id, mes) + elif message.text.split(' ')[0] == '/rmtoday': + transactions = Transaction.select().where( + Transaction.type == 'consuption', + Transaction.date == datetime.datetime.today(), + Transaction.user == User.get(username=message.chat.id).id + ) + mes = '' + if locales.LOCALE == 'ru': + mes = 'Ваши расходы за сегодня:\n\n' + elif locales.LOCALE == 'en': + mes = 'Your consuptions today:\n\n' + iteration = 1 + for i in transactions: + mes += str(iteration) + '. 􀅽' + str(i.sum) + '􁑆 ' + i.category + '\n\n' + iteration += 1 + + bot.send_message(message.chat.id, mes) + elif message.text.split(' ')[0] == '/rmall': + transactions = Transaction.select().where( + Transaction.type == 'consuption', + Transaction.user == User.get(username=message.chat.id).id + ) + mes = '' + if locales.LOCALE == 'ru': + mes = 'Ваши расходы за все время:\n\n' + elif locales.LOCALE == 'en': + mes = 'Your all consuptions:\n\n' + iteration = 1 + for i in transactions: + mes += str(iteration) + '. 􀅽' + str(i.sum) + '􁑆 ' + i.category + '\n\n' + iteration += 1 + + bot.send_message(message.chat.id, mes) + elif message.text.split(' ')[0] == '/addall': + transactions = Transaction.select().where( + Transaction.type == 'incom', + Transaction.user == User.get(username=message.chat.id).id + ) + mes = '' + if locales.LOCALE == 'ru': + mes = 'Ваши доходы за все время:\n\n' + elif locales.LOCALE == 'en': + mes = 'Your all incomes:\n\n' + iteration = 1 + for i in transactions: + mes += str(iteration) + '. 􀅼' + str(i.sum) + '􁑆 ' + i.category + '\n\n' + iteration += 1 + + bot.send_message(message.chat.id, mes) else: mes = None - if locale.LOCALE == 'ru': - mes = locale.ru['error404_message'] - elif locale.LOCALE == 'en': - mes = locale.en['error404_message'] + if locales.LOCALE == 'ru': + mes = locales.ru['error404_message'] + elif locales.LOCALE == 'en': + mes = locales.en['error404_message'] bot.send_message(message.chat.id, mes) @@ -75,11 +165,11 @@ bot.set_update_listener(main_bot) try: bot.polling(none_stop=True) + while True: + pass except KeyboardInterrupt: - exit('byby\n') + cprint('\ngoodbye', 'green') + exit() except Exception as e: cprint(str(e), 'red') bot.polling(none_stop=True) - -while True: - pass