|
|
|
@ -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),
|
|
|
|
|