Каталога не существует, хотя он есть
Я создаю на python telegram бота Remote Controller (пульт управлением фильмами на ноутбуках). Я недавно переходил с одного компьютера на другой и у меня возникла ошибка в боте (если что на старом была ubuntu, на новом kubuntu). Бот по идее, когда я нажимаю кнопку, должен выпадать список фильмов, которые есть в папке. В боте происходит такой процесс, что с помощью функции os.listdir() он получает список файлов в папке, потом бот этот список выводит, как inline кнопки, если нажмешь на одну из кнопок откроется фильм. Я посмотрел ошибку, дело в том что он не может получить этот список, то есть говорит: "Каталога не существует". Таким образом я попробовал вставить другую папку, но все равно не получилось. Помогите, пожалуйста! Вот мой код главного файла:
#!/usr/bin/python3
#Подключаем нужные библиотеки
import os
from aiogram import Bot, Dispatcher, executor, types
from config import bot_token, admin
import murkup as nav
#создаем объекты и первоначальные переменные
bot = Bot(token=bot_token)
dp = Dispatcher(bot)
os.system("amixer -c 0 set Master 80%")
v = 80
#Приветствие по команде старт
@dp.message_handler(commands=['start'])
async def command_start(mes: types.Message(admin)):
await bot.send_message(mes.from_user.id, "Привет!", reply_markup=nav.mainMenu)
@dp.message_handler()
async def bot_message(mes: types.Message(admin)):
global v
# Регулируем громкость
if mes.text == "➕":
await bot.delete_message(mes.from_user.id, mes.message_id-2)
await bot.delete_message(mes.from_user.id, mes.message_id-1)
v += 2
os.system(f"amixer -c 0 set Master {v}%")
await bot.send_message(admin, f"Громкость: {v}%", reply_markup=nav.mainMenu)
if mes.text == "➖":
await bot.delete_message(mes.from_user.id, mes.message_id-2)
await bot.delete_message(mes.from_user.id, mes.message_id-1)
v -= 2
os.system(f"amixer -c 0 set Master {v}%")
await bot.send_message(admin, f"Громкость: {v}%", reply_markup=nav.mainMenu)
# Промотка вперед и назад
if mes.text == "⏩":
await bot.delete_message(mes.from_user.id, mes.message_id)
os.system( "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek int64:10000000")
if mes.text == "⏪":
await bot.delete_message(mes.from_user.id, mes.message_id)
os.system("dbus-send --print-reply --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Seek int30:10000000")
# Побольше экран экран
if mes.text == "↕️":
await bot.delete_message(mes.from_user.id, mes.message_id)
os.system("dbus-send --print-reply --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.fullscreen")
# Выбор фильма
if mes.text == "Выбрать фильм":
await bot.delete_message(mes.from_user.id, mes.message_id)
await bot.send_message(admin, "Выберете фильм", reply_markup=nav.choice())
#Пауза и пуск
if mes.text == "⏯":
os.system("qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause")
await bot.delete_message(mes.from_user.id, mes.message_id)
await bot.send_message(admin, "Фильм либо остановлен, либо включен.", reply_markup=nav.mainMenu)
@dp.callback_query_handler(text_contains="/")
async def open_m(call: types.CallbackQuery):
os.system(f"xdg-open <path{call.data}>")
await bot.send_message(admin, "Фильм включен. Приятного просмотра! 🙂", reply_markup=nav.mainMenu)
await bot.delete_message(call.from_user.id,call.message.message_id)
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)
Код файла, который нас больше всего интересует:
import os
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton,InlineKeyboardMarkup,InlineKeyboardButton
# Основное меню
# Кнопки изменения громкости
btnP = KeyboardButton('➕')
btnM = KeyboardButton("➖")
btnV = KeyboardButton('⏩')
btnN = KeyboardButton("⏪")
btnF = KeyboardButton("↕️")
# Пауза
btnPause = KeyboardButton("⏯")
# Кнопка перехода на другое меню
btnChoice = KeyboardButton("Выбрать фильм")
# Отоброжение кнопок основного меню
mainMenu = ReplyKeyboardMarkup(resize_keyboard=True).add(btnM,btnP,btnF,btnN,btnPause,btnV,btnChoice)
# Меню выбора фильма
def choice():
lis = os.listdir(path='file:///home/user/Загрузки')
choiceMenu = InlineKeyboardMarkup(row_width=1)
for i in lis:
choiceMenu.insert(InlineKeyboardButton(text=f"{i}",callback_data=f"/{i}"))
return choiceMenu
Ошибка:
Очень хочу возобновить своего бота.