Отправка случайной картинки в вк боте vk-api
Делаю бота в вк и хочу сделать функцию, отправляющую случайные картинки из директории Небольшой кусок кода:
def add_ph():
attachments.append('photo{}_{}'.format(upload_img['owner_id'], upload_img['id']))
def send_msg(sender, message, keyboard=None):
authorize.method('messages.send', {
'user_id': sender,
'message': message,
'random_id': get_random_id(),
'attachment': ','.join(attachments)
})
img1=random.choice(os.listdir("C:/Users/10/Desktop/coding/vk_bot/img/"))
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
msg = event.text
sender = event.user_id
attachments=[]
upload_img = upload.photo_messages(photos=img1)[0]
elif msg=='1':
add_ph()
send_msg(sender, 'Фото')
В директории есть две картинки, при попытке написать боту "1" (выполнить функцию) выдает ошибку:
FileNotFoundError: [Errno 2] No such file or directory: 'frog.jpg'
Как можно исправить?
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Функция os.listdir возвращает список из имен папок и файлов. Ваш бот, скорее всего, запускается из папки vk_bot/ (предположительно, это будет активная директория). В img1 будет 'frog.jpg', тогда при отправке картинки поиск будет в активной директории скрипта, т.е. в vk_bot/frog.jpg
Одним из решений будет указывать полный путь для имени картинки
Пример:
abs_path_images = "C:/Users/10/Desktop/coding/vk_bot/img/"
img1 = abs_path_images + random.choice(os.listdir(abs_path_images))