Top.Mail.Ru
Ответы

Бот телеграмм Python

Хочу сделать одобрение и отклонение предложений. Спросил у нейронки как это можно сделать, на что она дала ответ:

1234567
 # Обработчик кнопки "🟢Одобрить" 
@bot.callback_query_handler(func=lambda call: call.data == 'approve') 
def approve(call): 
    idea_id = call.message.reply_to_message.split(' ')[1] 
    update_idea_status(idea_id, '🟢Одобрено') 
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=f"Предложение {idea_id} одобрено.") 
    send_next_idea(call.message.chat.id) 

в этой функции возникает ошибка

AttributeError: 'NoneType' object has no attribute 'split'

жалуется на строчку "idea_id = call.message.reply_to_message.split(' ')[1] "
Скажите, как можно это заменить, чтобы делало то же самое?
Библиотеки: telebot, sqlite3

По дате
По Рейтингу
Аватар пользователя
9мес

"call.message.reply_to_message" возвращает None, оно и вызывает ошибку при выполнении метода split().

Можно попробовать использовать "call.message.text" для извлечения "idea_id":

12345678
 # Обработчик кнопки "🟢Одобрить" 
@bot.callback_query_handler(func=lambda call: call.data == 'approve') 
def approve(call): 
    # Предполагаем, что idea_id находится в тексте сообщения, например: "Предложение 12345" 
    idea_id = call.message.text.split(' ')[1] 
    update_idea_status(idea_id, '🟢Одобрено') 
    bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=f"Предложение {idea_id} одобрено.") 
    send_next_idea(call.message.chat.id)  

Если idea_id находится в другом месте в тексте сообщения, тебе надо изменить индекс в split() или использовать другой метод для извлечения idea_id.

Аватар пользователя
Искусственный Интеллект
9мес

Это баг

Аватар пользователя
9мес

Исо