TypeError: Music.on_wavelink_track_end() got multiple values for argument 'track'
TypeError: Music.on_wavelink_track_end() got multiple values for argument 'track'
我正在制作 discord 音乐机器人并使用 wavelink 库。
我写这段代码:
@commands.Cog.listener()
async def on_wavelink_track_end(player: wavelink.Player, track: wavelink.Track):
ctx = player.ctx
vc: player = ctx.voice_client
if vc.loop:
return await vc.play(track)
next_song = vc.queue.get()
await vc.play(next_song)
await ctx.send(f"Сейчас играет {next_song.title}")
@commands.command()
async def play(self,ctx: commands.Context, *, search: wavelink.YouTubeTrack):
if not ctx.author.voice:
return await ctx.send("Ты не в голосовом канале!", delete_after = 10)
if not ctx.voice_client:
vc: wavelink.Player = await ctx.author.voice.channel.connect(cls = wavelink.Player)
else:
vc: wavelink.Player = ctx.voice_client
if vc.queue.is_empty and vc.is_playing:
await vc.play(search)
m = search.duration/60
await ctx.send(f"Сейчас играет `{search.title}` продолжительностью `{round(m, 2)}` минут")
else:
await vc.queue.put_wait(search)
await ctx.send(f"Добавлен {search.title} трек в очередь")
vc.ctx = ctx
setattr(vc, "loop", False)
我也遇到了这个错误
TypeError: Music.on_wavelink_track_end() got multiple values for argument 'track'
另一个命令可以正常工作,但播放命令不会附加到 wavelink 队列,如果我们再次键入 play
只会播放新歌曲。
有什么想法吗?
简单添加自己
async def on_wavelink_track_end(self , player: wavelink.Player, track: wavelink.Track)
@commands.Cog.listener()
async def on_wavelink_track_end(player: wavelink.Player, track: wavelink.Track):
#You need to pass in `self` to here ⤴
因此您的代码将如下所示
@commands.Cog.listener()
async def on_wavelink_track_end(self, player: wavelink.Player, track: wavelink.Track):
ctx = player.ctx
vc: player = ctx.voice_client
if vc.loop:
return await vc.play(track)
next_song = vc.queue.get()
await vc.play(next_song)
await ctx.send(f"Сейчас играет {next_song.title}")
@commands.command()
async def play(self,ctx: commands.Context, *, search: wavelink.YouTubeTrack):
if not ctx.author.voice:
return await ctx.send("Ты не в голосовом канале!", delete_after = 10)
if not ctx.voice_client:
vc: wavelink.Player = await ctx.author.voice.channel.connect(cls = wavelink.Player)
else:
vc: wavelink.Player = ctx.voice_client
if vc.queue.is_empty and vc.is_playing:
await vc.play(search)
m = search.duration/60
await ctx.send(f"Сейчас играет `{search.title}` продолжительностью `{round(m, 2)}` минут")
else:
await vc.queue.put_wait(search)
await ctx.send(f"Добавлен {search.title} трек в очередь")
vc.ctx = ctx
setattr(vc, "loop", False)
This is probably it.
• Sxviaat
我正在制作 discord 音乐机器人并使用 wavelink 库。
我写这段代码:
@commands.Cog.listener()
async def on_wavelink_track_end(player: wavelink.Player, track: wavelink.Track):
ctx = player.ctx
vc: player = ctx.voice_client
if vc.loop:
return await vc.play(track)
next_song = vc.queue.get()
await vc.play(next_song)
await ctx.send(f"Сейчас играет {next_song.title}")
@commands.command()
async def play(self,ctx: commands.Context, *, search: wavelink.YouTubeTrack):
if not ctx.author.voice:
return await ctx.send("Ты не в голосовом канале!", delete_after = 10)
if not ctx.voice_client:
vc: wavelink.Player = await ctx.author.voice.channel.connect(cls = wavelink.Player)
else:
vc: wavelink.Player = ctx.voice_client
if vc.queue.is_empty and vc.is_playing:
await vc.play(search)
m = search.duration/60
await ctx.send(f"Сейчас играет `{search.title}` продолжительностью `{round(m, 2)}` минут")
else:
await vc.queue.put_wait(search)
await ctx.send(f"Добавлен {search.title} трек в очередь")
vc.ctx = ctx
setattr(vc, "loop", False)
我也遇到了这个错误
TypeError: Music.on_wavelink_track_end() got multiple values for argument 'track'
另一个命令可以正常工作,但播放命令不会附加到 wavelink 队列,如果我们再次键入 play
只会播放新歌曲。
有什么想法吗?
简单添加自己 async def on_wavelink_track_end(self , player: wavelink.Player, track: wavelink.Track)
@commands.Cog.listener()
async def on_wavelink_track_end(player: wavelink.Player, track: wavelink.Track):
#You need to pass in `self` to here ⤴
因此您的代码将如下所示
@commands.Cog.listener()
async def on_wavelink_track_end(self, player: wavelink.Player, track: wavelink.Track):
ctx = player.ctx
vc: player = ctx.voice_client
if vc.loop:
return await vc.play(track)
next_song = vc.queue.get()
await vc.play(next_song)
await ctx.send(f"Сейчас играет {next_song.title}")
@commands.command()
async def play(self,ctx: commands.Context, *, search: wavelink.YouTubeTrack):
if not ctx.author.voice:
return await ctx.send("Ты не в голосовом канале!", delete_after = 10)
if not ctx.voice_client:
vc: wavelink.Player = await ctx.author.voice.channel.connect(cls = wavelink.Player)
else:
vc: wavelink.Player = ctx.voice_client
if vc.queue.is_empty and vc.is_playing:
await vc.play(search)
m = search.duration/60
await ctx.send(f"Сейчас играет `{search.title}` продолжительностью `{round(m, 2)}` минут")
else:
await vc.queue.put_wait(search)
await ctx.send(f"Добавлен {search.title} трек в очередь")
vc.ctx = ctx
setattr(vc, "loop", False)
This is probably it.
• Sxviaat