150_Kirill_150
@150_Kirill_150
Пытаюсь разрабатываю телеграм бота. Новичок в Pyth

Странная проблема когда команда выполняется одновременно и SQLite делает ошибку?

В общем делаю телеграм бота. Столкнулся в с проблемой SQQLite3. Когда одновременно отправляется команда /gamecreate бот отсылает ошибку: cursor.execute('SELECT ban FROM users WHERE id = ?', (my_id, ))
ProgrammingError: Recursive use of cursors not allowed.

Причём ошибка появляется не всегда. Что я делаю не так?
@bot.message_handler(commands=["gamecreate"])
def createstol(message):
    #Проверка на бан юзера
    my_id = message.chat.id
    cursor.execute('SELECT ban FROM users WHERE id = ?', (my_id, ))
    ban_check = cursor.fetchone()
    ban = str(ban_check[0])
    if ban == 'False':
        #Достаём подходящего игрока для совместной игры
        cursor.execute('SELECT id_1 FROM stol_game WHERE id_2 = 0 AND id_1 != ? AND frend_id = 0', (my_id, ))
        game_id_check = cursor.fetchone()
        #Проверка на игрока, то есть бот ищёт с кем играть
        if game_id_check == None:
            bot.send_message(message.from_user.id, 'Увы, но сейчас не с кем играть')
        else:
            #Создаём рандомные значения от 1 до 6
            brosok1 = random.randint(1, 6)
            brosok2 = random.randint(1, 6)
    
            global vsumme
                    
            vsumme = brosok1 + brosok2
            
            
            @bot.message_handler(content_types=['text'])
            def stavkainput(): #Идёт подключение
                global stavka
                stavka = int(message.text)
                bot.send_message(message.fron_user.id, 'Гуд')
    else:
        bot.send_message(message.from_user.id, 'Ты забанен, обратись к администратору за выевлением причины выдачи бана и просьба, напиши свой id админу. Кстати твой id {}'.format(my_id))
bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bacon
1. А давай ты научишься гуглить, там куча решений этой проблемы, даже есть ссылка на подобный вопрос на этом ресурсе
2.
ban = str(ban_check[0])
if ban == 'False':

if game_id_check == None:
не делай так, за это в нормальном обществе, бьют ногами, разберись с типами данных и как с ними можно работать. И про global забудь, и про определении функции внутри if
Ответ написан
Ваш ответ на вопрос

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

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