From 7d6b11ee2f76d83131a71d6c8001e8ab68bf1475 Mon Sep 17 00:00:00 2001 From: Etzelia Date: Thu, 2 Jul 2020 22:43:43 +0200 Subject: [PATCH] Fix message scrubbing (#5) Fix message scrubbing Signed-off-by: Etzelia Reviewed-on: https://git.etztech.xyz/Etzelia/sedbot/pulls/5 --- discord/discord.go | 17 +++++++++++++---- discord/insult.go | 11 +++++------ discord/register.go | 2 +- go.mod | 6 ++++-- go.sum | 29 +++++++++++++---------------- 5 files changed, 36 insertions(+), 29 deletions(-) diff --git a/discord/discord.go b/discord/discord.go index 3398e88..6a8c093 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -69,8 +69,17 @@ func sendTyping(s *discordgo.Session, channelID string) { } } -func sendMessage(s *discordgo.Session, channelID, content string) *discordgo.Message { - msg, err := s.ChannelMessageSend(channelID, content) +func sendMessage(s *discordgo.Session, channelID, content string, scrub bool) *discordgo.Message { + var msg *discordgo.Message + var err error + if scrub { + msg, err = s.ChannelMessageSendComplex(channelID, &discordgo.MessageSend{ + Content: content, + AllowedMentions: &discordgo.MessageAllowedMentions{}, + }) + } else { + msg, err = s.ChannelMessageSend(channelID, content) + } if err != nil { beaver.Errorf("could not send message: %v", err) return nil @@ -136,7 +145,7 @@ func commandHandler(cfg *config.Config, db *database.Database) func(s *discordgo database: db, } if !cmd.validate(cmdInit) { - sendMessage(s, m.ChannelID, "You cannot run this command.") + sendMessage(s, m.ChannelID, "You cannot run this command.", false) return } feedback, err := cmd.run(cmdInit) @@ -145,7 +154,7 @@ func commandHandler(cfg *config.Config, db *database.Database) func(s *discordgo beaver.Errorf("error while running %s: %v", cmdArg, err) } if len(feedback) > 0 { - sendMessage(s, m.ChannelID, feedback) + sendMessage(s, m.ChannelID, feedback, false) } } } diff --git a/discord/insult.go b/discord/insult.go index d541468..28eaeea 100644 --- a/discord/insult.go +++ b/discord/insult.go @@ -17,8 +17,7 @@ func init() { return "Woah, slow down!", nil } - args, err := cmd.message.ContentWithMoreMentionsReplaced(cmd.session) - fields := strings.Fields(args) + fields := strings.Fields(cmd.message.Content) var target string if len(fields) > 1 { @@ -29,9 +28,6 @@ func init() { target = cmd.message.Author.Username } - if err != nil { - return "", err - } insult := fmt.Sprintf("%s, your %s looks like %s, you %s %s.", target, random(cmd.config.Insult.Targets), @@ -39,7 +35,10 @@ func init() { random(cmd.config.Insult.Adjectives), random(cmd.config.Insult.Nouns), ) - return insult, nil + + sendMessage(cmd.session, cmd.message.ChannelID, insult, true) + + return "", nil }, help: "Insult someone!", } diff --git a/discord/register.go b/discord/register.go index 1d79152..9f5ff63 100644 --- a/discord/register.go +++ b/discord/register.go @@ -68,7 +68,7 @@ func init() { } // Don't return feedback because this goes in a different channel - sendMessage(cmd.session, cmd.config.RegisteredChannel, fmt.Sprintf("Welcome, **%s**!", cmd.message.Author.Mention())) + sendMessage(cmd.session, cmd.config.RegisteredChannel, fmt.Sprintf("Welcome, **%s**!", cmd.message.Author.Mention()), false) return "", nil }, help: "Register yourself with the Discord", diff --git a/go.mod b/go.mod index 75c4437..1da66bc 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,13 @@ go 1.14 require ( github.com/BurntSushi/toml v0.3.1 - github.com/bwmarrin/discordgo v0.20.3 - github.com/urfave/cli/v2 v2.2.0 // indirect + github.com/bwmarrin/discordgo v0.21.1 + github.com/gorilla/websocket v1.4.2 // indirect go.etcd.io/bbolt v1.3.4 go.etztech.xyz/go-mcm v1.3.0 go.etztech.xyz/inspiro v0.0.0-20200606185551-edfdf9da2359 go.jolheiser.com/beaver v1.0.2 go.jolheiser.com/gojang v0.0.1 + golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect + golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect ) diff --git a/go.sum b/go.sum index b849b9e..0ed717f 100644 --- a/go.sum +++ b/go.sum @@ -1,23 +1,13 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/bwmarrin/discordgo v0.20.3 h1:AxjcHGbyBFSC0a3Zx5nDQwbOjU7xai5dXjRnZ0YB7nU= -github.com/bwmarrin/discordgo v0.20.3/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/bwmarrin/discordgo v0.21.1 h1:UI2PWwzvn5IFuscYcDc6QB/duhs9MUIjQ4HclcIZisc= +github.com/bwmarrin/discordgo v0.21.1/go.mod h1:c1WtWUGN6nREDmzIpyTp/iD3VYt4Fpx+bVyfBG7JE+M= github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/urfave/cli v1.22.4 h1:u7tSpNPPswAFymm8IehJhy4uJMlUuU/GmqSkvJ1InXA= -github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= -github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etztech.xyz/go-mcm v1.2.0 h1:QEOv6oAjy9ICP3AOcwItNT88wBjOZHK7UKseZEcZh0k= -go.etztech.xyz/go-mcm v1.2.0/go.mod h1:Hz2YULB3sN/aQA8cPSm2d6LM3E3qTMspzfRCIAD/1dc= go.etztech.xyz/go-mcm v1.3.0 h1:ULhLEHRJZYh+hIgHfp7IuqpOn6H7kkrVxnnfzyZLQM0= go.etztech.xyz/go-mcm v1.3.0/go.mod h1:Hz2YULB3sN/aQA8cPSm2d6LM3E3qTMspzfRCIAD/1dc= go.etztech.xyz/inspiro v0.0.0-20200606185551-edfdf9da2359 h1:j/ZeoAj185wHfCSYD52Kt/69i3Bzk1MXN4Qh1yP6+P4= @@ -28,9 +18,16 @@ go.jolheiser.com/gojang v0.0.1 h1:hK4ELqfY+FFNjf/juU0nszxV/fbdlNl1guyJRS3LETs= go.jolheiser.com/gojang v0.0.1/go.mod h1:hUBULFDoampNM97E1IaYUhkLBJ30sb7iGsoFOdDU76I= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16 h1:y6ce7gCWtnH+m3dCjzQ1PCuwl28DDIc3VNnvY29DlIA= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=