Этот вопрос закрыт для ответов, так как повторяет вопрос Почему половина музыкальных ботов в Discordе перестали работать?
Wolf_Yout
@Wolf_Yout

Disnake не воспроизводит mp3 файл, при этом ошибок нет. как исправить?

код(только нужное):
class SMErrors:
	class notChannelErr(Exception): pass
	class notVoiceStateErr(Exception): pass
	class alreadyPlayingErr(Exception): pass

class SongMaster(disnake.PCMVolumeTransformer):
	async def join(ctx: disnake.ApplicationCommandInteraction):
		voice = ctx.author.voice
		if not voice: raise SMErrors.notChannelErr
		if voice:
			await voice.channel.connect()

	async def disconnect(ctx: disnake.ApplicationCommandInteraction):
		voice_state = ctx.guild.voice_client
		if not voice_state:
			raise SMErrors.notVoiceStateErr
		if voice_state:
			await voice_state.disconnect()

	async def play(ctx: disnake.ApplicationCommandInteraction):
		voice_state = ctx.guild.voice_client
		if not voice_state:
			await SongMaster.join(ctx)
		voice_state = ctx.guild.voice_client
		if voice_state.is_playing():
			raise SMErrors.alreadyPlayingErr
		
		voice_state.play(disnake.FFmpegPCMAudio("songs/song.mp3"))

class music(commands.Cog):
	def __init__(self, bot):
		self.bot = bot

	@commands.slash_command(name="play", description="Послушаем музыку?)")
	async def _play(self, ctx: disnake.ApplicationCommandInteraction, prompt:str):
		# await ctx.send("Я не могу воспроизвести трек сейчас, но я могу дать вам ссылку.\nПодождите...")
		# results = sp.search(q=prompt, type="track", limit=1)
		# if results["tracks"]["items"]:
		# 	track_url = results["tracks"]["items"][0]["external_urls"]["spotify"]
		# 	await ctx.edit_original_response(f"Я не могу воспроизвести трек сейчас, но я могу дать вам ссылку.\n**{track_url}**")
		# else:
		# 	await ctx.edit_original_response("Я не смог найти трек.")
		await ctx.response.defer()
		await SongMaster.play(ctx)
		await ctx.send("Я запустил воспроизведение(возможно), но не того что вам надо.")

бот заходит канал, и становится обреченным на 15 минутное раздумие в молчании. Ошибок никаких нет. Pynacl установлен, ffmpeg тоже, mp3 на месте, права есть. но бот категорически молчит, как исправить?
ИЗМЕНЕНО:
по отладочным принтам, бот задумывается о жизни на строке
await voice.channel.connect()
но при этом, если после ввести команду /play повторно, тоесть попасть уже в тот случай когда функция join не вызывается, появляется новая ошибка:
File "c:\Users\user.DESKTOP-A29085V\Documents\Python proj\ReviBot\main.py", line 100, in _play
    await SongMaster.play(ctx)
  File "c:\Users\user.DESKTOP-A29085V\Documents\Python proj\ReviBot\main.py", line 57, in play
    voice_state.play(disnake.FFmpegPCMAudio("songs/song.mp3"))
  File "C:\Users\user.DESKTOP-A29085V\AppData\Local\Programs\Python\Python311\Lib\site-packages\disnake\voice_client.py", line 572, in play
    raise ClientException("Not connected to voice.")
disnake.errors.ClientException: Not connected to voice.

Я думаю, говорить о том что бот при этом остается в канале - не надо.
  • Вопрос задан
  • 70 просмотров
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы