Space inviter: DM admin to confirm invites for Space-less local users

New optional plugin (FEATURE_SPACE_INVITER) that detects local homeserver
users who aren't in any Matrix Space and prompts the configured admin via
DM with yes/no/ignore. Persistent prompt log in space_inviter_prompts so
restarts and upgrades don't re-ping for users who already replied.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-09 20:20:56 -07:00
parent 57b6e009ec
commit 8e8d3783f9
5 changed files with 882 additions and 0 deletions

View File

@@ -191,6 +191,10 @@ func main() {
registry.Register(plugin.NewShadePlugin(client))
registry.Register(plugin.NewWelcomePlugin(client, xpPlugin, registry))
// Space inviter (admin-prompted invites for Space-less local users)
spaceInviter := plugin.NewSpaceInviterPlugin(client)
registry.Register(spaceInviter)
// Initialize all plugins
if err := registry.Init(); err != nil {
slog.Error("plugin init failed", "err", err)
@@ -234,6 +238,11 @@ func main() {
// Track join/leave/invite for moderation
targetUser := id.UserID(evt.GetStateKey())
modPlugin.OnMemberEvent(evt.RoomID, targetUser, mem.Membership)
// Space inviter: react to local-user joins
if mem.Membership == event.MembershipJoin {
spaceInviter.OnMemberJoin(targetUser)
}
})
// Message handler