monsterxcn / nonebot-plugin-gspanel

🤖 NoneBot2 原神游戏内角色展柜数据展示插件,参考 @yoimiya-kokomi/miao-plugin
https://pypi.python.org/pypi/nonebot-plugin-gspanel
MIT License
96 stars 7 forks source link

面板命令报错提示:line 224, KeyError: 'ttl' #63

Closed KishibeRohan1979 closed 10 months ago

KishibeRohan1979 commented 10 months ago

运行环境

报错详情

您好,我在尝试使用“面板 @b服玩家”命令(包括面板 角色@b服玩家)的时候,bot不返回消息,服务报错如下方日志内容输出。

场景

日志

  File "<string>", line 17, in <module>
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\__init__.py", line 309, in run
    get_driver().run(*args, **kwargs)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\drivers\fastapi.py", line 198, in run
    uvicorn.run(
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\uvicorn\main.py", line 578, in run
    server.run()
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\uvicorn\server.py", line 61, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\runners.py", line 190, in run
    return runner.run(main)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\base_events.py", line 640, in run_until_complete
    self.run_forever()
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\windows_events.py", line 321, in run_forever
    super().run_forever()
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\base_events.py", line 607, in run_forever
    self._run_once()
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\base_events.py", line 1922, in _run_once
    handle._run()
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\asyncio\events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\message.py", line 467, in check_and_run_matcher
    await _run_matcher(
> File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\message.py", line 419, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\internal\matcher\matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\internal\matcher\matcher.py", line 728, in simple_run
    await handler(
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot\dependencies\__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot_plugin_gspanel\__init__.py", line 51, in panel_handle
    rt = await getPanel(uid, char)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot_plugin_gspanel\data_source.py", line 265, in getPanel
    data = await getAvatarData(uid, char)
  File "C:\Users\Administrator\Desktop\software\work\python\python3.11\Lib\site-packages\nonebot_plugin_gspanel\data_source.py", line 224, in getAvatarData
    cacheData["next"] = now + newData["ttl"]
KeyError: 'ttl'

额外信息

测试使用的uid是503845343(就发生了这个错误),我自己尝试将

cacheData["next"] = now + newData["ttl"]

修改为

cacheData["next"] = now

测试之后就可以正常发送图片了,但是这会不会增加对接口的不必要请求?以及如何优化会好一点?

forchannot commented 10 months ago

目前可能是由于microgg的后端可能redis挂了,导致的ttl数据不存在,等面板作者回去看一看,先观察下,可以尝试先改为newData.get("ttl", 60),后续再看具体怎么处理,不要直接删掉

monsterxcn commented 10 months ago

microgg 应该已经恢复,如有问题 reopen 此 issue