这是我的代码:
async def tracklooper(ctx, timesPlayedTrack):
voice = get(bot.voice_clients, guild=ctx.guild)
if (timesPlayedTrack <= totaltime):
if voice and voice.is_playing():
voice.stop()
print(str(timesPlayedTrack))
run_coroutine_threadsafe(msg.edit(content="Playing "+vTT+" for "+str(timesPlayedTrack)+" time/s"), bot.loop)
voice.play(discord.FFmpegPCMAudio(audio), after=lambda e: asyncio.run_coroutine_threadsafe(tracklooper(ctx, timesPlayedTrack+1)), bot.loop)
voice.is_playing()
else:
run_coroutine_threadsafe(msg.delete(), bot.loop)
run_coroutine_threadsafe(ctx.send("Finished playing "+vTT+" for "+str(totaltime)+" times"), bot.loop)
run_coroutine_threadsafe(looptrack_set_times.delete(), bot.loop)
run_coroutine_threadsafe(ply.delete(), bot.loop)
这就是错误:
voice.play(discord.FFmpegPCMAudio(audio), after=lambda e: asyncio.run_coroutine_threadsafe(tracklooper(ctx, timesPlayedTrack+1)), bot.loop)
^
SyntaxError: positional argument follows keyword argument
我对python语言不是很熟悉,所以我很难找到修复方法
在您的例子中,关键字参数
after=lambda...
应该始终放在函数调用的末尾。您已将bot.loop
放在末尾,这不是一个关键字参数查看API文档,
VoiceClient.play
的唯一参数是source
和after
,因此您应该删除bot.loop
,因为您已经提供了这两个参数相关问题 更多 >
编程相关推荐