commit a8f24a9cd15b4c5fddcea32db12ee03bb39d25dc
Author: Sacha Aury - Wolfman <sacha.aury@gmail.com>
Date: Mon Jun 26 20:07:27 2017 +0000
diff --git a/bridge/config/config.go b/bridge/config/config.go
index 246d6b8..6244dd6 100644
--- a/bridge/config/config.go
+++ b/bridge/config/config.go
@@ -776 +777 @@ type Protocol struct {
UseSASL bool // IRC
UseTLS bool // IRC
UseFirstName bool // telegram
+ WebhookURL string // discord
}
type ChannelOptions struct {
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go
index 8c7d971..e03aaa4 100644
--- a/bridge/discord/discord.go
+++ b/bridge/discord/discord.go
@@ -196 +198 @@ type bdiscord struct {
UseChannelID bool
userMemberMap map[string]*discordgo.Member
guildID string
+ webhookID string
+ webhookToken string
sync.RWMutex
}
@@ -356 +3712 @@ func New(cfg config.Protocol, account string, c chan config.Message) *bdiscord {
b.Remote = c
b.Account = account
b.userMemberMap = make(map[string]*discordgo.Member)
+ if b.Config.WebhookURL != "" {
+ flog.Debug("Configuring Discord Incoming Webhook")
+ webhookURLSplit := strings.Split(b.Config.WebhookURL, "/")
+ b.webhookToken = webhookURLSplit[len(webhookURLSplit)-1]
+ b.webhookID = webhookURLSplit[len(webhookURLSplit)-2]
+ }
return b
}
@@ -1017 +10921 @@ func (b *bdiscord) Send(msg config.Message) error {
flog.Errorf("Could not find channelID for %v", msg.Channel)
return nil
}
- b.c.ChannelMessageSend(channelID, msg.Username+msg.Text)
+ if b.Config.WebhookURL == ""{
+ flog.Debugf("Broadcasting using API")
+ b.c.ChannelMessageSend(channelID, msg.Username+msg.Text)
+ } else {
+ flog.Debugf("Broadcasting using Webhook")
+ b.c.WebhookExecute(
+ b.webhookID,
+ b.webhookToken,
+ true,
+ &discordgo.WebhookParams{
+ Content: msg.Text,
+ Username: msg.Username,
+ AvatarURL: msg.Avatar,
+ })
+ }
return nil
}
@@ -1226 +14410 @@ func (b *bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat
if m.Author.Username == b.Nick {
return
}
+ // if using webhooks, do not relay if it's ours
+ if b.Config.WebhookURL != "" && m.Author.Bot && m.Author.ID == b.webhookID {
+ return
+ }
if len(m.Attachments) > 0 {
for _, attach := range m.Attachments {
m.Content = m.Content + "\n" + attach.URL
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index 53a584a..a5c523b 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -4546 +45410 @@ Server="yourservername"
#OPTIONAL (default false)
ShowEmbeds=false
+#Specify WebhookURL. If given, will relay messages using the Webhook, which gives a better look to messages.
+#OPTIONAL (default empty)
+WebhookURL="Yourwebhooktokenhere"
+
#Disable sending of edits to other bridges
#OPTIONAL (default false)
EditDisable=false