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
This commit is contained in:
Gary Kramlich
2021-12-30 09:33:06 -06:00
parent 78ab3d3804
commit 456a15ba56
19 changed files with 859 additions and 16 deletions

View File

@@ -8,6 +8,10 @@ import (
type bridge struct {
UsernameTemplate string `yaml:"username_template"`
ManagementRoomText managementRoomText `yaml:"management_root_text"`
PortalMessageBuffer int `yaml:"portal_message_buffer"`
usernameTemplate *template.Template `yaml:"-"`
}
@@ -18,11 +22,19 @@ func (b *bridge) validate() error {
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
}

View File

@@ -0,0 +1,38 @@
package config
type managementRoomText struct {
Welcome string `yaml:"welcome"`
Connected string `yaml:"welcome_connected"`
NotConnected string `yaml:"welcome_unconnected"`
AdditionalHelp string `yaml:"additional_help"`
}
func (m *managementRoomText) validate() error {
if m.Welcome == "" {
m.Welcome = "Greetings, I am a Discord bridge bot!"
}
if m.Connected == "" {
m.Connected = "Use `help` to get started."
}
if m.NotConnected == "" {
m.NotConnected = "Use `help` to get started, or `login` to login."
}
return nil
}
func (m *managementRoomText) UnmarshalYAML(unmarshal func(interface{}) error) error {
type rawManagementRoomText managementRoomText
raw := rawManagementRoomText{}
if err := unmarshal(&raw); err != nil {
return err
}
*m = managementRoomText(raw)
return m.validate()
}