Помогите с ботом telegram(inline меню) в связке с sqlite. Как реализовать?
помогите пожалуйста, примером как это реализовать или советом. Хочу из админ-панели в боте, иметь возможность добавления товара и записи всего этого в бд. Структура хранения такова: Категория . Подкатегория . . Товар И в соответствии с инфраструктурой создавалась inline клавиатура с кнопками. Какую структуру бд лучше всего будет использовать и как это все описать в python для telegram bot -а? Довольно долго уже пытаюсь, читаю,но увы. Поставьте на путь истинный пожалуйста ?
Ответы (1 шт):
Итак, если я всё верно понял, то:
import telebot
from telebot import apihelper, types
import sqlite
bot = telebot.TeleBot('TOKEN')
print(bot.get_me())
def create_db(cat, subcat, prod):
conn = sqlite3.connect('test_db.db')
cursor = conn.cursor()
db_data = [(cat, subcat, prod)]
cursor.executemany("INSERT INTO info VALUES (?, ?, ?)", db_data) # Запись данных в БД
conn.commit() # Сохранение данных в БД
# Запрос данных для записи в БД
@bot.message_handler(commands=['add_db'])
def filling_db(message):
data = bot.send_message(message.chat.id, 'Введите Категорию, Подкатегорию, Товар')
bot.register_next_step_handler(data, filling_db_2)
def filling_db_2(message):
text = message.text.split(',')
cat = text[0]
subcat = text[1]
prod = text[2]
bot.send_message(message.chat.id, 'Категория: {}\n Подкатегория: {}\n Товар: {}'
.format(cat, subcat, prod))
create_db(cat, subcat, prod)
bot.send_message(message.chat.id, 'клавиатура - /lala')
@bot.message_handler(commands=['lala'])
def filling_db_3(message):
conn = sqlite3.connect('test_db.db')
cursor = conn.cursor()
cat = ''
subcat = ''
prod = ''
for row in cursor.execute("SELECT * FROM info"):
cat = list(row)[0]
subcat = list(row)[1]
prod = list(row)[2]
db_keyboard = types.InlineKeyboardMarkup()
db_cat_k = types.InlineKeyboardButton(text=cat, callback_data='db_cat')
db_subcat_k = types.InlineKeyboardButton(text=subcat, callback_data='db_subcat')
db_prod_k = types.InlineKeyboardButton(text=prod, callback_data='db_prod')
db_keyboard.add(db_cat_k, db_subcat_k, db_prod_k)
bot.send_message(message.chat.id, 'Выберите:', reply_markup=db_keyboard)
строчка с cursor.execute("SELECT * FROM info") для самостоятельного изучения, понять как выбирать нужные данные. в примере клавиатура будет содержать последнюю строку данных из БД.
для просмотра БД sqlite можно воспользоваться DB Browser for SQLite