You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.7 KiB

// +build !rm_basic_commands allcommands editcmd
package main
import (
"fmt"
"strconv"
"strings"
)
func init() {
command := Command{
Cmd: []string{"edit", "e"},
Description: "$messageID - Edit a message (messageID is optional)",
Help: "",
Exec: cmdEdit,
}
RegisterCommand(command)
}
func cmdEdit(cmd []string) {
var messageID int
chat := k.NewChat(channel)
if len(cmd) == 2 || len(cmd) == 1 {
if len(cmd) == 2 {
messageID, _ = strconv.Atoi(cmd[1])
} else if lastMessage.ID != 0 {
message, _ := chat.ReadMessage(lastMessage.ID)
lastMessage.Type = message.Result.Messages[0].Msg.Content.Type
if lastMessage.Type != "text" {
printError("Last message isn't editable (is it an edit?)")
return
}
messageID = lastMessage.ID
} else {
printError("No message to edit")
return
}
origMessage, _ := chat.ReadMessage(messageID)
if origMessage.Result.Messages[0].Msg.Content.Type != "text" {
printInfo(fmt.Sprintf("%+v", origMessage))
return
}
if origMessage.Result.Messages[0].Msg.Sender.Username != k.Username {
printError("You cannot edit another user's messages.")
return
}
editString := origMessage.Result.Messages[0].Msg.Content.Text.Body
clearView("Edit")
popupView("Edit")
printToView("Edit", fmt.Sprintf("/e %d %s", messageID, editString))
setViewTitle("Edit", fmt.Sprintf(" Editing message %d ", messageID))
moveCursorToEnd("Edit")
return
}
if len(cmd) < 3 {
printError("Not enough options for Edit")
return
}
messageID, _ = strconv.Atoi(cmd[1])
newMessage := strings.Join(cmd[2:], " ")
_, err := chat.Edit(messageID, newMessage)
if err != nil {
printError(fmt.Sprintf("Error editing message %d, %+v", messageID, err))
}
}