@Mak_Sweet

Что за ошибка IndexError: tuple index out of range?

Пытался сделать бота через которого можно выдать доступ к функциям.
def connect():

	con = sqlite3.connect('base.db')
	return con

def sql(con):

	try:

		cursor = con.cursor()
		cursor.execute("CREATE TABLE user(id integer, name text, surname text, username text, rang text, full boolean)")

	except Error:

		pass

sql(connect())

@bot.message_handler(commands=['start'])
def start(message):

	# Проверка + Добавления
	
	con = connect()

	cursor = con.cursor()
	cursor.execute(f"SELECT id FROM user WHERE id = {message.from_user.id}")
	data = cursor.fetchone()

	if data is None:

		noname = "Несуществующий"

		adduser = (message.from_user.id, message.from_user.first_name, message.from_user.last_name, message.from_user.username, noname, False)

		cursor = con.cursor()
		cursor.execute("INSERT INTO user(id, name, surname, username, rang, full) VALUES(?, ?, ?, ?, ?, ?)", adduser)
		con.commit()
		
		pasa = types.InlineKeyboardMarkup(row_width=1)
		checkk = types.InlineKeyboardButton(text="Проверить", callback_data="check")
		pasa.add(checkk)

		bot.send_message(message.chat.id, """Приветствую тебя!\nПока что нету у тебя доступа к боту!\nПожалуйста подождите когда Администратор выдаст вам права!""", reply_markup=pasa)


@bot.callback_query_handler(func=lambda call:True)
def callback_inline(call):

	if call.data == "check":

		con = connect()
		c = con.cursor()

		c.execute("SELECT full FROM user WHERE id = ?",(call.from_user.id, ))

		result = c.fetchone()

		if result:

			full = result[5]

			if full:

				bot.send_message(call.from_user.id, "Вы находитесь в меню!")

			else:

				bot.send_message(call.from_user.id, "У вас недостаточно прав!\nПожалуйста подождите когда Администратор выдаст вам права!")


Ошибка такая:

full = result[5]
IndexError: tuple index out of range
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@Mak_Sweet Автор вопроса
Я понял в чём ошибка. надо было написать так:

con = connect()
c = con.cursor()

c.execute("SELECT * FROM user WHERE id = ?",(message.chat.id, ))

result = c.fetchone()

if result[5]:

	bot.send_message(message.chat.id, "Вы находитесь в меню!")

else:

	bot.send_message(message.chat.id, "У вас недостаточно прав!\nПожалуйста подождите когда Администратор выдаст вам права!")


Вместо full надо было поставить *
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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