MCPcopy
hub / github.com/42wim/matterbridge / webhookSend

Method webhookSend

bridge/discord/webhook.go:48–103  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

46// uploads (from slack, telegram or mattermost).
47// Returns messageID and error.
48func (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
105func (b *Bdiscord) handleEventWebhook(msg *config.Message, channelID string) (string, error) {

Callers 1

handleEventWebhookMethod · 0.95

Calls 3

maybeGetLocalAvatarMethod · 0.95
getAllowedMentionsMethod · 0.95
SendMethod · 0.65

Tested by

no test coverage detected