繁体   English   中英

Discord.Py 上的 KeyError

[英]KeyError on Discord.Py

@client.command(description="Pauses the current playing track. Can be resumed with `!resume`.", 
brief="Pauses current track.",aliases=['PAUSE'])
async def pause(ctx):
    guild_id = ctx.message.guild.id
    players[guild_id].pause()

@client.command(description="Resumes the current playing track. Can only be used if current track has 
been paused.",
    brief="Resumes current track.",
    aliases=['RESUME','continue','CONTINUE'])
async def resume(ctx):
    guild_id = ctx.message.guild.id
    players[guild_id].resume()

@client.command(description="Stops the current playing track.",
     brief="Stops current track.",
     aliases=['STOP'])
async def stop(ctx):
    guild_id = ctx.message.guild.id
    players[guild_id].stop()

当我尝试使用暂停、停止和恢复命令时,它给了我 KeyError。 触发该错误的整个代码都在那里。 错误是这样的:

忽略命令停止中的异常:Traceback(最近一次调用最后一次):文件“C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\core.py”,第 83 行,在Wrapped ret = await coro(*args, **kwargs) 文件“C:/Users/emirs/PycharmProjects/discordmasterbot/MASTERBOT.py”,第 163 行,停止播放器[guild_id].stop() KeyError: 708748879079932016

还有另一种类型的错误:

回溯(最近一次调用):文件“C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\bot.py”,第 892 行,调用 await ctx.command。调用(ctx)文件“C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\core.py”,第 797 行,调用等待注入(*ctx.args,* *ctx.kwargs) 文件“C:\Users\emirs\PycharmProjects\discordmasterbot\venv\lib\site-packages\discord\ext\commands\core.py”,第 92 行,来自 exc discord 的封装 raise CommandInvokeError(exc) .ext.commands.errors.CommandInvokeError:命令引发异常:KeyError:708748879079932016

KeyError 表示未找到此 object 的密钥。 在这种情况下,公会 ID 708748879079932016players中不存在。

尝试在此处添加一个 try/except 块来捕获其中的任何一个。

@client.command(description="Pauses the current playing track. Can be resumed with `!resume`.", 
brief="Pauses current track.",aliases=['PAUSE'])
async def pause(ctx):
    try:
        guild_id = ctx.message.guild.id
        players[guild_id].pause()
    except KeyError:
        # do something that adds the guild ID to players #

@client.command(description="Resumes the current playing track. Can only be used if current track has 
been paused.",
    brief="Resumes current track.",
    aliases=['RESUME','continue','CONTINUE'])
async def resume(ctx):
    try:
        guild_id = ctx.message.guild.id
        players[guild_id].resume()
    except KeyError:
        # do something that adds the guild ID to players #

@client.command(description="Stops the current playing track.",
     brief="Stops current track.",
     aliases=['STOP'])
async def stop(ctx):
    try:
        guild_id = ctx.message.guild.id
        players[guild_id].stop()
    except KeyError:
        # do something that adds the guild ID to players #

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM