aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chat.go60
-rw-r--r--plugin_chatcmd.go51
2 files changed, 61 insertions, 50 deletions
diff --git a/chat.go b/chat.go
new file mode 100644
index 0000000..ca306a5
--- /dev/null
+++ b/chat.go
@@ -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()