为什么我的discord机器人会播放两次歌曲?

2024-09-27 23:17:48 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想让我的discord机器人播放音乐,但当一首歌结束时,它会再次播放。这也适用于skip命令。你必须用它两次。以下是“下一步播放”的代码:

def playNext(self):
    if len(self.musicQueue) > 0:
      self.isPlaying = True

      mURL = self.musicQueue[0][0]['source']

      del self.musicQueue[0][0]

      self.vc.play(discord.FFmpegPCMAudio(mURL, **self.FFEMPEG_OPTIONS), after=lambda e: self.playNext())
    else:
      self.isPlaying = False

这是skip的代码

@commands.command(aliases=['skip'])
  async def s(self, ctx):
    if self.vc != "":
      self.vc.stop()
      await self.playMusic()

对于skip,它给出了已经播放两次音乐的错误,并在第二次播放时停止,如果您让它播放两次,则表示VoiceChannel对象不可订阅。请帮忙


Tags: 代码命令selflenif音乐def机器人
1条回答
网友
1楼 · 发布于 2024-09-27 23:17:48

如果看不到你的musicQueue属性,很难判断,但它看起来像是listlistdict。因此,当您调用del self.musicQueue[0][0]时,您正在删除第一个嵌套列表的第一个元素,但是仅包含空列表的列表的长度仍然大于0

In [1]: a = [[{"source": "abc"}],]
In [2]: len(a)
Out[2]: 1
In [3]: del a[0][0]
In [4]: len(a)
Out[4]: 1
In [5]: a
Out[5]: [[]]

您应该考虑使用^{}^{},以便从^ {< CD9>}或^ {CD10>}删除^ ^ }或^ {CD12>}的项目,以用于^ {CD13>}。这将简化您的代码

相关问题 更多 >

    热门问题