diff --git a/common/chatdata.go b/common/chatdata.go index bc7a191..1fd77c7 100644 --- a/common/chatdata.go +++ b/common/chatdata.go @@ -1,12 +1,10 @@ package common import ( - "bytes" "encoding/json" "errors" "fmt" "strings" - "text/template" ) type DataInterface interface { @@ -91,51 +89,38 @@ type DataMessage struct { Type MessageType } -var ( - cmdme = template.Must(template.New("cmdme").Parse(`{{.From}} {{.Message}}`)) - announcement = template.Must(template.New("announcement").Parse(`{{.Message}}`)) - errormsg = template.Must(template.New("error").Parse(`{{.Message}}`)) - notice = template.Must(template.New("notice").Parse(`{{.Message}}`)) - command = template.Must(template.New("command").Parse(`{{.Message}}`)) - commanderror = template.Must(template.New("commanderror").Parse(`{{.Message}}`)) - cmdlMod = template.Must(template.New("cmdlMod").Parse(`{{.From}}: {{.Message}}`)) - cmdlAdmin = template.Must(template.New("CmdlAdmin").Parse(`{{.From}}: {{.Message}}`)) - defaultMsg = template.Must(template.New("defaultMsg").Parse(`{{.From}}: {{.Message}}`)) -) - // TODO: Read this HTML from a template somewhere func (dc DataMessage) HTML() string { - buf := &bytes.Buffer{} switch dc.Type { case MsgAction: - cmdme.Execute(buf, dc) - return buf.String() + return `` + dc.From + + ` ` + dc.Message + `` + case MsgServer: - announcement.Execute(buf, dc) - return buf.String() + return `` + dc.Message + `` + case MsgError: - errormsg.Execute(buf, dc) - return buf.String() + return `` + dc.Message + `` + case MsgNotice: - notice.Execute(buf, dc) - return buf.String() + return `` + dc.Message + `` + case MsgCommandResponse: - command.Execute(buf, dc) - return buf.String() + return `` + dc.Message + `` + case MsgCommandError: - commanderror.Execute(buf, dc) - return buf.String() + return `` + dc.Message + `` default: + badge := "" switch dc.Level { case CmdlMod: - cmdlMod.Execute(buf, dc) + badge = `` case CmdlAdmin: - cmdlAdmin.Execute(buf, dc) - default: - defaultMsg.Execute(buf, dc) + badge = `` } - return buf.String() + return `` + badge + `` + dc.From + + `: ` + dc.Message + `` } } @@ -180,51 +165,42 @@ type DataEvent struct { Event EventType User string Color string - Users []string } -var ( - evKick = template.Must(template.New("evKick").Parse(`{{.User}} has been kicked.`)) - evLeave = template.Must(template.New("evLeave").Parse(`{{.User}} has left the chat.`)) - evBan = template.Must(template.New("evBan").Parse(`{{.User}} has been banned.`)) - evJoin = template.Must(template.New("evJoin").Parse(`{{.User}} has joined the chat.`)) - evNameChangeWC = template.Must(template.New("evNameChangeWC").Parse(`Somebody changed their name, but IDK who {{.}}.`)) - evNameChange = template.Must(template.New("evNameChange").Parse(`{{index .Users 0}} has changed their name to {{index .Users 1}}.`)) - evNameChangeForced = template.Must(template.New("evNameChangeForced").Parse(`{{index .Users 0}} has had their name changed to {{index .Users 1}} by an admin.`)) - evNameChangeForcedWC = template.Must(template.New("evNameChangeForcedWC").Parse(`An admin changed somebody's name, but IDK who {{.}}.`)) -) - func (de DataEvent) HTML() string { - buf := &bytes.Buffer{} switch de.Event { case EvKick: - evKick.Execute(buf, de) - return buf.String() + return `` + + de.User + ` has been kicked.` case EvLeave: - evLeave.Execute(buf, de) - return buf.String() + return `` + + de.User + ` has left the chat.` case EvBan: - evBan.Execute(buf, de) - return buf.String() + return `` + + de.User + ` has been banned.` case EvJoin: - evJoin.Execute(buf, de) - return buf.String() + return `` + + de.User + ` has joined the chat.` case EvNameChange: - de.Users = strings.Split(de.User, ":") - if len(de.Users) < 2 { - evNameChangeWC.Execute(buf, ParseEmotes("Jebaited")) - } else { - evNameChange.Execute(buf, de) + names := strings.Split(de.User, ":") + if len(names) != 2 { + return `Somebody changed their name, but IDK who ` + + ParseEmotes("Jebaited") + `.` } - return buf.String() + + return `` + + names[0] + ` has changed their name to ` + names[1] + `.` case EvNameChangeForced: - de.Users = strings.Split(de.User, ":") - if len(de.Users) < 2 { - evNameChangeForcedWC.Execute(buf, ParseEmotes("Jebaited")) - } else { - evNameChangeForced.Execute(buf, de) + names := strings.Split(de.User, ":") + if len(names) != 2 { + return `An admin changed somebody's name, but IDK who ` + + ParseEmotes("Jebaited") + `.` } - return buf.String() + + return `` + + names[0] + ` has had their name changed to ` + names[1] + ` by an admin.` } return "" }