@the-draupnir-project/interface-manager
v3.0.0
Published
This library provides a command-oriented presentation interface for Matrix bots. This is the library used by [Draupnir](https://github.com/the-draupnir-project/Draupnir) to provide command parsing, rendering and interaction prompts.
Downloads
633
Readme
@the-draupnir-project/interface-manager
This library provides a command-oriented presentation interface for Matrix bots. This is the library used by Draupnir to provide command parsing, rendering and interaction prompts.
This library also includes a JSXFactory
that can transform JSX
templates into org.matrix.custom.html
and plain text fallback,
so that it is possible to send Matrix events from one source.
const KickCommand = describeCommand({
summary: "A command to test keyword arguments",
parameters: tuple({
name: "user",
acceptor: MatrixUserIDPresentationType,
}),
keywords: {
keywordDescriptions: {
glob: {
isFlag: true,
description:
"Allows globs to be used to kick several users from rooms.",
},
},
},
async executor(
draupnir: Draupnir,
_info,
keywords
): Promise<Result<KickedUsers>> {
return await draupnir.kickUsers(
user,
keywords.getKeywordValue("glob", false)
);
},
});
DraupnirInterfaceAdaptor.describeRenderer(
KickCommand,
{
JSXRenderer(result) {
if (isError(result)) {
return Ok(undefined);
}
return Ok(
<root>
<details>
<summary>Removed {result.ok.length} users from protected rooms.</summary>
{renderKickedUsers(result.ok)}
</details>
</root>
);
}
}
);
Getting started
At some point in the near future we will create a simple bot that will act as a template repository that can be copied and edited.
In the meantime Draupnir's glue/setup code for the library can be found here and this code is licensed under Apache-2.0.
Contributing & Opening Issues
Draupnir wants to be yours as much as it is ours. Please see or contributing document, but do not worry too much about following the guidance to the letter. And keep that in mind throughout.
Supported by
NLnet foundation
Draupnir is supported by the NLnet foundation and NGI Zero under the NGI Zero Core programme.
You can find details of the work that is being supported from NLnet here and the goals here.