Herlopandris
@Herlopandris
Engineering

Как заставить бота искать в базе SQLite и выдавать ответ в чат?

пытаюсь написать Телеграмм Бота для удобства поиска информации, создал базу sqlite в ней таблица с двумя столбцами. Нужно что бы бот любое сообщение пользователя искал в базе и при совпадении выдавал результат как сообщение в чат... Пробовал по разному, потратил честных 5 дней что бы понять как это сделать, но видимо тут совсем всё не просто, пишу первый раз.

import telebot
import config
import sqlite3


bot: telebot = telebot.TeleBot(config.TOKEN)
conn = sqlite3.connect('shops.db')
pur = conn.cursor()


@bot.message_handler(commands=['start'])
def message(message):
    bot.reply_to(message, "Привет")



cur = conn.cursor()
r = cur.execute('SELECT about FROM data WHERE shop =?', {message.text}).fetchone()
print(r)
conn.commit()

bot.polling(none_stop=True)<code lang="python">

</code>
  • Вопрос задан
  • 705 просмотров
Решения вопроса 1
WhiteMarlin
@WhiteMarlin
import telebot
import config
import sqlite3


bot = telebot.TeleBot(config.TOKEN)
conn = sqlite3.connect('shops.db')

def get_row(text):
    cur = conn.cursor()
    data = cur.execute("SELECT about FROM data WHERE shop = ?", (text,)).fetchone()
    cur.close()
    return data

@bot.message_handler(commands=['start'])
def message(message):
    bot.send_message(message.chat.id, f"Привет, {message.chat.first_name}!")
    

@bot.message_handler(func=lambda message: True)
def send_data(message)
    data = get_row(message.text) # text - по которому выбираете запись в db
    bot.reply_to(message.chat.id, data[0]) # 0 индекс столбца, обычно 0 - это id. Замените на нужный индекс столбика

bot.polling(none_stop=True)

Вообще-то так никто не делает, это плохая затея. Вам нужно изучить SQL и безопасность. Но в качестве примера, как делать выборку из базы и отправлять в чат-бот - сойдет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
data = cur.execute("SELECT about FROM data WHERE shop = ?", (text,)).fetchone()

SQL Injection found
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы