login = ''
@bot.message_handler(func=lambda message: message.text == '/start') # Начальная панель
def start(message):
markup = types.ReplyKeyboardMarkup()
btn1 = types.KeyboardButton('Зарегестрировать счёт ??')
btn2 = types.KeyboardButton('Мой счёт ?')
btn3 = types.KeyboardButton('Информация о боте My finance')
markup.add(btn1, btn2, btn3)
bot.send_message(message.chat.id, f'''
Здраствуйте??! Я представляю telegram бота "My finance".
Выберете одну из предложенный функций''', reply_markup=markup)
@bot.message_handler(content_types=['text']) # Выбор функции
def works(message):
if message.text == 'Зарегестрировать счёт ??':
bot.send_message(message.chat.id,'Придумайте логин')
bot.register_next_step_handler(message, data_base_reg)
elif message.text == 'Мой счёт ?':
bot.send_message(message.chat.id, 'Здравствуйте! Рады снова вас видеть, введите логин вашего счёт ')
bot.register_next_step_handler(message, my_bill)
elif message.text == 'Информация о боте My finance':
bot.send_message(message.chat.id, 'My finance - представляет собой бота, который следит за вашими финансовыми показателями: Баланс, расходы, доходы и так далее.')
def data_base_reg(message): # Регистрация логина в базе данных
con = sql.connect('tg_db.sqlite')
cur = con.cursor()
cur.execute('SELECT id FROM telegram_profile')
id_list = [i for i in cur]
cur.execute(f'''INSERT INTO telegram_profile(id, name) VALUES({str(id_list[-1][0] + 1)}, '{message.text}');''')
bot.send_message(message.chat.id, 'Поздравляем вы успешно зарегестрированы! ?')
con.commit()
con.close()
return result(message)
def result(message): # Результат регистрации
con = sql.connect('tg_db.sqlite')
cur = con.cursor()
cur.execute('''SELECT id, name FROM telegram_profile''')
l = [i for i in cur]
bot.send_message(message.chat.id, f'''Ваш логин: {l[-1][1]}
Запомните его! Также ваш id: {l[-1][0]}''')
con.commit()
con.close()
def my_bill(message): # Вход в проифиль; функция - Мой счёт
con = sql.connect('tg_db.sqlite')
cur = con.cursor()
cur.execute('SELECT name FROM telegram_profile')
l = [i for i in cur]
l2 = [j for i in l for j in i]
if message.text in l2:
global login
login = message.text
markup = types.InlineKeyboardMarkup(row_width=3)
btn1 = types.InlineKeyboardButton('Напоминания ?', callback_data='reminders')
btn2 = types.InlineKeyboardButton('Расходы', callback_data='expenses')
btn3 = types.InlineKeyboardButton('Отчёт о счёте', callback_data='accnt')
btn4 = types.InlineKeyboardButton('Доходы', callback_data='income')
btn5 = types.InlineKeyboardButton('Баланс счёта', callback_data='balance')
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, f'Добро пожаловать в ваш профиль {message.text}', reply_markup=markup)
bot.register_callback_query_handler(message, callback)
else:
bot.send_message(message.chat.id, f'Неверный логин, попробуйте снова')
bot.register_next_step_handler(message, my_bill)
bot.callback_query_handler(func=lambda call:True)
def callback(call): #Промежуток времени расходов; функция - Мой счёт
if call.data == 'reminders':
pass
elif call.data == 'expenses':
markup = types.InlineKeyboardMarkup(row_width=3)
btn1 = types.InlineKeyboardButton('День', callback_data='day')
btn2 = types.InlineKeyboardButton('Неделя', callback_data='week')
btn3 = types.InlineKeyboardButton('Месяц', callback_data='month')
btn4 = types.InlineKeyboardButton('Год', callback_data='year')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(call.message.chat.id, 'Выберете промежуток времени, за который вы совершали какие либо траты', reply_markup=markup)
bot.register_callback_query_handler(call, exp)
elif call.data == 'accnt':
bot.send_message(call.message.chat.id, 'Good accnt')
elif call.data == 'income':
bot.send_message(call.message.chat.id, 'Good inco')
elif call.data == 'balance':
bot.send_message(call.message.chat.id, 'Укажите сумму вашего баланса')
bot.register_next_step_handler(call.message, blnce)
def exp(call): # Распределение промежутка расходов; функция - Мой счёт
if call.data == 'day':
con = sql.connect('tg_db.sqlite')
cur = con.cursor()
cur.execute('''CREATE TABLE IF NOT EXISTS day_exps(login VARCHAR(20), expenses INTEGER, type_exp TEXT)''')
bot.send_message(call.message.chat.id, 'Введите сумму ваших расходов, а также категорию расходов через пробел')
bot.register_next_step_handler(call.message, db_exp_day)
con.commit()
con.close()
elif call.data == 'week':
bot.send_message(call.message.chat.id, 'WEEK')
elif call.data == 'month':
bot.send_message(call.message.chat.id, 'MONTH')
elif call.data == 'year':
bot.send_message(call.message.chat.id, 'YEAR')
bot.message_handler()
def db_exp_day(message): # Внесение данных о расходах за определённый промежуток времени в базу данных; функция - Мой счёт
con = sql.connect('tg_db.sqlite')
cur = con.cursor()
exps = list(map(str, (message.text).split()))
cur.execute(f'''INSERT INTO day_exps(login, expenses, type_exp) VALUES('{login}', {exps[0]}, '{exps[1]}');''')
cur.execute(f'''SELECT expenses, type_exp FROM day_exps WHERE login='{login}';''')
bot.send_message(message.chat.id, f'Расходы успешно добавлены')
con.commit()
con.close()
def blnce(message):
con = sql.connect('tg_db.sqlite')
cur = con.cursor()
bot.send_message(message.chat.id, f'Ваша сумма: {message.text}')
cur.execute('''CREATE TABLE IF NOT EXISTS balance(login VARCAR(20), amount INTEGER);''')
cur.execute(f'''INSERT INTO balance(login, amount) VALUES('{login}', {message.text});''')
con.commit()
con.close()
bot.polling(non_stop=True)