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 | |
parent | b4f4f013a0edc7582bd3197a4738ba35622762fa (diff) |
Expose chat message API
-rw-r--r-- | chat.go | 60 | ||||
-rw-r--r-- | plugin_chatcmd.go | 51 |
2 files changed, 61 insertions, 50 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 +} diff --git a/plugin_chatcmd.go b/plugin_chatcmd.go index 8afbe22..04e2396 100644 --- a/plugin_chatcmd.go +++ b/plugin_chatcmd.go @@ -1,12 +1,6 @@ package proxy -import ( - "fmt" - "strings" - "sync" - - "github.com/anon55555/mt" -) +import "sync" type ChatCmd struct { Name string @@ -42,49 +36,6 @@ func RegisterChatCmd(cmd ChatCmd) bool { return true } -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 -} - func initChatCmds() { chatCmdsOnce.Do(func() { chatCmdsMu.Lock() |