Мой код(Взял с рандомного сайта и переделал под себя)class songs():
async def join_to_channel(ctx):
voice = ctx.author.voice
if not voice: return "nothingChannel"
if voice:
await voice.channel.connect()
return "Success"
async def exit(ctx):
voice_state = ctx.guild.voice_client
if voice_state.is_connected():
await voice_state.disconnect()
return "Success"
else:
return "notConnected"
async def stop(ctx):
voice_state = ctx.guild.voice_client
if voice_state.is_playing():
await voice_state.stop()
await exit(ctx)
return "Success"
else:
return "noMusic"
async def play_song_file(ctx):
voice_state = ctx.guild.voice_client
if not voice_state:
voice = ctx.author.voice
if not voice: return "nothingChannel"
if voice:
await voice.channel.connect()
voice_state = ctx.guild.voice_client
voice_state.play(disnake.FFmpegAudio(executable="ffmpeg.exe", source="music.mp3", after=None))
return "Success"
async def pause(ctx):
voice_state = ctx.guild.voice_client
if voice_state.is_playing():
await voice_state.pause()
return "Success"
else:
return "noMusic"
async def resume(ctx):
voice_state = ctx.guild.voice_client
if voice_state.is_playing():
if voice_state.is_paused():
await voice_state.resume()
return "Success"
else:
return "notPaused"
else:
return "notMusic"
class Music(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.slash_command(name="test",description="Команда для проверки состояния бота")
async def test(self, ctx):
await ctx.send("Всё - ок!")
@commands.slash_command(name="join",description="Вызвать бота к подключению к вам.")
async def join(self, ctx):
await ctx.response.defer()
st = await songs.join_to_channel(ctx)
if st == "nothingChannel":
return await ctx.send(embed=disnake.Embed(title="<a:wrongCheckmark:1047126198330859580> Ошибка",description="Для этого, зайдите в канал",color=disnake.Color.red()))
elif st == "Success":
await ctx.send(embed=disnake.Embed(title="<a:correctCheckmark:1047126198330859580>",color=0x228b22))
@commands.slash_command(name="play",description="Начать воспроизведение файла")
async def play(self, ctx):
await ctx.response.defer()
st = await songs.play_song_file(ctx)
if st == "nothingChannel":
return await ctx.send(embed=disnake.Embed(title="<a:wrongCheckmark:1047126198330859580> Ошибка",description="Для этого, зайдите в голосовой канал!",color=disnake.Color.red()))
elif st == "Success":
return await ctx.send(embed=disnake.Embed(title="<a:correctCheckmark:1047126198330859580>",color=0x228b22))
@commands.slash_command(name="stop",description="Остановить музыку")
async def stop_music(self, ctx):
await ctx.response.defer()
st = await songs.stop(ctx)
if st == "noMusic":
return await ctx.send(embed=disnake.Embed(title="<a:wrongCheckmark:1047126198330859580> Ошибка",description="Но сейчас же ничего не играет...",color=0x228b22))
elif st == "Success":
return await ctx.send(embed=disnake.Embed(title="<a:correctCheckmark:1047126198330859580>",color=0x228b22))
@commands.slash_command(name="exit",description="Покинуть канал")
async def exit_channel(self, ctx):
await ctx.response.defer()
st = await songs.exit(ctx)
if st == "notConnected":
return await ctx.send(embed=disnake.Embed(title="<a:wrongCheckmark:1047126198330859580> Ошибка",description="Я итак не подключен.",color=0x228b22))
elif st == "Success":
return await ctx.send(embed=disnake.Embed(title="<a:correctCheckmark:1047126198330859580>",color=0x228b22))
Бот заходит ко мне в голосовой канал, но играть НЕ начинает, а в консоли тем временем такая ошибка:
Exception ignored in: <function AudioSource.__del__ at 0x000001FFD826C3A0>
Traceback (most recent call last):
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\player.py", line 100, in __del__
self.cleanup()
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\player.py", line 221, in cleanup
self._kill_process()
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\player.py", line 172, in _kill_process
proc = self._process
AttributeError: 'FFmpegAudio' object has no attribute '_process'
Ignoring exception in slash command 'play':
Traceback (most recent call last):
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\ext\commands\slash_core.py", line 730, in invoke
await call_param_func(self.callback, inter, self.cog, **kwargs)
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\ext\commands\params.py", line 1022, in call_param_func
return await maybe_coroutine(safe_call, function, **kwargs)
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\utils.py", line 599, in maybe_coroutine
return await value
File "C:\Users\Вульф\OneDrive\Документы\Python Projects\VEX admin\main.py", line 83, in play
st = await songs.play_song_file(ctx)
File "C:\Users\Вульф\OneDrive\Документы\Python Projects\VEX admin\main.py", line 39, in play_song_file
voice_state.play(disnake.FFmpegAudio(executable="ffmpeg.exe", source="/music.mp3", after=None))
TypeError: __init__() missing 1 required keyword-only argument: 'args'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\ext\commands\interaction_bot_base.py", line 1353, in process_application_commands
await app_command.invoke(interaction)
File "C:\Users\Вульф\AppData\Local\Programs\Python\Python39\lib\site-packages\disnake\ext\commands\slash_core.py", line 739, in invoke
raise CommandInvokeError(exc) from exc
disnake.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: __init__() missing 1 required keyword-only argument: 'args'