【问题标题】:SyntaxError: positional argument follows keyword argument [discord.py]SyntaxError:位置参数遵循关键字参数 [discord.py]
【发布时间】:2020-08-31 21:44:41
【问题描述】:

这是我的代码:

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 语言不是很熟悉,所以我很难找到解决方法。

【问题讨论】:

标签: python python-3.x discord.py discord.py-rewrite


【解决方案1】:

关键字参数,在您的情况下为after=lambda...,应始终放在函数调用的末尾。您已将bot.loop 放在末尾,这不是关键字参数。

查看 API 文档,VoiceClient.play 的唯一参数是 sourceafter,因此您应该删除 bot.loop,因为您已经提供了这两个参数。

【讨论】:

    猜你喜欢
    • 2022-11-03
    • 2017-05-21
    • 2020-11-18
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多