Я создаю дискодорарного бота, и для этого аспекта бота я хотел, чтобы он играл musi c в голосовом канале. Вот мой код для этого:
@client.command(pass_context=True)
async def play(ctx, url: str):
song_there = os.path.isfile("song.mp3")
try:
if song_there:
os.remove("song.mp3")
print("Removed old song file")
except PermissionError:
await ctx.send("`There's already a song playing, request your song after!`")
return
await ctx.send("`Getting your song ready...`")
voice = get(client.voice_clients, guild=ctx.guild)
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
try:
print("Downloading audio now\n")
ydl.download([url])
except:
await ctx.send("`Error, that was not a valid url.`")
return
for file in os.listdir("./"):
if file.endswith(".mp3"):
name = file
os.rename(file, "song.mp3")
voice.play(discord.FFmpegPCMAudio("song.mp3"), after=lambda e: print("Song done!"))
await ctx.send("`Everything went well. Enjoy!`")
voice.source = discord.PCMVolumeTransformer(voice.source)
voice.source.volume = 0.07
nname = name.rsplit("-", 2)
await ctx.send(f"`Playing: {nname[0]}`")
print("playing\n")
Честно говоря, я получил большую часть информации из онлайн-источников. Однако всякий раз, когда кто-то воспроизводит песню, она появляется во время процесса загрузки песни. Это можно увидеть здесь: https://imgur.com/a/iRr0qwj
Я не против, чтобы они появлялись, но когда они это делают, они перекрывают все остальные мои вкладки и всплывают, так что они главный экран. Я хотел бы, чтобы они всплыли на заднем плане, если я не могу удалить их полностью. Кто-нибудь может помочь? Это было бы довольно непрактично для меня, когда эта функция многократно используется, и я больше не могу использовать свой компьютер (на данный момент бот запускается на моем компьютере) без постоянной минимизации этого экрана.
Я используя windows 10, Python 3,7