webhookSend send one or more message via webhook, taking care of file uploads (from slack, telegram or mattermost). Returns messageID and error.
(msg *config.Message, channelID string)
| 46 | // uploads (from slack, telegram or mattermost). |
| 47 | // Returns messageID and error. |
| 48 | func (b *Bdiscord) webhookSend(msg *config.Message, channelID string) (*discordgo.Message, error) { |
| 49 | var ( |
| 50 | res *discordgo.Message |
| 51 | err error |
| 52 | ) |
| 53 | |
| 54 | // If avatar is unset, mutate the message to include the local avatar (but only if settings say we should do this) |
| 55 | if msg.Avatar == "" { |
| 56 | msg.Avatar = b.maybeGetLocalAvatar(msg) |
| 57 | } |
| 58 | |
| 59 | // WebhookParams can have either `Content` or `File`. |
| 60 | |
| 61 | // We can't send empty messages. |
| 62 | if msg.Text != "" { |
| 63 | res, err = b.transmitter.Send( |
| 64 | channelID, |
| 65 | &discordgo.WebhookParams{ |
| 66 | Content: msg.Text, |
| 67 | Username: msg.Username, |
| 68 | AvatarURL: msg.Avatar, |
| 69 | AllowedMentions: b.getAllowedMentions(), |
| 70 | }, |
| 71 | ) |
| 72 | if err != nil { |
| 73 | b.Log.Errorf("Could not send text (%s) for message %#v: %s", msg.Text, msg, err) |
| 74 | } |
| 75 | } |
| 76 | |
| 77 | if msg.Extra != nil { |
| 78 | for _, f := range msg.Extra["file"] { |
| 79 | fi := f.(config.FileInfo) |
| 80 | file := discordgo.File{ |
| 81 | Name: fi.Name, |
| 82 | ContentType: "", |
| 83 | Reader: bytes.NewReader(*fi.Data), |
| 84 | } |
| 85 | content := fi.Comment |
| 86 | |
| 87 | _, e2 := b.transmitter.Send( |
| 88 | channelID, |
| 89 | &discordgo.WebhookParams{ |
| 90 | Username: msg.Username, |
| 91 | AvatarURL: msg.Avatar, |
| 92 | Files: []*discordgo.File{&file}, |
| 93 | Content: content, |
| 94 | AllowedMentions: b.getAllowedMentions(), |
| 95 | }, |
| 96 | ) |
| 97 | if e2 != nil { |
| 98 | b.Log.Errorf("Could not send file %#v for message %#v: %s", file, msg, e2) |
| 99 | } |
| 100 | } |
| 101 | } |
| 102 | return res, err |
| 103 | } |
| 104 | |
| 105 | func (b *Bdiscord) handleEventWebhook(msg *config.Message, channelID string) (string, error) { |
no test coverage detected