Задать вопрос
@Dark1448

Почему не записываются данные в таблицу бд SQlite3?

При запуске кода не выдаётся никаких ошибок, но функционал в боте не работает, а именно при нажатии на кнопку "Поиск собеседника" данные не записываются в таблицу, соответсвенно код дальше не выполняется. В чём может быть причина?

Это само тело бота

import config
import telebot
from telebot import types
from database import Database

db = Database('db.db')
bot = telebot.TeleBot(config.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, 'Привет! Добро пожаловать в Анонимный Чат. Нажми на "Поиск собеседника' .format(message.from_user) , reply_markup = markup)

@bot.message_handler(commands=['menu'])
def menu(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard = True)
item1 = types.KeyboardButton('Поиск собеседника')
markup.add(item1)

bot.send_message(message.chat.id, 'Меню' .format(message.from_user) , 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('❌ Остановить поиск')
markup.add(item1)
db.add_queue(message.chat.id)
bot.send_message(message.chat.id, '⌛️Поиск собеседника', reply_markup=markup)
elif message.text == '❌ Остановить поиск':
db.delete_queue(message.chat.id)
bot.send_message(message.chat.id, '❌Поиск остановлен,введите /menu')

bot.polling(none_stop=True)

А вот здесь работаю в БД

import sqlite3

class Database:
def __init__(self, database_file):
self.connection = sqlite3.connect(database_file, check_same_thread=False)
self.cursor = self.connection.cursor()

def add_queue(self,chat_id):
with self.connection:
return self.cursor.execute("INSERT INTO `queue` (`chat_id`) VALUES(?)", (chat_id,))

def delete_queue(self,chat_id):
with self.connection:
return self.cursor.execute("DELETE FROM `queue` (`chat_id`) VALUES(?)", (chat_id,))
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Razraaab
Лучше не используйте вообще sqlite3 для работы с тг ботами, используйте aiosqlite и другие асинхронные версии для работы с базами данных. Лучший вариант sqlachemy тут вы сможете менять бд почти не меняя кода, а также не придется писать запросы самому.

А и ответ на ваш вопрос, вы коммит не делаете
self.cursor.execute("Ваш запрос')
self.connection.commit()
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы