Не работает скрипт end нажатия на кнопку при нажатии кнопки markup

Доброго времени суток,

Всё работает за исключением последней кнопки которая должна по нажатию на неё выводить сообщение но при нажатии вылетает ошибка:

Windows PowerShell

Попробуйте новую кроссплатформенную оболочку PowerShell (https://aka.ms/pscore6)

(venv) PS C:\Users\d.chapaev\Desktop\TGBot> python main.py
2022-08-12 16:24:38,075 (__init__.py:878 MainThread) ERROR - TeleBot: "Infinity polling exception: 'NoneType' object is not subscriptable"
2022-08-12 16:24:38,080 (__init__.py:880 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "C:\Users\d.chapaev\PycharmProjects\TGBot\venv\lib\site-packages\telebot\__init__.py", line 874, in infinity_polling
    self.polling(non_stop=True, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\d.chapaev\PycharmProjects\TGBot\venv\lib\site-packages\telebot\__init__.py", line 946, in polling
    self.__threaded_polling(non_stop=non_stop, interval=interval, timeout=timeout, long_polling_timeout=long_polling_timeout,
  File "C:\Users\d.chapaev\PycharmProjects\TGBot\venv\lib\site-packages\telebot\__init__.py", line 1021, in __threaded_polling
    raise e
  File "C:\Users\d.chapaev\PycharmProjects\TGBot\venv\lib\site-packages\telebot\__init__.py", line 977, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\d.chapaev\PycharmProjects\TGBot\venv\lib\site-packages\telebot\util.py", line 154, in raise_exceptions
    raise self.exception_info
  File "C:\Users\d.chapaev\PycharmProjects\TGBot\venv\lib\site-packages\telebot\util.py", line 98, in run
    task(*args, **kwargs)
  File "C:\Users\d.chapaev\Desktop\TGBot\main.py", line 48, in search
    val1 = db_table_val(message.text)
  File "C:\Users\d.chapaev\Desktop\TGBot\main.py", line 22, in db_table_val
    return film.fetchone()[0]
TypeError: 'NoneType' object is not subscriptable

Вот сам код:

    import telebot
from telebot import types
from pathlib import Path
import sqlite3

bot = telebot.TeleBot('Token')
ph = open('test.jpg', 'rb')
db_fn = Path("C:/Users/d.chapaev/Desktop/TGBot/db.db")

try:
    conn = sqlite3.connect(db_fn, check_same_thread=False)
    cursor = conn.cursor()
except sqlite3.Error as error:
    print("Error", error)
if not (db_fn.exists() and db_fn.stat().st_size > 0):
    raise FileNotFoundError(f"file [{db_fn.resolve()}] is empty or doesn't exist!")


def db_table_val(number: int):
    film = cursor.execute("SELECT name FROM list WHERE id=?", (number,))
    conn.commit()
    return film.fetchone()[0]


def db_table_pic(picnumber: int):
    pics = cursor.execute("SELECT pic FROM list WHERE id=?", (picnumber,))
    conn.commit()
    return pics.fetchone()[0]


@bot.message_handler(commands=["start"])
def start(message):
        kb1 = types.InlineKeyboardMarkup()
        kb1.add(types.InlineKeyboardButton(text='?НАЗВАНИЯ ФИЛЬМОВ?', callback_data='button'))
        bot.send_photo(message.chat.id, photo=ph, caption='?ВСЕ БЕСПЛАТНЫЕ ФИЛЬМЫ?                                                   ЖМИ НА КНОПКУ ??? «УЗНАТЬ НАЗВАНИЯ ФИЛЬМОВ»', reply_markup=kb1)


@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.data == 'button':
        bot.send_message(call.message.chat.id, '?ДЛЯ ПРОСМОТРА ФИЛЬМА ВВЕДИТЕ КОД В ФОРМАТЕ<<123>>')


@bot.message_handler(content_types=['text'])
def search(message):
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        btn1 = types.KeyboardButton("Искать фильмы")
        val1 = db_table_val(message.text)
        pic1 = db_table_pic(message.text)
        markup.add(btn1)
        bot.send_photo(message.chat.id, photo=pic1, caption=val1, reply_markup=markup)


@bot.message_handler(content_types=['text'])
def end(message):
    if message.text == "Искать фильмы" :
        bot.send_message(message.chat.id, text="?ДЛЯ ПРОСМОТРА ФИЛЬМА ВВЕДИТЕ КОД В ФОРМАТЕ<<123>>")


bot.infinity_polling()

Ответы (1 шт):

Автор решения: Дмитрий

Разобрался сам, проблема была в хэндлерах с одинаковыми типами данных, решилось через объединение содержимого двух хэндлеров в одном через цикл if:

    @bot.message_handler(content_types=['text'])
def start_message(message):
    if message.text == "?ИСКАТЬ ФИЛЬМЫ?":
        bot.send_message(message.chat.id, '?ДЛЯ ПРОСМОТРА ФИЛЬМА ВВЕДИТЕ КОД В ФОРМАТЕ<<123>>')
    else:
        val1 = db_table_val(message.text)
        pic1 = db_table_pic(message.text)
        rkb = types.ReplyKeyboardMarkup(one_time_keyboard=True, resize_keyboard=True)
        rkb.add('?ИСКАТЬ ФИЛЬМЫ?')
        if pic1 == None:
            bot.send_message(message.chat.id,'Фильм № ' + message.text + ' называется:             ' + val1, reply_markup=rkb)
        else:
            bot.send_photo(message.chat.id, photo=pic1, caption='Фильм № '+message.text+' называется:             '+val1, reply_markup=rkb)
→ Ссылка