Бот телеграмм, база данных sqlite3

Максим Грушин

Пользователь
Пользователь
Апр 10, 2020
63
8
8
19
Тюмень
Я делаю бота викторина. И к сожалению я не знаю, как из баз данных, а именно из таблицы взять рандомные вопросы и ответы на них.
Потом уже брать вопросы и отправлять пользователю. Потом сверять ответ к правильному ответу и выбирать правильно или не правильно.

Вот код
Python:
import telebot
import config
import time
from telebot import types
import sqlite3

bot = telebot.TeleBot(config.token)

commands = "/start, /help, /play, /help_play"


@bot.message_handler(commands=['start'])
def start_command(message):
    bot.send_message(message.chat.id, "Привет!\nЯ бот викторина, если ты хочешь сыграть то введи /play\n"
                                      "Если тебе нужна помощь по всему боту, то введи /help")



@bot.message_handler(commands=['help'])
def help_command(message):
    bot.send_message(message.chat.id, "Вот мои команды\n" + commands)



@bot.message_handler(commands=['play'])
def play_command(message):
    # Клавиатура для команды play
    keyboard = types.InlineKeyboardMarkup()
    yes = types.InlineKeyboardButton(text="Да", callback_data="yes")
    keyboard.add(yes)
    no = types.InlineKeyboardButton(text="Нет", callback_data="no")
    keyboard.add(no)

    bot.send_message(message.chat.id, "Вы готовы играть в викторину?", reply_markup=keyboard)



# Клавиатура для жанров
keyboard_genre = types.InlineKeyboardMarkup()
sport = types.InlineKeyboardButton(text='Спорт', callback_data='sport')
keyboard_genre.add(sport)



@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    if call.data == 'yes':
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Хорошо, выберите жанр.", reply_markup=keyboard_genre)
    elif call.data == 'sport':
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Начинаем через 3 секунды\n Введите да, если готовы\nВведите нет если не готовы")
    elif call.data == 'no':
        bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Хорошо, выходим...")


def sql_fetch():
    conn = sqlite3.connect("sport.db")
    with conn:
        cur = conn.cursor()
        cur.execute('SELECT * FROM questions')

        while True:
            row = cur.fetchone()

            if row == None:
                break
            print(row[0])
    
    conn.close()


@bot.message_handler(content_types=['text'])
def sport(message):
    if message.text.lower() == 'да':
        time.sleep(1)
        bot.send_message(message.chat.id, "3")
        time.sleep(1)
        bot.send_message(message.chat.id, "2")
        time.sleep(1)
        bot.send_message(message.chat.id, "1")
        time.sleep(1)
        bot.send_message(message.chat.id, "Игра началась")
        sql_fetch()
    elif message.text.lower() == 'нет':
        bot.send_message(message.chat.id, "Хорошо, выходим...")
        time.sleep(1)


if __name__ == "__main__":
    bot.polling(none_stop=True)
 

Insomnia78

Пользователь
Пользователь
Май 3, 2020
20
9
3
Дергаешь данные из бд в список и с помощью choice достаешь вопрос-ответ
 
  • Мне нравится
Реакции: Максим Грушин

Максим Грушин

Пользователь
Пользователь
Апр 10, 2020
63
8
8
19
Тюмень
Дергаешь данные из бд в список и с помощью choice достаешь вопрос-ответ
А можете написать пример? Просто в инете ищу, не могу найти?
 

Форум IT Специалистов