aboutsummaryrefslogtreecommitdiff
path: root/telegram/commands.go
diff options
context:
space:
mode:
Diffstat (limited to 'telegram/commands.go')
-rw-r--r--telegram/commands.go74
1 files changed, 10 insertions, 64 deletions
diff --git a/telegram/commands.go b/telegram/commands.go
index 4dafdf5..d9b9f13 100644
--- a/telegram/commands.go
+++ b/telegram/commands.go
@@ -14,6 +14,7 @@ import (
"github.com/zelenin/go-tdlib/client"
)
+const unknownCommand string = "Unknown command"
const notEnoughArguments string = "Not enough arguments"
const TelegramNotInitialized string = "Telegram connection is not initialized yet"
const TelegramAuthDone string = "Authorization is done already"
@@ -272,7 +273,7 @@ func (c *Client) ProcessTransportCommand(cmdline string, resource string) string
cmd, args := parseCommand(cmdline)
command, ok := transportCommands[cmd]
if !ok {
- return "Unknown command"
+ return unknownCommand
}
if len(args) < command.RequiredArgs {
return notEnoughArguments
@@ -498,6 +499,14 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
cmd, args := parseCommand(cmdline)
+ command, ok := chatCommands[cmd]
+ if !ok {
+ return unknownCommand, false
+ }
+ if len(args) < command.RequiredArgs {
+ return notEnoughArguments, true
+ }
+
switch cmd {
// delete message
case "d":
@@ -542,9 +551,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
if c.me == nil {
return "@me is not initialized", true
}
- if len(args) < 1 {
- return "Not enough arguments", true
- }
messages, err := c.getLastMessages(chatID, "", c.me.Id, 1)
if err != nil {
@@ -575,10 +581,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// send without sound
case "silent":
- if len(args) < 1 {
- return "Not enough arguments", true
- }
-
content := c.PrepareOutgoingMessageContent(rawCmdArguments(cmdline, 0))
if content != nil {
@@ -597,10 +599,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// schedule a message to timestamp or to going online
case "schedule":
- if len(args) < 2 {
- return "Not enough arguments", true
- }
-
var state client.MessageSchedulingState
var result string
due := args[0]
@@ -677,10 +675,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// forward a message to chat
case "forward":
- if len(args) < 2 {
- return notEnoughArguments, true
- }
-
messageId, err := strconv.ParseInt(args[0], 10, 64)
if err != nil {
return "Cannot parse message ID", true
@@ -742,10 +736,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// create group chat with current user
case "group":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
_, err := c.client.CreateNewBasicGroupChat(&client.CreateNewBasicGroupChatRequest{
UserIds: []int64{chatID},
Title: args[0],
@@ -773,10 +763,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// invite @username to current groupchat
case "invite":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -801,10 +787,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
return link.InviteLink, true
// kick @username from current group chat
case "kick":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -820,10 +802,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// mute @username [n hours]
case "mute":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -851,10 +829,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// unmute @username
case "unmute":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -874,10 +848,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// ban @username from current chat [for N hours]
case "ban":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -903,10 +873,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// unban @username
case "unban":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -922,10 +888,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
// promote @username to admin
case "promote":
- if len(args) < 1 {
- return notEnoughArguments, true
- }
-
contact, _, err := c.GetContactByUsername(args[0])
if err != nil {
return err.Error(), true
@@ -1133,10 +1095,6 @@ func (c *Client) ProcessChatCommand(chatID int64, cmdline string) (string, bool)
}
func (c *Client) cmdAdd(args []string) string {
- if len(args) < 1 {
- return notEnoughArguments
- }
-
chat, err := c.client.SearchPublicChat(&client.SearchPublicChatRequest{
Username: args[0],
})
@@ -1153,10 +1111,6 @@ func (c *Client) cmdAdd(args []string) string {
}
func (c *Client) cmdJoin(args []string) string {
- if len(args) < 1 {
- return notEnoughArguments
- }
-
if strings.HasPrefix(args[0], "@") {
chat, err := c.client.SearchPublicChat(&client.SearchPublicChatRequest{
Username: args[0],
@@ -1186,10 +1140,6 @@ func (c *Client) cmdJoin(args []string) string {
}
func (c *Client) cmdSupergroup(args []string, cmdline string) string {
- if len(args) < 1 {
- return notEnoughArguments
- }
-
_, err := c.client.CreateNewSupergroupChat(&client.CreateNewSupergroupChatRequest{
Title: args[0],
Description: rawCmdArguments(cmdline, 1),
@@ -1202,10 +1152,6 @@ func (c *Client) cmdSupergroup(args []string, cmdline string) string {
}
func (c *Client) cmdChannel(args []string, cmdline string) string {
- if len(args) < 1 {
- return notEnoughArguments
- }
-
_, err := c.client.CreateNewSupergroupChat(&client.CreateNewSupergroupChatRequest{
Title: args[0],
Description: rawCmdArguments(cmdline, 1),