Итак, в качестве своего первого «крупного» проекта после начала программирования я решил создать Discord Bot. Проблема здесь в моей команде "пропустить". Как-то это работает, но я не могу понять, как.
def play_next(ctx):
if len(songs_list) >= 2:
print(songs_list,"before del")
del songs_list[0]
print(songs_list[0], "new song")
try:
if os.path.isfile("song.mp3"):
os.remove("song.mp3")
except PermissionError:
print("permissionerror")
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download([songs_list[0]])
for file in os.listdir("./"):
if file.endswith(".mp3"):
os.rename(file, "song.mp3")
voice.play(discord.FFmpegPCMAudio("song.mp3"), after=lambda e: play_next(ctx))
voice.isplaying()
И команда пропуска:
@client.command(pass_context=True)
async def skip(ctx):
voice.stop()
voice.skip()
try:
os.remove("song.mp3")
except:
pass
play_next(ctx)
Я знаю, что это не лучший способ справиться с этим, но я только начинаю писать код, и вот как я заставил его работать. В команде skip, когда я не использовал voice.skip (), я бы получил PermissionError, распечатанный в консоли.
С его включением я вместо этого получаю сообщение «Объект VoiceClient» не имеет атрибута "скип", но пока все работает по порядку. Может кто-нибудь объяснить почему? Я имею в виду, что если пропуска не существует, то почему он работает? И как обойти PermissionError?