Commit graph

8 commits

Author SHA1 Message Date
7f6327270b
karma: karmaweb command + web-board link on top lists, via configurable karma_url
All checks were successful
ci / check (push) Successful in 47s
2026-07-30 00:39:06 +00:00
739fc8ad94
i18n: per-network locale (en/es/fr) for karma replies and the web board
All checks were successful
ci / check (push) Successful in 45s
2026-07-30 00:31:17 +00:00
21e36b9961
Add karma module + on_message hook
All checks were successful
ci / check (push) Successful in 46s
2026-07-29 20:30:04 +00:00
c3139b4e4d
Add web modules (crypto, wiki, define, urban, tinyurl, down) + shared http/json
All checks were successful
ci / check (push) Successful in 48s
2026-07-29 19:42:36 +00:00
1c320ad0c3 Port skybot hash plugin as a module 2026-07-29 18:29:56 +00:00
ebb3333e78 Add weather module 2026-07-29 17:32:33 +00:00
52d7c13013 Remove code comments 2026-07-29 16:24:30 +00:00
a5e58493d8 Add a module (plugin) system for bot features
Introduce a `Module` trait (src/bot/module.rs): a feature declares the
commands it provides and turns each invocation into a `Vec<Action>`, without
touching the connection. Modules are pure — context in, actions out — so they
are unit-testable in isolation and avoid borrowing the `Bot` that owns them.

Bot::new builds the module set and a command -> module route table; the
`commands` dispatcher routes to the owning module and executes its actions,
and `help` is auto-generated from every module's CommandSpec metadata.

The existing ping/echo/hello move into a `builtins` module, and a stateful
`dice` module (`roll [NdM]`, with its own dependency-free xorshift PRNG) is
added as a worked example. Each network gets its own module set, so stateful
modules keep independent per-network state with no locking. Adding a feature
is now a new file in bot/modules/ plus one line in modules::all().

Tests: new tests/modules.rs drives modules through the trait with no network;
end-to-end dispatch and auto-help verified against a fake server. No new deps.
2026-07-29 16:13:24 +00:00