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.

71 lines
1.6 KiB

// +build !rm_basic_commands allcommands editcmd
package main
import (
"fmt"
"strconv"
"strings"
"github.com/jroimartin/gocui"
)
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 {
messageId = lastMessage.ID
}
origMessage, _ := chat.ReadMessage(messageId)
if origMessage.Result.Messages[0].Msg.Content.Type != "text" {
printToView("Feed", fmt.Sprintf("%+v", origMessage))
return
}
editString := origMessage.Result.Messages[0].Msg.Content.Text.Body
g.Update(func(g *gocui.Gui) error {
inputView, err := g.View("Input")
if err != nil {
return err
} else {
editString = fmt.Sprintf("/edit %d %s", messageId, editString)
fmt.Fprintf(inputView, editString)
viewX, viewY := inputView.Size()
if len(editString) < viewX {
viewX = len(editString)
viewY = 0
} else {
viewX = viewX / len(editString)
}
inputView.MoveCursor(viewX, viewY, true)
}
return nil
})
return
}
if len(cmd) < 3 {
printToView("Feed", "Not enough options for Edit")
return
}
messageId, _ = strconv.Atoi(cmd[1])
newMessage := strings.Join(cmd[2:], " ")
_, err := chat.Edit(messageId, newMessage)
if err != nil {
printToView("Feed", fmt.Sprintf("Error editing message %d, %+v", messageId, err))
}
}