@kr1ep

Ошибка в отправке фото в telegram-боте?

Здравствуйте, учусь создавать ботов в telegram и пытаюсь сделать так, что бы при нажатии кнопки "Фото" он отправлял случайное фото из папки, но вылетает ошибка о том, что элемента "s" нету в директории(папка называется "images", может это как-то связанно). В чем может быть проблема?
import random
import telebot
from telebot import types

token = ''

bot = telebot.TeleBot(token)

@bot.message_handler(commands=['start'])

def meet_user(message):

    markups = types.ReplyKeyboardMarkup(resize_keyboard=True)

    video_button = types.InlineKeyboardButton('Видео')
    photo_button = types.InlineKeyboardButton('Фото')

    markups.add(video_button, photo_button)

    bot.send_message(message.from_user.id, '''Привет, я могу отправлять разные картинки!''')
    bot.send_message(message.from_user.id, 'Используй кнопки снизу, что бы управлять мной!', reply_markup=markups)

    bot.register_next_step_handler(message, functions)

def functions(message):
    if message.text == 'Фото':
        photo = open(random.choice(r'C:\путь к папке\images\*'), 'rb')
        bot.send_photo(message.from_user.id, photo)

bot.polling(non_stop=True, interval=0)
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Эта конструкция выглядит нерабочей.
open(random.choice(r'C:\путь к папке\images\*'), 'rb')

open ожидает путь к файлу. А random.choice ожидает список или множество. А r'C:\путь к папке\images\*' это строка. random.choice в лучшем случае выберет элемент строки (символ) и передаст его на вход open. Open не сможет открыть файл с именем, которое есть случайный символ из строки.

Вам надо сначала при помощи os начитать список файлов, передать его на вход random.choice и затем результат передать на вход open.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы