@MyrrhTree

Как прикрепить фотографию к элементу списка в python?

Пишу чатбота для телеграм. При нажатии на кнопку выводится случайный элемент списка (предсказание на день по картам Таро). Нужно, чтобы выводился не только элемент списка, но и фотография карты. Какой командой это можно реализовать?
60c5d0da6f5de291655844.jpeg
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
shabelski89
@shabelski89
engineer
во-первых, не нужно называть переменные ключевыми словами ЯП (list )
во-вторых, в данном случае лучше подходит структура данных - словарь
from pprint import pprint
cards = {'card_' + str(x): {'name': x, 'desc': x, 'photo': x} for x in range(1,22)}
cards['card_21']['name'] = 'Мир'
cards['card_21']['desc'] = 'Завершенность бла бла бла'
cards['card_21']['photo'] = 'C:/Tools/tmp/card_21.png'
pprint(cards)
{'card_1': {'desc': 1, 'name': 1, 'photo': 1},
 'card_10': {'desc': 10, 'name': 10, 'photo': 10},
 'card_11': {'desc': 11, 'name': 11, 'photo': 11},
 'card_12': {'desc': 12, 'name': 12, 'photo': 12},
 'card_13': {'desc': 13, 'name': 13, 'photo': 13},
 'card_14': {'desc': 14, 'name': 14, 'photo': 14},
 'card_15': {'desc': 15, 'name': 15, 'photo': 15},
 'card_16': {'desc': 16, 'name': 16, 'photo': 16},
 'card_17': {'desc': 17, 'name': 17, 'photo': 17},
 'card_18': {'desc': 18, 'name': 18, 'photo': 18},
 'card_19': {'desc': 19, 'name': 19, 'photo': 19},
 'card_2': {'desc': 2, 'name': 2, 'photo': 2},
 'card_20': {'desc': 20, 'name': 20, 'photo': 20},
 'card_21': {'desc': 'Завершенность бла бла бла',
             'name': 'Мир',
             'photo': 'C:/Tools/tmp/card_21.png'},
 'card_3': {'desc': 3, 'name': 3, 'photo': 3},
 'card_4': {'desc': 4, 'name': 4, 'photo': 4},
 'card_5': {'desc': 5, 'name': 5, 'photo': 5},
 'card_6': {'desc': 6, 'name': 6, 'photo': 6},
 'card_7': {'desc': 7, 'name': 7, 'photo': 7},
 'card_8': {'desc': 8, 'name': 8, 'photo': 8},
 'card_9': {'desc': 9, 'name': 9, 'photo': 9}}

как понятно из кода выше, в словарь добавляется ключ 'photo' и значение путь до файла.
и дальше нужно передавать его через бота прочитав файл
with open(cards['card_21']['photo'], "rb") as file:
    data = file.read()
bot.send_photo(message.from_user.id, photo=data)

но перед эти нужно написать функцию, которая будет принимать аргумент - ИД карты и подставлять его в open()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы