Files
mautrix-discord/config/bridge.go
Gary Kramlich 456a15ba56 Initial bot functionality
* The bot now properly joins the management room
* The management room is persisted in the database
* Welcome/help messages are sent in the management room
2021-12-30 09:33:06 -06:00

63 lines
1.0 KiB
Go

package config
import (
"bytes"
"text/template"
)
type bridge struct {
UsernameTemplate string `yaml:"username_template"`
ManagementRoomText managementRoomText `yaml:"management_root_text"`
PortalMessageBuffer int `yaml:"portal_message_buffer"`
usernameTemplate *template.Template `yaml:"-"`
}
func (b *bridge) validate() error {
var err error
if b.UsernameTemplate == "" {
b.UsernameTemplate = "Discord_{{.}}"
}
if b.PortalMessageBuffer <= 0 {
b.PortalMessageBuffer = 128
}
b.usernameTemplate, err = template.New("username").Parse(b.UsernameTemplate)
if err != nil {
return err
}
if err := b.ManagementRoomText.validate(); err != nil {
return err
}
return nil
}
func (b *bridge) UnmarshalYAML(unmarshal func(interface{}) error) error {
type rawBridge bridge
raw := rawBridge{}
err := unmarshal(&raw)
if err != nil {
return err
}
*b = bridge(raw)
return b.validate()
}
func (b bridge) FormatUsername(userid string) string {
var buffer bytes.Buffer
b.usernameTemplate.Execute(&buffer, userid)
return buffer.String()
}