Как сделать чтобы бот выводил рандомное значение с базы данных?

Рейтинг: 1Ответов: 1Опубликовано: 01.05.2023

Ошибок не выдает. При нажатии на команду ничего не выводит. Что я не так сделал?

Код бота:

import telebot
from FilmDatabase import *

bot = telebot.TeleBot('Token')
prepareDb('db/Films.db')

@bot.message_handler(commands=['start'])
def start(message):
    username = message.from_user.first_name
    bot.send_message(message.chat.id, f'Привіт {username}, я Каспер! Хочешь поговорити зі мною чи є якесь питання?')

@bot.message_handler(commands=['stop'])
def stop(message):
    bot.send_message(message.chat.id, f'Радий був допомогти!\n'
                                      f'Якщо захочете поговорити чи потрібна буде допомога введіть знову команду /start')

@bot.message_handler(content_types=["text"])
def text(message):
    if message.chat.type == 'private':
        if message.text == 'Поговорити':
            bot.send_message(message.chat.id, f'Добре, як настрій?' + '\U0001f642')
        if message.text == 'Так собі':
            bot.send_message(message.chat.id, f'Чому? Щось сталось?'
                                              f'Я можу якось допомогти тобі підняти настрій?' + '\U0001f61f')
        if message.text == 'Можеш порекомендувати якийсь фільм?':
            bot.send_message(message.chat.id, f'Так, звісно! Який жанр вас цікавить?\n'
                                              f'/comedia')

@bot.message_handler(commands=['comedia'])
def comedia(message):
        films = getFilms('db/Films.db')
        bot.send_message(message.chat.id, f'З комедій можу порадити: {films}')

bot.polling(none_stop=True)

Код подключения к БД:

import sqlite3
from sqlite3 import Error

def init_conn(path):
    conn = None
    try:
        conn = sqlite3.connect(path)
        print ("Connection established!")
    except Error as e:
        print (e)
        print ("Connection failed!")
    return conn

def init_tables(connection):
    sql = "CREATE TABLE IF NOT EXISTS Comedia(id integer PRIMARY KEY, name_film text NOT NULL);"
    connection.execute(sql)
    
    def prepareDb(name):
        conn = init_conn(name)
        init_tables(conn)
        conn.close()
    
    def getFilms(db):
        sql = "SELECT * FROM `Comedia` ORDER BY RAND() LIMIT 1"
        connection = init_conn(db)
        cursor = connection.cursor()
        connection.set_trace_callback(print)
        cursor.execute(sql)
        connection.commit()
        connection.close()

Ответы

▲ 1Принят

Измените ваш запрос на:

SELECT * FROM `Comedia` ORDER BY random() LIMIT 1