diff options
author | bodqhrohro <bodqhrohro@gmail.com> | 2019-12-03 03:32:53 +0300 |
---|---|---|
committer | bodqhrohro <bodqhrohro@gmail.com> | 2019-12-03 03:32:53 +0300 |
commit | 90f0490e1626f3e0cd753caa5a4aac7787cb6dfc (patch) | |
tree | 08127d54f25c1e18b5dacc2f4ca3f011f224c5d1 /telegram | |
parent | 40b3c6a76884576dc4e3b81891c9c693c7882bab (diff) |
Support commands in mapped chats
Diffstat (limited to 'telegram')
-rw-r--r-- | telegram/commands.go | 23 | ||||
-rw-r--r-- | telegram/utils.go | 13 |
2 files changed, 32 insertions, 4 deletions
diff --git a/telegram/commands.go b/telegram/commands.go index 61e4882..102a2c4 100644 --- a/telegram/commands.go +++ b/telegram/commands.go @@ -97,8 +97,15 @@ func helpString(ht helpType) string { return str.String() } -// ProcessTransportCommand executes commands sent directly to the component -func (c *Client) ProcessTransportCommand(cmd string, args []string) string { +func parseCommand(cmdline string) (string, []string) { + bodyFields := strings.Fields(cmdline) + return bodyFields[0][1:], bodyFields[1:] +} + +// ProcessTransportCommand executes a command sent directly to the component +// and returns a response +func (c *Client) ProcessTransportCommand(cmdline string) string { + cmd, args := parseCommand(cmdline) switch cmd { case "login", "code", "password": if cmd == "login" && c.Session.Login != "" { @@ -127,3 +134,15 @@ func (c *Client) ProcessTransportCommand(cmd string, args []string) string { return "" } + +// ProcessChatCommand executes a command sent in a mapped chat +// and returns a response and the status of command support +func (c *Client) ProcessChatCommand(cmdline string) (string, bool) { + cmd, _ := parseCommand(cmdline) + switch cmd { + case "help": + return helpString(helpTypeChat), false + } + + return "", true +} diff --git a/telegram/utils.go b/telegram/utils.go index 7e9882d..d98cfb0 100644 --- a/telegram/utils.go +++ b/telegram/utils.go @@ -405,6 +405,15 @@ func (c *Client) messageToPrefix(message *client.Message, fileString string) str return strings.Join(prefix, " | ") } -func (c *Client) ProcessOutgoingMessage(chatID int, text string, messageID int) { - // TODO +// ProcessOutgoingMessage executes commands or sends messages to mapped chats +func (c *Client) ProcessOutgoingMessage(chatID int, text string, messageID int, returnJid string) { + if strings.HasPrefix(text, "/") { + response, isCommand := c.ProcessChatCommand(text) + if response != "" { + gateway.SendMessage(returnJid, strconv.Itoa(int(chatID)), response, c.xmpp) + } + if isCommand { + return + } + } } |