Предотвращение ошибки telegram telebot message is empty

@bot.message_handler(commands=['check'])
     def main(message):
         text = message.text.split()
         id = text[1]
     
         c.execute(f"SELECT proofs FROM articles WHERE user_id = {id}")
         rows = c.fetchall()
         bot.send_message(message.chat.id, rows)

вот отрывок кода где человек командой получает информацию о по айди (/check 0000000000), но если этого айди нету в базе бот прекращает работу и пишет ошибку

telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: message text is empty*

Помогите предотвратить данную ошибку и просто если айди нету в базе данных написать пользователю текст "данного айди нету в базе данных"


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

Автор решения: Кирилл Каспарьянц

Как мы знаем, текст сообщения не может быть пустой. Если же у тебя rows пустой, то и сообщение пустое. А так нельзя. Сделай фильтрацию результата:

@bot.message_handler(commands=['check'])
def main(message):
    text = message.text.split()
    id = text[1]

    c.execute(f"SELECT proofs FROM articles WHERE user_id = {id}")
    rows = c.fetchall()
    # bot.send_message(message.chat.id, rows) (вызывает ошибку если пусто)
    if not rows: 
        bot.send_message(message.chat.id, "Инфо не найдено!")
    else: 
        bot.send_message(message.chat.id, rows)

Ничего страшного, что ты это не предусмотрел. Бывает. Но "заруби на носу": если переменная может быть пустой там, где это не надо, надо сделать обработку значения.

→ Ссылка