Çözüldü Discord.py müzik botu "AttributeError: 'NoneType' object has no attribute 'read'" hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Mesaj gönderimine kapalı.

FazliBasturk

Hectopat
Katılım
10 Haziran 2020
Mesajlar
805
Çözümler
7
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar, aşağıdaki kodlar ile bir müzik açtıktan sonra vb. herhangi bir sorun olmuyor, her fonksiyonu tam ama bir tek döngülerde hata veriyor.
Eğer bir müziği döngüye alırsam müzik bittikten sonra tekrar oynatması gerekirken çalmayı bırakıyor.
Örnek ekran görüntüsü:

1617787233964.png


Embed mesajı gönderiyor ama tekrar oynatmıyor.
Aynı zamanda şöyle bir hata alıyorum:

[CODE title="Hata Mesajı"]Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 603, in run
self._do_run()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 590, in _do_run
data = self.source.read()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 543, in read
ret = self.original.read()
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 228, in read
ret = self._stdout.read(OpusEncoder.FRAME_SIZE)
AttributeError: 'NoneType' object has no attribute 'read'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 616, in _call_after
self.after(error)
File "main.py", line 238, in play_next_song
raise VoiceError(str(error))
VoiceError: 'NoneType' object has no attribute 'read'
[/CODE]

Nasıl düzeltebilirim? internette araştırdım fakat bir sonuca ulaşamadım. :/

Kodlar:
Hiç kimse bilmiyor mu :(
 
Çözüm
Biliyorum, bayağı geç kaldım bir cevap yazmak için ama hâlâ bir çözüm bulamadıysan yazacaklarımı bir deneyebilir misin?

Kodunda 218. satırdaki audio_player_task fonksiyonunu aşağıdaki kodla değiştirmen gerekiyor sanırım.

[CODE lang="python" title="Yeni audio_player_task fonksiyonu"]async def audio_player_task(self):
while True:
self.next.clear()
self.now = None

if self.loop == False:

try:
async with timeout(180): # 3 minutes
self.current = await self.songs.get()
except asyncio.TimeoutError:
self.bot.loop.create_task(self.stop())
self.exists = False
return

self.current.source.volume = self._volume
self.voice.play(self.current.source, after=self.play_next_song)
await self.current.source.channel.send(embed=self.current.create_embed())

elif self.loop == True:
self.now = discord.FFmpegPCMAudio(self.current.source.stream_url, **YTDLSource.FFMPEG_OPTIONS)
self.voice.play(self.now, after=self.play_next_song)

await self.next.wait()[/CODE]
Biliyorum, bayağı geç kaldım bir cevap yazmak için ama hâlâ bir çözüm bulamadıysan yazacaklarımı bir deneyebilir misin?

Kodunda 218. satırdaki audio_player_task fonksiyonunu aşağıdaki kodla değiştirmen gerekiyor sanırım.

[CODE lang="python" title="Yeni audio_player_task fonksiyonu"]async def audio_player_task(self):
while True:
self.next.clear()
self.now = None

if self.loop == False:

try:
async with timeout(180): # 3 minutes
self.current = await self.songs.get()
except asyncio.TimeoutError:
self.bot.loop.create_task(self.stop())
self.exists = False
return

self.current.source.volume = self._volume
self.voice.play(self.current.source, after=self.play_next_song)
await self.current.source.channel.send(embed=self.current.create_embed())

elif self.loop == True:
self.now = discord.FFmpegPCMAudio(self.current.source.stream_url, **YTDLSource.FFMPEG_OPTIONS)
self.voice.play(self.now, after=self.play_next_song)

await self.next.wait()[/CODE]
 
Çözüm
Yok sıkıntı olmaz, hâlâ bir çözüm bulamadım :D Sadece anladığım kadarıyla aynı ffmpeg 2 kere kullanılamıyormuş ama onu da çözemedim. Sizinkini deneyeyim, çok teşekkürler.

Teşekkürler, şu anda tam istediğim gibi çalışıyor. Çok sağ olun :)
 
Durum
Mesaj gönderimine kapalı.

Yeni konular

Geri
Yukarı