[英]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 708748879079932016
在players
中不存在。
尝试在此处添加一个 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.