Телеграмм бот выдает ошибку при поиска файла в списке
Суть бота в том, чтобы когда он замечал конкретное слово он отправлял фотографию. Сделал список, который состоит из внутренностей конкретной папки, однако, когда бот все таки реагирует на слово, то выдает ошибку, что нужного файла в папке нет, хотя он есть
import os
import pymorphy3
import telebot
import random
bot = telebot.TeleBot('API') #задаем переменную, обращаемся к библиотеке, Telebot и присваеваем API
directory = r'C:\Directory'
photos = os.listdir(directory)
def check_words_for_photo(message):
words_list = ['старт', '', '']
morph = pymorphy3.MorphAnalyzer()
for word in message.split():
normal_word = morph.parse(word)[0].normal_form
if normal_word in words_list:
return True
return False
@bot.message_handler(content_types=['text']) #обработка команды
def main(message):
# список путей до фото
photo_list = os.listdir(directory)
print(photo_list)
if check_words_for_photo(message.text):
photo_random = random.choice(photo_list)
bot.send_photo(message.chat.id, photo=open(photo_random, 'rb'))
bot.polling(none_stop=True)
Ответы (1 шт):
Автор решения: mrBars1k
→ Ссылка
Проблема возникает из-за того, что Вы передаёте только название файла, а не полный путь к нему. Поэтому Python не может его найти.
photo_list = os.listdir(directory)
print(photo_list)
if check_words_for_photo(message.text):
photo_random = random.choice(photo_list)
# Объединяем путь к директории и название файла, чтобы получить полный путь;
photo_path = os.path.join(directory, photo_random)
bot.send_photo(message.chat.id, photo=open(photo_path, 'rb'))