summaryrefslogtreecommitdiffstats
path: root/bridge/discord/discord.go
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/discord/discord.go')
-rw-r--r--bridge/discord/discord.go51
1 files changed, 8 insertions, 43 deletions
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go
index 1e6f3751..07e4f776 100644
--- a/bridge/discord/discord.go
+++ b/bridge/discord/discord.go
@@ -250,49 +250,14 @@ func (b *Bdiscord) Send(msg config.Message) (string, error) {
// Use webhook to send the message
useWebhooks := b.shouldMessageUseWebhooks(&msg)
if useWebhooks && msg.Event != config.EventMsgDelete {
- // skip events
- if msg.Event != "" && msg.Event != config.EventUserAction && msg.Event != config.EventJoinLeave && msg.Event != config.EventTopicChange {
- return "", nil
- }
-
- // skip empty messages
- if msg.Text == "" && (msg.Extra == nil || len(msg.Extra["file"]) == 0) {
- b.Log.Debugf("Skipping empty message %#v", msg)
- return "", nil
- }
-
- msg.Text = helper.ClipMessage(msg.Text, MessageLength)
- msg.Text = b.replaceUserMentions(msg.Text)
- // discord username must be [0..32] max
- if len(msg.Username) > 32 {
- msg.Username = msg.Username[0:32]
- }
-
- if msg.ID != "" {
- b.Log.Debugf("Editing webhook message")
- err := b.transmitter.Edit(channelID, msg.ID, &discordgo.WebhookParams{
- Content: msg.Text,
- Username: msg.Username,
- })
- if err == nil {
- return msg.ID, nil
- }
- b.Log.Errorf("Could not edit webhook message: %s", err)
- }
-
- b.Log.Debugf("Processing webhook sending for message %#v", msg)
- msg, err := b.webhookSend(&msg, channelID)
- if err != nil {
- b.Log.Errorf("Could not broadcast via webook for message %#v: %s", msg, err)
- return "", err
- }
- if msg == nil {
- return "", nil
- }
-
- return msg.ID, nil
+ return b.handleEventWebhook(&msg, channelID)
}
+ return b.handleEventBotUser(&msg, channelID)
+}
+
+// handleEventDirect handles events via the bot user
+func (b *Bdiscord) handleEventBotUser(msg *config.Message, channelID string) (string, error) {
b.Log.Debugf("Broadcasting using token (API)")
// Delete message
@@ -306,7 +271,7 @@ func (b *Bdiscord) Send(msg config.Message) (string, error) {
// Upload a file if it exists
if msg.Extra != nil {
- for _, rmsg := range helper.HandleExtra(&msg, b.General) {
+ for _, rmsg := range helper.HandleExtra(msg, b.General) {
rmsg.Text = helper.ClipMessage(rmsg.Text, MessageLength)
if _, err := b.c.ChannelMessageSend(channelID, rmsg.Username+rmsg.Text); err != nil {
b.Log.Errorf("Could not send message %#v: %s", rmsg, err)
@@ -314,7 +279,7 @@ func (b *Bdiscord) Send(msg config.Message) (string, error) {
}
// check if we have files to upload (from slack, telegram or mattermost)
if len(msg.Extra["file"]) > 0 {
- return b.handleUploadFile(&msg, channelID)
+ return b.handleUploadFile(msg, channelID)
}
}