Python telegram-api-bot inline buttons
Подскажите и наведите на путь истинный! У меня проблема с использованием inline кнопок, необходимо создать кнопку при нажатии которой, запускался бы процесс: с последнего отправленного сообщения, из tags выбирались 3 рандомных тега, и, пока-что, только выводились в консоль. Не могу понять как мне перенести данные tags в обработчик:
bot.message_handler(commands=["random"])
def random_post(message):
keyboard = telebot.types.InlineKeyboardMarkup()
random_num = random.randint()
url = f""
print(f"Ссылка - {url}")
try:
response = requests.get(url)
if response.status_code == 200:
data = response.json()
if data:
file = data[0]
tags = file.get("tags").split(" ")
print(f"Теги - {tags}")
#получение информации о имени файла
file_url = file.get("file_url")
#получение информации о типе файла спомощью сплита
file_extension = file_url.split(".")[-1].lower()
#Создание кнопки для поиска изображение с похожими тегами
keyboard = telebot.types.InlineKeyboardMarkup()
button = telebot.types.InlineKeyboardButton("Найти похожее изображение", callback_data = f"tag_button:{",".join(tags)}")#tag_button для call ф button для markup
print(f"ДАННЫЕ ЗАНЕСЕНЫ В КНОПКУ {tags}\n")
button2 = telebot.types.InlineKeyboardButton("Открыть в браузере", url = file_url)
#определение файла то есть понимание какой тип файла в имени и отправка
if file_extension in ["jpg", "jpeg", "png"]:
bot.send_photo(message.chat.id, file_url, caption=f"Код - {random_num}", reply_markup = keyboard)
elif file_extension in ["webm", "mp4", "gif"]:
bot.send_video(message.chat.id, file_url, caption=f"Код - {random_num}", reply_markup = keyboard)
else:
bot.send_message(message.chat.id, f"Формат файла не поддерживается: {file_extension}")
print(f"ОШИБКА!!! ФОРМАТ ФАЙЛА НЕ ПОДДЕРЖИВАЕТСЯ!!! КОД НЕ ОПРЕДЕЛЯЕТ ЕГО ТИП {file_extension}")
else:
bot.send_message(message.chat.id, "Нет данных для отправки.")
else:
bot.send_message(message.chat.id, f"Ошибка при получении данных: {response.status_code}")
except Exception as e:
print(f"Ошибка при выполнении запроса: {e}")
bot.send_message(message.chat.id, "Произошла ошибка при выполнении запроса.")
bot.callback_query_handler(func = lambda call: call.data.startswith("tag_button"))
def handle_tag_button_callback(callback_query):
print(F"ПОЛУЧЕНО К ОБРАБОТКЕ{tags}\n")
tags = callback_query.data.split(':')[1].split(',')
print(f"2ПОЛУЧЕНО К ОБРАБОТКЕ{tags}\n")
bot.send_message(callback_query.message.chat.id, tags)
bot.infinity_polling()