Как отправить фото через телеграмм бота?

Рейтинг: 0Ответов: 1Опубликовано: 02.02.2023

Есть файл photos.py, в нем хранятся названия фото.

  • PHOTOS = ["Абакан.jpg", "Абдулино.jpg", "Абинск.jpg", "Агидель.svg", "Агрыз.jpg", "Адыгейск.jpg", "Азнакаево.png", "Азов.jpg", "Ак-Довурак.png", "Алагир.jpg", "Алапаевск.jpg"] В этом массиве не все названия фото.

Есть файл town.py, в нем хранятся города России.

  • towns = ["Абаза", "Абакан", "Абдулино", "Абинск", "Агидель", "Агрыз"] В этом списке не все города.

Как сделать так, чтобы, когда пользователь вводил город, то отправлялось фото этого города. Есть также папка photos_qwerty, в ней хранятся фото.

def get_user_text(message):
    with io.open('towns_for_bot.py', encoding='utf-8') as file_towns:
        with io.open('photos.py') as file_photos:
            if message.text in file_towns.read():
                photo_name = f'{message.text}.jpg'
                bot.send_message(message.chat.id, 'AMOGUS POKUS')
                bot.send_media_group(message.chat.id, [telebot.types.InputMediaPhoto(open(f'{message.text}.jpg', 'rb'))])
            else:
                bot.send_message(message.chat.id, "Такого города нет")```


Ответы

▲ 0

Попробуйте данный вариант:

from towns import towns
from photos import PHOTOS # Вы можете просто импоритировать переменые из ваших файлов .py
def get_user_text(message):
    for p in PHOTOS:
        for t in towns:
            if p.startswinth(t):
                with open(f"photos_qwerty\\{p}", "rb") as photo: 
                    bot.send_photo(message.chat.id, photo)
                break
    else:
        bot.send_message(message.chat.id, "Такого города нет")