diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2021-09-09 20:03:15 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2021-09-09 20:03:15 +0200 |
commit | 097c93e1dbd0084f11b2c2d4acc8f4a16b103b60 (patch) | |
tree | e22bf2bd2cb3e45a9d72ab73661369046dac6cfb /chat.go | |
parent | b4f4f013a0edc7582bd3197a4738ba35622762fa (diff) |
Expose chat message API
Diffstat (limited to 'chat.go')
-rw-r--r-- | chat.go | 60 |
1 files changed, 60 insertions, 0 deletions
@@ -0,0 +1,60 @@ +package proxy + +import ( + "fmt" + "strings" + "time" + + "github.com/anon55555/mt" +) + +func (cc *ClientConn) SendChatMsg(msg string) { + cc.SendCmd(&mt.ToCltChatMsg{ + Type: mt.SysMsg, + Text: msg, + Timestamp: time.Now().Unix(), + }) +} + +func onChatMsg(cc *ClientConn, cmd *mt.ToSrvChatMsg) (string, bool) { + initChatCmds() + + if strings.HasPrefix(cmd.Msg, Conf().CmdPrefix) { + substrs := strings.Split(cmd.Msg, " ") + cmdName := strings.Replace(substrs[0], Conf().CmdPrefix, "", 1) + + var args []string + if len(substrs) > 1 { + args = substrs[1:] + } + + v := make([]interface{}, 2+len(args)) + v[0] = "command" + v[1] = cmdName + + for i, arg := range args { + v[i+2] = arg + } + + cc.Log("-->", v...) + + if !ChatCmdExists(cmdName) { + cc.Log("<--", "unknown command", cmdName) + return "Command not found.", true + } + + chatCmdsMu.RLock() + defer chatCmdsMu.RUnlock() + + cmd := chatCmds[cmdName] + + if !cc.HasPerms(cmd.Perm) { + cc.Log("<--", "deny command", cmdName) + return fmt.Sprintf("Missing permission %s.", cmd.Perm), true + } + + return cmd.Handler(cc, args...), true + } + + return "", false +} |