При взаимодействии с динамической инлайн клавиатурой после вывода работает только последняя кнопка
Есть динамическая клавиатура в которую записываются данные из БД sqlite, все данные отображаются, но при нажатии на кнопки функция обработки callback'ов видит только нажатие на последнюю кнопку из списка.
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(callback):
global counter, row, device_serial_numbers, str_row, number, item
device_serial_numbers = []
chat_id = callback.message.chat.id
try:
if callback.message:
if callback.data == 'Админ':
elif callback.data == 'Редактировать список':
counter_of_deleted = 0
for i in range(counter):
try:
bot.delete_message(chat_id, callback.message.id - counter_of_deleted - 1)
counter_of_deleted += 1
except Exception as exception:
print(repr(exception))
try:
try:
cursor = conn.cursor()
cursor.execute(
f'SELECT device_serial_number FROM user_devices;')
device_serial_numbers = cursor.fetchall()
number_of_device_serial_numbers = 1
except Exception as exception:
print(repr(exception))
except Exception as exception:
print(repr(exception))
bot.send_message(chat_id, "Ошибка доступа БД")
mes_id = callback.message.message_id + 1
time.sleep(2)
bot.delete_message(chat_id, mes_id)
callback.data = 'Меню админа'
return callback_inline(callback)
if len(device_serial_numbers) == 0:
bot.send_message(chat_id, "Нет данных о серийных номерах!")
mes_id = callback.message.message_id + 2
time.sleep(2)
bot.delete_message(chat_id, mes_id)
callback.data = 'Меню админа'
return callback_inline(callback)
inline_array = []
for item in device_serial_numbers:
inline_array.append(types.InlineKeyboardButton(item[0], callback_data=f'Удалить{item[0]}'))
#ГДЕ-ТО ТУТ КОСЯК
inline_array.append(types.InlineKeyboardButton("Назад", callback_data='Список серийных номеров Админ'))
keyboard_elements = [[element] for element in inline_array]
keyboard = types.InlineKeyboardMarkup(keyboard_elements)
bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
text='Список серийных номеров',
reply_markup=keyboard)
elif для проверки кнопок:
elif callback.data == f'Удалить{item[0]}':
bot.send_message(chat_id, item[0])
К тому же если к клавиатуре полученной из списка данных добавить еще кнопку (в примере это кнопка "Назад") то она тоже будет работать.