Add support for unbridging guilds
This commit is contained in:
32
portal.go
32
portal.go
@@ -177,6 +177,10 @@ func (br *DiscordBridge) GetAllPortals() []*Portal {
|
||||
return br.dbPortalsToPortals(br.DB.Portal.GetAll())
|
||||
}
|
||||
|
||||
func (br *DiscordBridge) GetAllPortalsInGuild(guildID string) []*Portal {
|
||||
return br.dbPortalsToPortals(br.DB.Portal.GetAllInGuild(guildID))
|
||||
}
|
||||
|
||||
func (br *DiscordBridge) GetAllIPortals() (iportals []bridge.Portal) {
|
||||
portals := br.GetAllPortals()
|
||||
iportals = make([]bridge.Portal, len(portals))
|
||||
@@ -1291,6 +1295,12 @@ func (portal *Portal) RemoveMXID() {
|
||||
}
|
||||
delete(portal.bridge.portalsByMXID, portal.MXID)
|
||||
portal.MXID = ""
|
||||
portal.AvatarSet = false
|
||||
portal.NameSet = false
|
||||
portal.TopicSet = false
|
||||
portal.Encrypted = false
|
||||
portal.InSpace = ""
|
||||
portal.FirstEventID = ""
|
||||
portal.Update()
|
||||
portal.bridge.DB.Message.DeleteAll(portal.Key)
|
||||
}
|
||||
@@ -1316,9 +1326,13 @@ func (portal *Portal) cleanup(puppetsOnly bool) {
|
||||
return
|
||||
}
|
||||
|
||||
members, err := intent.JoinedMembers(portal.MXID)
|
||||
portal.bridge.cleanupRoom(intent, portal.MXID, puppetsOnly, portal.log)
|
||||
}
|
||||
|
||||
func (br *DiscordBridge) cleanupRoom(intent *appservice.IntentAPI, mxid id.RoomID, puppetsOnly bool, log log.Logger) {
|
||||
members, err := intent.JoinedMembers(mxid)
|
||||
if err != nil {
|
||||
portal.log.Errorln("Failed to get portal members for cleanup:", err)
|
||||
log.Errorln("Failed to get portal members for cleanup:", err)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1327,23 +1341,23 @@ func (portal *Portal) cleanup(puppetsOnly bool) {
|
||||
continue
|
||||
}
|
||||
|
||||
puppet := portal.bridge.GetPuppetByMXID(member)
|
||||
puppet := br.GetPuppetByMXID(member)
|
||||
if puppet != nil {
|
||||
_, err = puppet.DefaultIntent().LeaveRoom(portal.MXID)
|
||||
_, err = puppet.DefaultIntent().LeaveRoom(mxid)
|
||||
if err != nil {
|
||||
portal.log.Errorln("Error leaving as puppet while cleaning up portal:", err)
|
||||
log.Errorln("Error leaving as puppet while cleaning up portal:", err)
|
||||
}
|
||||
} else if !puppetsOnly {
|
||||
_, err = intent.KickUser(portal.MXID, &mautrix.ReqKickUser{UserID: member, Reason: "Deleting portal"})
|
||||
_, err = intent.KickUser(mxid, &mautrix.ReqKickUser{UserID: member, Reason: "Deleting portal"})
|
||||
if err != nil {
|
||||
portal.log.Errorln("Error kicking user while cleaning up portal:", err)
|
||||
log.Errorln("Error kicking user while cleaning up portal:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_, err = intent.LeaveRoom(portal.MXID)
|
||||
_, err = intent.LeaveRoom(mxid)
|
||||
if err != nil {
|
||||
portal.log.Errorln("Error leaving with main intent while cleaning up portal:", err)
|
||||
log.Errorln("Error leaving with main intent while cleaning up portal:", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user