sdk

package module
v0.0.0-...-0af1ac7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2025 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ValidateManifest

func ValidateManifest(manifest *PluginManifest) error

ValidateManifest validates a plugin manifest

Types

type BasePlugin

type BasePlugin struct {
	// contains filtered or unexported fields
}

BasePlugin provides a basic implementation of the Plugin interface

func NewBasePlugin

func NewBasePlugin(name string) *BasePlugin

NewBasePlugin creates a new base plugin

func (*BasePlugin) Commands

func (p *BasePlugin) Commands() []PluginCommand

Commands provides a default implementation that returns no commands

func (*BasePlugin) GetConfig

func (p *BasePlugin) GetConfig() Config

GetConfig returns the plugin configuration

func (*BasePlugin) GetHost

func (p *BasePlugin) GetHost() PluginHost

GetHost returns the plugin host

func (*BasePlugin) Init

func (p *BasePlugin) Init(config Config) error

Init initializes the base plugin

func (*BasePlugin) Name

func (p *BasePlugin) Name() string

Name returns the plugin name

func (*BasePlugin) OnMessage

func (p *BasePlugin) OnMessage(msg Message) ([]Message, error)

OnMessage provides a default implementation that does nothing

func (*BasePlugin) SetHost

func (p *BasePlugin) SetHost(host PluginHost)

SetHost sets the plugin host

type Config

type Config struct {
	PluginDir string            `json:"plugin_dir"`
	DataDir   string            `json:"data_dir"`
	Settings  map[string]string `json:"settings"`
}

Config represents plugin configuration

type Message

type Message struct {
	Sender    string    `json:"sender"`
	Content   string    `json:"content"`
	CreatedAt time.Time `json:"created_at"`
	Type      string    `json:"type,omitempty"`
}

Message represents a chat message

type Plugin

type Plugin interface {
	// Name returns the plugin's unique identifier
	Name() string

	// Init initializes the plugin with configuration
	Init(config Config) error

	// OnMessage is called when a new message is received
	// Plugins can return additional messages to be sent
	OnMessage(msg Message) ([]Message, error)

	// Commands returns the list of commands this plugin registers
	Commands() []PluginCommand
}

Plugin is the main interface that all marchat plugins must implement

type PluginCommand

type PluginCommand struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Usage       string `json:"usage"`
	AdminOnly   bool   `json:"admin_only"`
}

PluginCommand represents a command that a plugin can register

type PluginHost

type PluginHost interface {
	// SendMessage sends a message to the chat
	SendMessage(msg Message) error

	// GetUsers returns the list of online users
	GetUsers() []string

	// GetSetting retrieves a plugin setting
	GetSetting(key string) string

	// SetSetting stores a plugin setting
	SetSetting(key, value string) error

	// Log logs a message to the host's log system
	Log(level, message string)
}

PluginHost provides methods for plugins to interact with the host

type PluginManifest

type PluginManifest struct {
	Name        string            `json:"name"`
	Version     string            `json:"version"`
	Description string            `json:"description"`
	Author      string            `json:"author"`
	License     string            `json:"license"`
	Repository  string            `json:"repository,omitempty"`
	Homepage    string            `json:"homepage,omitempty"`
	Commands    []PluginCommand   `json:"commands"`
	Permissions []string          `json:"permissions"`
	Settings    map[string]string `json:"settings,omitempty"`
	MinVersion  string            `json:"min_version,omitempty"`
	MaxVersion  string            `json:"max_version,omitempty"`
}

PluginManifest contains metadata about a plugin

type PluginRequest

type PluginRequest struct {
	Type    string          `json:"type"`
	Command string          `json:"command,omitempty"`
	Data    json.RawMessage `json:"data,omitempty"`
}

PluginRequest represents a request to a plugin

type PluginResponse

type PluginResponse struct {
	Type    string          `json:"type"`
	Success bool            `json:"success"`
	Data    json.RawMessage `json:"data,omitempty"`
	Error   string          `json:"error,omitempty"`
}

PluginResponse represents a response from a plugin

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL