Добрый день, я новичок, и только изучаю питон, пишу телеграм бота, который по запросу пользователя будет выдавать ему справку о том что он учиться в универе, справка в pdf формате.
1)При отправке в первый раз, бот отправляет ему справку, при второй попытке появляется ошибка о том что база данных закрыта.
2) Справок будет несколько, и я не знаю как их хранить и как бот должен понимать что пользователю нужна не 1-ая справка а 2-ая. Справки создаются автоматически, с помощью библиотеки fpdf.
Вот код, просите за говнокод, пытаюсь своими силами написать.
bot = telebot.TeleBot(TOKEN)
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
item1 = types.KeyboardButton('Заказать справку')
markup.add(item1)
bot.send_message(message.chat.id, 'Вас приветствует бот myboy', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def bot_message(message):
if message.chat.type == 'private':
if message.text == 'Заказать справку':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton('Справка#1')
back = types.KeyboardButton('Назад')
markup.add(item1, back)
bot.send_message(message.chat.id, 'Какая справка Вам нужна?', reply_markup=markup)
elif message.text == 'Справка#1':
bot.send_message(message.chat.id, 'Введите ИИН')
elif message.text.isdigit and len(message.text) == 12:
with con:
cur = con.cursor()
sql = "SELECT `fullname` FROM `bot_db` WHERE `iin`=%s and status=1 and user_type=1 limit 1 "
cur.execute(sql, (message.text,))
result = cur.fetchone()
name = result
age = '1997-01-08'
page_name = str(name) + '.pdf'
get_pdf(name,age, page_name)
bot.send_message(message.chat.id, result)
r = open('C:\\Users\\Alkon PC\\PycharmProjects\\mainpy\\{}'.format(page_name), 'rb')
bot.send_document(message.chat.id, r)
elif message.text == 'Назад':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton('Заказать справку')
markup.add(item1)
bot.send_message(message.chat.id, 'Назад', reply_markup=markup)
bot.polling(none_stop=True)