GraiaProject / Avilla

The next-gen framework for IM development. Powered by Graia Project.
MIT License
160 stars 14 forks source link

bug: `KeyError: 'file'` on elizabeth 1.0.0a27 #152

Closed SerinaNya closed 8 months ago

SerinaNya commented 8 months ago

使用 avilla-elizabeth 1.0.0a27 ( https://github.com/GraiaProject/Avilla/commit/9dda2663f40dbd7b95d54936e8650606d1942dc5 )


ERROR    Exception:                                                                                       richuru.py:102
         ╭───────────────────────────── Traceback (most recent call last) ──────────────────────────────╮
         │ in <module>:1                                                                                │
         │ ╭──────────────────────────── locals ────────────────────────────╮                           │
         │ │ import_module = <function import_module at 0x0000021C6166F1A0> │                           │
         │ │           sys = <module 'sys' (built-in)>                      │                           │
         │ ╰────────────────────────────────────────────────────────────────╯                           │
         │                                                                                              │
         │ D:\Datas\commspt-bot-avilla\commspt_bot_avilla\main.py:39 in main                            │
         │                                                                                              │
         │   36 │   │                                                                                   │
         │   37 │   │   avilla.apply_protocols(ConsoleProtocol())                                       │
         │   38 │   else:                                                                               │
         │ ❱ 39 │   │   from avilla.elizabeth.protocol import ElizabethConfig, ElizabethProtocol        │
         │   40 │   │                                                                                   │
         │   41 │   │   config = ElizabethConfig(**S_.connection.model_dump())                          │
         │   42 │   │   logger.info(f"Protocol connection config: {config}")                            │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │      avilla = <avilla.core.application.Avilla object at 0x0000021C640DC770>              │ │
         │ │   broadcast = <graia.broadcast.Broadcast object at 0x0000021C634B5A60>                   │ │
         │ │ module_info = ModuleInfo(                                                                │ │
         │ │               │                                                                          │ │
         │ │               module_finder=FileFinder('D:\\Datas\\commspt-bot-avilla\\commspt_bot_avil… │ │
         │ │               │   name='simple_response',                                                │ │
         │ │               │   ispkg=False                                                            │ │
         │ │               )                                                                          │ │
         │ │        saya = <graia.saya.Saya object at 0x0000021C63A5FB00>                             │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\avilla\elizabeth\__init__.py:1 in <module>                               │
         │                                                                                              │
         │ ❱ 1 from .protocol import ElizabethConfig as ElizabethConfig                                 │
         │   2 from .protocol import ElizabethProtocol as ElizabethProtocol                             │
         │   3                                                                                          │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │    account = <module 'avilla.elizabeth.account' from                                     │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │ capability = <module 'avilla.elizabeth.capability' from                                  │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │ connection = <module 'avilla.elizabeth.connection' from                                  │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │      const = <module 'avilla.elizabeth.const' from                                       │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │  exception = <module 'avilla.elizabeth.exception' from                                   │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │       file = <module 'avilla.elizabeth.file' from                                        │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │    perform = <module 'avilla.elizabeth.perform' from                                     │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │   resource = <module 'avilla.elizabeth.resource' from                                    │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ │    service = <module 'avilla.elizabeth.service' from                                     │ │
         │ │              'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\commsp… │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\avilla\elizabeth\protocol.py:51 in <module>                              │
         │                                                                                              │
         │   48 │   from avilla.elizabeth.perform.query import announcement, bot, file, friend, group   │
         │      noqa                                                                                    │
         │   49                                                                                         │
         │   50                                                                                         │
         │ ❱ 51 _import_performs()                                                                      │
         │   52                                                                                         │
         │   53                                                                                         │
         │   54 class ElizabethProtocol(BaseProtocol):                                                  │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │            _import_performs = <function _import_performs at 0x0000021C66B0D9E0>          │ │
         │ │                 annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)             │ │
         │ │                      Avilla = <class 'avilla.core.application.Avilla'>                   │ │
         │ │                BaseProtocol = <class 'avilla.core.protocol.BaseProtocol'>                │ │
         │ │                   dataclass = <function dataclass at 0x0000021C63B35580>                 │ │
         │ │             ElizabethConfig = <class 'avilla.elizabeth.protocol.ElizabethConfig'>        │ │
         │ │            ElizabethService = <class 'avilla.elizabeth.service.ElizabethService'>        │ │
         │ │ ElizabethWsClientNetworking = <class                                                     │ │
         │ │                               'avilla.elizabeth.connection.ws_client.ElizabethWsClientN… │ │
         │ │                       field = <function field at 0x0000021C63AFBE20>                     │ │
         │ │                       merge = <function merge at 0x0000021C63FE0E00>                     │ │
         │ │              ProtocolConfig = <class 'avilla.core.protocol.ProtocolConfig'>              │ │
         │ │                         ref = <function ref at 0x0000021C63FE0D60>                       │ │
         │ │                         URL = <class 'yarl.URL'>                                         │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\avilla\elizabeth\protocol.py:30 in _import_performs                      │
         │                                                                                              │
         │   27 def _import_performs():  # noqa: F401                                                   │
         │   28 │   from avilla.elizabeth.perform import context, resource_fetch  # noqa: F401          │
         │   29 │   from avilla.elizabeth.perform.action import contact  # noqa: F401                   │
         │ ❱ 30 │   from avilla.elizabeth.perform.action import (                                       │
         │   31 │   │   activity,                                                                       │
         │   32 │   │   announcement,                                                                   │
         │   33 │   │   file,                                                                           │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │        contact = <module 'avilla.elizabeth.perform.action.contact' from                  │ │
         │ │                  'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\co… │ │
         │ │        context = <module 'avilla.elizabeth.perform.context' from                         │ │
         │ │                  'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\co… │ │
         │ │ resource_fetch = <module 'avilla.elizabeth.perform.resource_fetch' from                  │ │
         │ │                  'C:\\Users\\Xiao_Jin\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\co… │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\avilla\elizabeth\perform\action\file.py:26 in <module>                   │
         │                                                                                              │
         │    23 │   from avilla.elizabeth.protocol import ElizabethProtocol  # noqa                    │
         │    24                                                                                        │
         │    25                                                                                        │
         │ ❱  26 class ElizabethAnnouncementActionPerform((m := AccountCollector["ElizabethProtocol",   │
         │       "ElizabethAccount"]())._):                                                             │
         │    27 │   m.namespace = "avilla.protocol/elizabeth::action"                                  │
         │    28 │   m.identify = "file"                                                                │
         │    29                                                                                        │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │    AccountCollector = <class 'avilla.core.ryanvk.collector.account.AccountCollector'>    │ │
         │ │         annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)                     │ │
         │ │            FileData = <class 'avilla.elizabeth.file.metadata.FileData'>                  │ │
         │ │          FileDelete = <class 'avilla.elizabeth.file.capability.FileDelete'>              │ │
         │ │ FileDirectoryCreate = <class 'avilla.elizabeth.file.capability.FileDirectoryCreate'>     │ │
         │ │            FileMove = <class 'avilla.elizabeth.file.capability.FileMove'>                │ │
         │ │          FileRename = <class 'avilla.elizabeth.file.capability.FileRename'>              │ │
         │ │          FileUpload = <class 'avilla.elizabeth.file.capability.FileUpload'>              │ │
         │ │                  io = <module 'io' (frozen)>                                             │ │
         │ │                   m = <avilla.core.ryanvk.collector.account.AccountCollector object at   │ │
         │ │                       0x0000021C66BB67E0>                                                │ │
         │ │            Memcache = <class 'graia.amnesia.builtins.memcache.Memcache'>                 │ │
         │ │     MemcacheService = <class 'graia.amnesia.builtins.memcache.MemcacheService'>          │ │
         │ │                  os = <module 'os' (frozen)>                                             │ │
         │ │            Selector = <class 'avilla.core.selector.Selector'>                            │ │
         │ │           timedelta = <class 'datetime.timedelta'>                                       │ │
         │ │       TYPE_CHECKING = False                                                              │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\avilla\elizabeth\perform\action\file.py:94 in                            │
         │ ElizabethAnnouncementActionPerform                                                           │
         │                                                                                              │
         │    91 │   │   )                                                                              │
         │    92 │   │   return target.file(result["id"])                                               │
         │    93 │                                                                                      │
         │ ❱  94 │   @m.entity(FileDelete.delete, target="land.group.file")                             │
         │    95 │   async def delete_file(self, target: Selector) -> None:                             │
         │    96 │   │    await self.account.connection.call(                                           │
         │    97 │   │   │   "update",                                                                  │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │ create_directory = <function ElizabethAnnouncementActionPerform.create_directory at      │ │
         │ │                    0x0000021C66BEE340>                                                   │ │
         │ │         get_file = <function ElizabethAnnouncementActionPerform.get_file at              │ │
         │ │                    0x0000021C66BED120>                                                   │ │
         │ │      upload_file = <function ElizabethAnnouncementActionPerform.upload_file at           │ │
         │ │                    0x0000021C66BEE160>                                                   │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\graia\ryanvk\fn.py:116 in wrapper                                        │
         │                                                                                              │
         │   113 │   │   │   │   │   │   collector,                                                     │
         │   114 │   │   │   │   │   │   scope,                                                         │
         │   115 │   │   │   │   │   │   entity,                                                        │
         │ ❱ 116 │   │   │   │   │   │   fn_overload.get_params_layout(params, overload_settings),      │
         │   117 │   │   │   │   │   )                                                                  │
         │   118 │   │   │   else:                                                                      │
         │   119 │   │   │   │   artifact["record_tuple"] = (collector, entity)                         │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │          artifact = {                                                                    │ │
         │ │                     │   'overload_enabled': True,                                        │ │
         │ │                     │   'overload_scopes': {'TargetOverload': {}},                       │ │
         │ │                     │   'record_tuple': None                                             │ │
         │ │                     }                                                                    │ │
         │ │         collector = <avilla.core.ryanvk.collector.account.AccountCollector object at     │ │
         │ │                     0x0000021C66BB67E0>                                                  │ │
         │ │            entity = <function ElizabethAnnouncementActionPerform.delete_file at          │ │
         │ │                     0x0000021C66BEE520>                                                  │ │
         │ │       fn_overload = <avilla.core.ryanvk.overload.target.TargetOverload object at         │ │
         │ │                     0x0000021C66BCE300>                                                  │ │
         │ │ overload_settings = {'target': 'land.group.file'}                                        │ │
         │ │            params = ['file']                                                             │ │
         │ │             scope = {}                                                                   │ │
         │ │              self = <graia.ryanvk.fn.Fn object at 0x0000021C66BCDE20>                    │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         │                                                                                              │
         │ C:\Users\Xiao_Jin\AppData\Local\pypoetry\Cache\virtualenvs\commspt-bot-avilla-FLAIqaDu-py3.1 │
         │ 2\Lib\site-packages\graia\ryanvk\overload.py:29 in get_params_layout                         │
         │                                                                                              │
         │    26 │   │   return scopes[-1]                                                              │
         │    27 │                                                                                      │
         │    28 │   def get_params_layout(self, params: list[str], args: dict[str, Any]) -> dict[str,  │
         │       Any]:                                                                                  │
         │ ❱  29 │   │   return {param: args[param] for param in params}                                │
         │    30                                                                                        │
         │    31                                                                                        │
         │    32 class SimpleOverload(FnOverload):                                                      │
         │                                                                                              │
         │ ╭───────────────────────────────────────── locals ─────────────────────────────────────────╮ │
         │ │   args = {'target': 'land.group.file'}                                                   │ │
         │ │ params = ['file']                                                                        │ │
         │ │   self = <avilla.core.ryanvk.overload.target.TargetOverload object at                    │ │
         │ │          0x0000021C66BCE300>                                                             │ │
         │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ │
         ╰──────────────────────────────────────────────────────────────────────────────────────────────╯
         KeyError: 'file'