aboutsummaryrefslogtreecommitdiff
path: root/telegram
diff options
context:
space:
mode:
authorbodqhrohro <bodqhrohro@gmail.com>2019-12-03 03:32:53 +0300
committerbodqhrohro <bodqhrohro@gmail.com>2019-12-03 03:32:53 +0300
commit90f0490e1626f3e0cd753caa5a4aac7787cb6dfc (patch)
tree08127d54f25c1e18b5dacc2f4ca3f011f224c5d1 /telegram
parent40b3c6a76884576dc4e3b81891c9c693c7882bab (diff)
Support commands in mapped chats
Diffstat (limited to 'telegram')
-rw-r--r--telegram/commands.go23
-rw-r--r--telegram/utils.go13
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
+ }
+ }
}