Как сделать с помощью Python библиотеки Telebot чтобы к отправленной рандомной фотографии был привязан соответствующий текст?

Есть функция при которой из списка в рандомном порядке выбирается фоторафия и отправляется, но к ней должен быть привязан текст подоходящий именно к картинке, как это реализовать?

elif message.text.strip() == 'Філософ':
    bot.send_photo(message.chat.id, open(random.choice(photo), 'rb'));

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

Автор решения: mazik7512

Вам нужно где-то хранить данные зависимости, например в БД MySQL или любой другой, исходя из ваших предпочтений.


Структура таблицы будет следующей:

id photo text
1 %путь_к_фото_1% %текст_для_фото_1%
2 %путь_к_фото_2% %текст_для_фото_2%

photo - путь до изображения.

text - подпись к изображению.


UPDATE. Для подключения к MySQL потребуется библиотека PyMySQL, установить ее можно с помощью команды pip install PyMySQL.

import pymysql
from random import randint


def connect_to_db(): 
   con = pymysql.connect('localhost', 'user', 
                         'password', 'database')
   cur = con.cursor()
   return con, cur


def get_random_id(cur):
   cur.execute("SELECT MAX(id) FROM photo_text")
   max_id = cur.fetchone()
   return randint(1, max_id[0])

def get_random_photo_text():
   con, cur = connect_to_db()
   rand_id = get_random_id(cur)
   cur.execute("SELECT photo, text FROM photo_text WHERE id=" + str(rand_id))
   data = cur.fetchone()
   cur.close()
   con.close()
   return data[0], data[1] #data[0] - путь к фото, data[1] - подпись
   
→ Ссылка