diff -r ad9d484cd0c7 commands.go --- a/commands.go Tue Jan 15 19:53:46 2019 -0600 +++ b/commands.go Wed Jan 16 00:32:17 2019 -0700 @@ -1,6 +1,7 @@ package main import ( + "regexp" "strconv" "strings" "github.com/bwmarrin/discordgo" @@ -12,6 +13,41 @@ return line } switch line[:2] { + case "s/": + r := regexp.MustCompile(`s\/((\w|\s)+)\/((\w|\s|)+)\/`) + n := r.FindStringSubmatchIndex(line) + if len(n) < 1 { + return "" + } + msg := State.Messages + for i := len(msg)-1; i >= 0; i-- { + if (msg[i].ChannelID != State.Channel.ID && msg[i].GuildID != State.Guild.ID) { + break + } + if msg[i].Author.ID != Session.User.ID { + break + } + if strings.Contains(msg[i].Content, line[n[2]:n[3]]) { + cmd, err := regexp.Compile("(" + line[n[2]:n[3]] + ")") + if err != nil { + Msg(ErrorMsg, "%s - invalid regex\n", line) + } + rep := cmd.ReplaceAllString(msg[i].Content, "") + if len(line) == 5 { + rep = cmd.ReplaceAllString(msg[i].Content, line[n[4]:n[5]]) + } + data := discordgo.NewMessageEdit(msg[i].ChannelID, msg[i].ID) + data = data.SetContent(rep) + _, err = State.Session.DiscordGo.ChannelMessageEditComplex(data) + if err != nil { + Msg(ErrorMsg, "%s\n", err) + return "" + } + Msg(TextMsg, "%s -> %s\n", msg[i].Content, rep) + return "" + } + } + return line case ":?": // Show help menu Msg(TextMsg, "Commands: ")