package model import ( "errors" "time" ) // CacheInterface defines the cache interface available to plugins type CacheInterface interface { Get(key string, destination interface{}) error Set(key string, value interface{}, expiration *time.Time) error SetWithTTL(key string, value interface{}, ttl time.Duration) error Delete(key string) error Exists(key string) (bool, error) } var ( // ErrPluginNotFound is returned when a requested plugin doesn't exist ErrPluginNotFound = errors.New("plugin not found") ) // Plugin defines the interface all chat plugins must implement type Plugin interface { // GetID returns the plugin ID GetID() string // GetName returns the plugin name GetName() string // GetHelp returns the plugin help text GetHelp() string // RequiresConfig indicates if the plugin requires configuration RequiresConfig() bool // OnMessage processes an incoming message and returns platform actions OnMessage(msg *Message, config map[string]interface{}, cache CacheInterface) []*MessageAction }