mirror of
https://github.com/42wim/matterbridge.git
synced 2024-11-15 00:19:24 +01:00
Handle same account in multiple gateways better
This commit is contained in:
parent
38d09dba2e
commit
12989bbd99
@ -170,7 +170,8 @@ func (gw *Gateway) handleMessage(msg config.Message, dest *bridge.Bridge) {
|
||||
}
|
||||
|
||||
func (gw *Gateway) ignoreMessage(msg *config.Message) bool {
|
||||
if gw.Router.getGatewayName(getChannelID(*msg)) != gw.Name {
|
||||
// if we don't have the bridge, ignore it
|
||||
if _, ok := gw.Bridges[msg.Account]; !ok {
|
||||
return true
|
||||
}
|
||||
if msg.Text == "" {
|
||||
@ -240,7 +241,7 @@ func (gw *Gateway) modifyAvatar(msg config.Message, dest *bridge.Bridge) string
|
||||
func (gw *Gateway) modifyMessage(msg *config.Message) {
|
||||
// replace :emoji: to unicode
|
||||
msg.Text = emojilib.Replace(msg.Text)
|
||||
msg.Gateway = gw.Router.getGatewayName(getChannelID(*msg))
|
||||
msg.Gateway = gw.Name
|
||||
}
|
||||
|
||||
func getChannelID(msg config.Message) string {
|
||||
|
@ -70,13 +70,14 @@ func (r *Router) getBridge(account string) *bridge.Bridge {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *Router) getGatewayName(channelID string) string {
|
||||
func (r *Router) getGatewayName(channelID string) []string {
|
||||
var names []string
|
||||
for _, gw := range r.Gateways {
|
||||
if _, ok := gw.Channels[channelID]; ok {
|
||||
return gw.Name
|
||||
names = append(names, gw.Name)
|
||||
}
|
||||
}
|
||||
return ""
|
||||
return names
|
||||
}
|
||||
|
||||
func (r *Router) handleReceive() {
|
||||
@ -103,13 +104,11 @@ func (r *Router) handleReceive() {
|
||||
}
|
||||
}
|
||||
for _, gw := range r.Gateways {
|
||||
if gw.Name == r.getGatewayName(getChannelID(msg)) {
|
||||
if !gw.ignoreMessage(&msg) {
|
||||
msg.Timestamp = time.Now()
|
||||
gw.modifyMessage(&msg)
|
||||
for _, br := range gw.Bridges {
|
||||
gw.handleMessage(msg, br)
|
||||
}
|
||||
if !gw.ignoreMessage(&msg) {
|
||||
msg.Timestamp = time.Now()
|
||||
gw.modifyMessage(&msg)
|
||||
for _, br := range gw.Bridges {
|
||||
gw.handleMessage(msg, br)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user