HKUDS/nanobot · error · TypeError

ChannelPlugin.management.default_config for '{plugin.name}'

Error message

ChannelPlugin.management.default_config for '{plugin.name}' must return a dict

What it means

Error "ChannelPlugin.management.default_config for '{plugin.name}' must return a dict" thrown in HKUDS/nanobot.

Source

Thrown at nanobot/channels/contracts.py:290

        for name, field in plugin.setup.fields.items():
            value: Any = field.default
            if value is None:
                fallback_defaults: dict[str, Any] = {
                    "string": "",
                    "secret": "",
                    "list": [],
                    "bool": False,
                }
                value = fallback_defaults.get(field.kind, _MISSING)
            if value is not _MISSING:
                _assign_channel_field(defaults, name, deepcopy(value))

    factory = plugin.management.default_config
    if factory is None:
        return defaults
    values_raw = cast(object, factory())
    if not isinstance(values_raw, dict):
        raise TypeError(f"ChannelPlugin.management.default_config for '{plugin.name}' must return a dict")
    values = cast(dict[str, Any], values_raw)
    return cast(dict[str, Any], merge_missing_defaults(values, defaults))


def _assign_channel_field(values: dict[str, Any], field: str, value: Any) -> None:
    target = values
    parts = field.split(".")
    for part in parts[:-1]:
        nested: object = target.get(part)
        if not isinstance(nested, dict):
            nested = {}
            target[part] = nested
        target = cast(dict[str, Any], nested)
    target[parts[-1]] = value


def channel_local_state_present(plugin: ChannelPlugin, section: Any) -> bool:
    checker = plugin.management.local_state_present

View on GitHub (pinned to 42f37dc4c0)

When it happens

Trigger: Thrown at nanobot/channels/contracts.py:290 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of HKUDS/nanobot@42f37dc4c0 (2026-08-26). Data as JSON: /api/errors/68914d7e2d00b889. Report an issue: GitHub.