динамические inline кнопки telebot python
Пишу ТГ-бота с помощью библиотеки telebot.
По задумке пользователь вводит текст и этот текст становится названием для кнопки, а её создание приводит к образованию базы данных. Но проблема в том, что названием для кнопки становится именно название файла, а не сообщение.
cd = ''
msg = 'inline_buttons.txt'
@bot.message_handler(content_types=['text'])
def buttons(message):
if message.text.lower() == 'посмотреть/добавить словари':
keyboard = types.InlineKeyboardMarkup()
bot.send_message(message.chat.id, text = 'выбери словарь или напиши название:')
directory = r'C:\Users\Home\source\repos\bot svalka\bot svalka'
ext = ('.db')
for cd in os.listdir(directory):
if cd.endswith(ext):
keyboard.add(types.InlineKeyboardButton(cd, callback_data = cd ))
bot.send_message(message.chat.id, text = 'сейчас у тебя есть:', reply_markup = keyboard)
bot.register_next_step_handler(message, get_text)
def get_text(message):
msg = open('inline_buttons.txt', 'w')
msg.write(message.text)
msg.close()
x = message.text
connection = sqlite3.connect(f'{x}.db')
cursor = connection.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS dict(hanzi TEXT PRIMARY KEY, pinyin TEXT NOT NULL, translation TEXT NOT NULL)')
connection.commit()
connection.close()
bot.send_message(message.chat.id, text = 'готово!')```
Далее, мне нужно как-то сделать отдельный callback_data под каждую кнопку, который будет открывать БД, созданную вместе с кнопкой.
Помимо этого, кнопки вызывают миллион разных ошибок, если перед их нажатием не создать ещё одну кнопку.
cd = ''
msg = 'inline_buttons.txt'
@bot.message_handler(content_types=['text'])
def buttons(message):
if message.text.lower() == 'посмотреть/добавить словари':
keyboard = types.InlineKeyboardMarkup()
bot.send_message(message.chat.id, text = 'выбери словарь или напиши название:')
directory = r'C:\Users\Home\source\repos\bot svalka\bot svalka'
ext = ('.db')
for cd in os.listdir(directory):
if cd.endswith(ext):
keyboard.add(types.InlineKeyboardButton(cd, callback_data = cd ))
bot.send_message(message.chat.id, text = 'сейчас у тебя есть:', reply_markup = keyboard)
bot.register_next_step_handler(message, get_text)
def get_text(message):
msg = open('inline_buttons.txt', 'w')
msg.write(message.text)
msg.close()
x = message.text
connection = sqlite3.connect(f'{x}.db')
cursor = connection.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS dict(hanzi TEXT PRIMARY KEY, pinyin TEXT NOT NULL, translation TEXT NOT NULL)')
connection.commit()
connection.close()
bot.send_message(message.chat.id, text = 'готово!')
@bot.callback_query_handler(func=lambda call: True) #болванка, просто для понимания работают ли кнопки вообще
def open_bd(call):
directory = r'C:\Users\Home\source\repos\bot svalka\bot svalka'
ext = ('.db')
for files in os.listdir(directory):
if files.endswith(ext):
with open(msg) as i:
for i in msg:
if i in files:
print(i)
bot.send_message(call.message.chat.id, text = f'словарь{i}')