Files
gogobee/internal/plugin/shade.go
prosolis ddb196aaad Rewrite from TypeScript to Go
Complete rewrite of the Freebee Matrix bot as GogoBee using mautrix-go.

- E2EE with goolm (pure Go, no CGo/libolm) and cross-signing bootstrap
- 35+ plugins with dependency injection and ordered registration
- SQLite storage via modernc.org/sqlite (no CGo)
- Scheduler via robfig/cron for WOTD, holidays, birthdays, releases, etc.
- Optional LLM integration (Ollama) for sentiment, profanity, roasts, vibes
- Threaded trivia, three-tier profanity tracking, WOTD usage verification
- Multi-country holiday support with deduplication
- Quadratic XP curve, configurable bot display name, encrypted DMs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 18:25:18 -07:00

49 lines
1.0 KiB
Go

package plugin
import (
"os"
"maunium.net/go/mautrix"
)
// ShadePlugin is a stub plugin for future shade/roast features.
type ShadePlugin struct {
Base
enabled bool
}
// NewShadePlugin creates a new shade plugin.
func NewShadePlugin(client *mautrix.Client) *ShadePlugin {
return &ShadePlugin{
Base: NewBase(client),
enabled: os.Getenv("FEATURE_SHADE") == "true" || os.Getenv("FEATURE_SHADE") == "1",
}
}
func (p *ShadePlugin) Name() string { return "shade" }
func (p *ShadePlugin) Commands() []CommandDef {
if !p.enabled {
return nil
}
return []CommandDef{
{Name: "shade", Description: "Throw some shade (coming soon)", Usage: "!shade", Category: "LLM & Sentiment"},
}
}
func (p *ShadePlugin) Init() error { return nil }
func (p *ShadePlugin) OnReaction(_ ReactionContext) error { return nil }
func (p *ShadePlugin) OnMessage(ctx MessageContext) error {
if !p.enabled {
return nil
}
if p.IsCommand(ctx.Body, "shade") {
return p.SendReply(ctx.RoomID, ctx.EventID, "Coming soon.")
}
return nil
}