forked from jshiffer/matterbridge
parent
0bcb0b882f
commit
a8fe54a78d
@ -146,6 +146,7 @@ type Protocol struct {
|
||||
type ChannelOptions struct {
|
||||
Key string // irc, xmpp
|
||||
WebhookURL string // discord
|
||||
Topic string // zulip
|
||||
}
|
||||
|
||||
type Bridge struct {
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"strconv"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/42wim/matterbridge/bridge"
|
||||
@ -17,10 +18,12 @@ type Bzulip struct {
|
||||
bot *gzb.Bot
|
||||
streams map[int]string
|
||||
*bridge.Config
|
||||
channelToTopic map[string]string
|
||||
sync.RWMutex
|
||||
}
|
||||
|
||||
func New(cfg *bridge.Config) bridge.Bridger {
|
||||
return &Bzulip{Config: cfg, streams: make(map[int]string)}
|
||||
return &Bzulip{Config: cfg, streams: make(map[int]string), channelToTopic: make(map[string]string)}
|
||||
}
|
||||
|
||||
func (b *Bzulip) Connect() error {
|
||||
@ -45,6 +48,9 @@ func (b *Bzulip) Disconnect() error {
|
||||
}
|
||||
|
||||
func (b *Bzulip) JoinChannel(channel config.ChannelInfo) error {
|
||||
b.Lock()
|
||||
defer b.Unlock()
|
||||
b.channelToTopic[channel.Name] = channel.Options.Topic
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -145,6 +151,9 @@ func (b *Bzulip) sendMessage(msg config.Message) (string, error) {
|
||||
if b.GetString("topic") != "" {
|
||||
topic = b.GetString("topic")
|
||||
}
|
||||
if res := b.getTopic(msg.Channel); res != "" {
|
||||
topic = res
|
||||
}
|
||||
m := gzb.Message{
|
||||
Stream: msg.Channel,
|
||||
Topic: topic,
|
||||
@ -191,3 +200,9 @@ func (b *Bzulip) handleUploadFile(msg *config.Message) (string, error) {
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (b *Bzulip) getTopic(channel string) string {
|
||||
b.RLock()
|
||||
defer b.RUnlock()
|
||||
return b.channelToTopic[channel]
|
||||
}
|
||||
|
@ -1196,6 +1196,8 @@ Server="https://yourserver.zulipchat.com"
|
||||
|
||||
#Topic of the messages matterbridge will use
|
||||
#OPTIONAL (default "matterbridge")
|
||||
#You can specify a specific topic for each channel using [gateway.inout.options]
|
||||
#See more information below at the gateway configuration
|
||||
Topic="matterbridge"
|
||||
|
||||
## RELOADABLE SETTINGS
|
||||
@ -1438,6 +1440,13 @@ enable=true
|
||||
[gateway.inout.options]
|
||||
webhookurl="https://discordapp.com/api/webhooks/123456789123456789/C9WPqExYWONPDZabcdef-def1434FGFjstasJX9pYht73y"
|
||||
|
||||
[[gateway.inout]]
|
||||
account="zulip.streamchat"
|
||||
channel="general"
|
||||
#OPTIONAL - topic only works for zulip
|
||||
[gateway.inout.options]
|
||||
topic="topic1"
|
||||
|
||||
#API example
|
||||
#[[gateway.inout]]
|
||||
#account="api.local"
|
||||
|
Loading…
Reference in New Issue
Block a user