2021-09-09 11:03:15 -07:00
|
|
|
package proxy
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/anon55555/mt"
|
|
|
|
)
|
|
|
|
|
2021-09-09 11:40:36 -07:00
|
|
|
func (cc *ClientConn) SendChatMsg(msg ...string) {
|
2021-09-09 11:03:15 -07:00
|
|
|
cc.SendCmd(&mt.ToCltChatMsg{
|
|
|
|
Type: mt.SysMsg,
|
2021-09-09 11:40:36 -07:00
|
|
|
Text: strings.Join(msg, " "),
|
2021-09-09 11:03:15 -07:00
|
|
|
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
|
|
|
|
}
|