channels

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2026 License: MIT Imports: 44 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseChannel

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

func NewBaseChannel

func NewBaseChannel(name string, config interface{}, bus *bus.MessageBus, allowList []string) *BaseChannel

func (*BaseChannel) HandleMessage

func (c *BaseChannel) HandleMessage(senderID, chatID, content string, media []string, metadata map[string]string)

func (*BaseChannel) IsAllowed

func (c *BaseChannel) IsAllowed(senderID string) bool

func (*BaseChannel) IsRunning

func (c *BaseChannel) IsRunning() bool

func (*BaseChannel) Name

func (c *BaseChannel) Name() string

type BotStatus added in v0.1.2

type BotStatus struct {
	Online bool `json:"online"`
	Good   bool `json:"good"`
}

type Channel

type Channel interface {
	Name() string
	Start(ctx context.Context) error
	Stop(ctx context.Context) error
	Send(ctx context.Context, msg bus.OutboundMessage) error
	IsRunning() bool
	IsAllowed(senderID string) bool
}

type DingTalkChannel added in v0.1.1

type DingTalkChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

DingTalkChannel implements the Channel interface for DingTalk (钉钉) It uses WebSocket for receiving messages via stream mode and API for sending

func NewDingTalkChannel added in v0.1.1

func NewDingTalkChannel(cfg config.DingTalkConfig, messageBus *bus.MessageBus) (*DingTalkChannel, error)

NewDingTalkChannel creates a new DingTalk channel instance

func (*DingTalkChannel) Send added in v0.1.1

Send sends a message to DingTalk via the chatbot reply API

func (*DingTalkChannel) SendDirectReply added in v0.1.1

func (c *DingTalkChannel) SendDirectReply(ctx context.Context, sessionWebhook, content string) error

SendDirectReply sends a direct reply using the session webhook

func (*DingTalkChannel) Start added in v0.1.1

func (c *DingTalkChannel) Start(ctx context.Context) error

Start initializes the DingTalk channel with Stream Mode

func (*DingTalkChannel) Stop added in v0.1.1

func (c *DingTalkChannel) Stop(ctx context.Context) error

Stop gracefully stops the DingTalk channel

type DiscordChannel

type DiscordChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewDiscordChannel

func NewDiscordChannel(cfg config.DiscordConfig, bus *bus.MessageBus) (*DiscordChannel, error)

func (*DiscordChannel) Send

func (*DiscordChannel) SetTranscriber added in v0.1.1

func (c *DiscordChannel) SetTranscriber(transcriber *voice.GroqTranscriber)

func (*DiscordChannel) Start

func (c *DiscordChannel) Start(ctx context.Context) error

func (*DiscordChannel) Stop

func (c *DiscordChannel) Stop(ctx context.Context) error

type FeishuChannel

type FeishuChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewFeishuChannel

func NewFeishuChannel(cfg config.FeishuConfig, bus *bus.MessageBus) (*FeishuChannel, error)

func (*FeishuChannel) Send

func (*FeishuChannel) Start

func (c *FeishuChannel) Start(ctx context.Context) error

func (*FeishuChannel) Stop

func (c *FeishuChannel) Stop(ctx context.Context) error

type LINEChannel added in v0.1.2

type LINEChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

LINEChannel implements the Channel interface for LINE Official Account using the LINE Messaging API with HTTP webhook for receiving messages and REST API for sending messages.

func NewLINEChannel added in v0.1.2

func NewLINEChannel(cfg config.LINEConfig, messageBus *bus.MessageBus) (*LINEChannel, error)

NewLINEChannel creates a new LINE channel instance.

func (*LINEChannel) Send added in v0.1.2

func (c *LINEChannel) Send(ctx context.Context, msg bus.OutboundMessage) error

Send sends a message to LINE. It first tries the Reply API (free) using a cached reply token, then falls back to the Push API.

func (*LINEChannel) Start added in v0.1.2

func (c *LINEChannel) Start(ctx context.Context) error

Start launches the HTTP webhook server.

func (*LINEChannel) Stop added in v0.1.2

func (c *LINEChannel) Stop(ctx context.Context) error

Stop gracefully shuts down the HTTP server.

type MaixCamChannel

type MaixCamChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewMaixCamChannel

func NewMaixCamChannel(cfg config.MaixCamConfig, bus *bus.MessageBus) (*MaixCamChannel, error)

func (*MaixCamChannel) Send

func (*MaixCamChannel) Start

func (c *MaixCamChannel) Start(ctx context.Context) error

func (*MaixCamChannel) Stop

func (c *MaixCamChannel) Stop(ctx context.Context) error

type MaixCamMessage

type MaixCamMessage struct {
	Type      string                 `json:"type"`
	Tips      string                 `json:"tips"`
	Timestamp float64                `json:"timestamp"`
	Data      map[string]interface{} `json:"data"`
}

type Manager

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

func NewManager

func NewManager(cfg *config.Config, messageBus *bus.MessageBus) (*Manager, error)

func (*Manager) GetChannel

func (m *Manager) GetChannel(name string) (Channel, bool)

func (*Manager) GetEnabledChannels

func (m *Manager) GetEnabledChannels() []string

func (*Manager) GetStatus

func (m *Manager) GetStatus() map[string]interface{}

func (*Manager) RegisterChannel

func (m *Manager) RegisterChannel(name string, channel Channel)

func (*Manager) SendToChannel

func (m *Manager) SendToChannel(ctx context.Context, channelName, chatID, content string) error

func (*Manager) StartAll

func (m *Manager) StartAll(ctx context.Context) error

func (*Manager) StopAll

func (m *Manager) StopAll(ctx context.Context) error

func (*Manager) UnregisterChannel

func (m *Manager) UnregisterChannel(name string)

type OneBotChannel added in v0.1.2

type OneBotChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewOneBotChannel added in v0.1.2

func NewOneBotChannel(cfg config.OneBotConfig, messageBus *bus.MessageBus) (*OneBotChannel, error)

func (*OneBotChannel) Send added in v0.1.2

func (*OneBotChannel) Start added in v0.1.2

func (c *OneBotChannel) Start(ctx context.Context) error

func (*OneBotChannel) Stop added in v0.1.2

func (c *OneBotChannel) Stop(ctx context.Context) error

type QQChannel added in v0.1.1

type QQChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewQQChannel added in v0.1.1

func NewQQChannel(cfg config.QQConfig, messageBus *bus.MessageBus) (*QQChannel, error)

func (*QQChannel) Send added in v0.1.1

func (c *QQChannel) Send(ctx context.Context, msg bus.OutboundMessage) error

func (*QQChannel) Start added in v0.1.1

func (c *QQChannel) Start(ctx context.Context) error

func (*QQChannel) Stop added in v0.1.1

func (c *QQChannel) Stop(ctx context.Context) error

type SlackChannel added in v0.1.1

type SlackChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewSlackChannel added in v0.1.1

func NewSlackChannel(cfg config.SlackConfig, messageBus *bus.MessageBus) (*SlackChannel, error)

func (*SlackChannel) Send added in v0.1.1

func (*SlackChannel) SetTranscriber added in v0.1.1

func (c *SlackChannel) SetTranscriber(transcriber *voice.GroqTranscriber)

func (*SlackChannel) Start added in v0.1.1

func (c *SlackChannel) Start(ctx context.Context) error

func (*SlackChannel) Stop added in v0.1.1

func (c *SlackChannel) Stop(ctx context.Context) error

type TelegramChannel

type TelegramChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewTelegramChannel

func NewTelegramChannel(cfg *config.Config, bus *bus.MessageBus) (*TelegramChannel, error)

func (*TelegramChannel) Send

func (*TelegramChannel) SetTranscriber

func (c *TelegramChannel) SetTranscriber(transcriber *voice.GroqTranscriber)

func (*TelegramChannel) Start

func (c *TelegramChannel) Start(ctx context.Context) error

func (*TelegramChannel) Stop

func (c *TelegramChannel) Stop(ctx context.Context) error

type TelegramCommander added in v0.1.2

type TelegramCommander interface {
	Help(ctx context.Context, message telego.Message) error
	Start(ctx context.Context, message telego.Message) error
	Show(ctx context.Context, message telego.Message) error
	List(ctx context.Context, message telego.Message) error
}

func NewTelegramCommands added in v0.1.2

func NewTelegramCommands(bot *telego.Bot, cfg *config.Config) TelegramCommander

type WhatsAppChannel

type WhatsAppChannel struct {
	*BaseChannel
	// contains filtered or unexported fields
}

func NewWhatsAppChannel

func NewWhatsAppChannel(cfg config.WhatsAppConfig, bus *bus.MessageBus) (*WhatsAppChannel, error)

func (*WhatsAppChannel) Send

func (*WhatsAppChannel) Start

func (c *WhatsAppChannel) Start(ctx context.Context) error

func (*WhatsAppChannel) Stop

func (c *WhatsAppChannel) Stop(ctx context.Context) error

Jump to

Keyboard shortcuts

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