supplement to the last commit

This commit is contained in:
zhaoYangguang 2020-11-24 14:22:52 +08:00
parent 501dc54178
commit 4b0e58bfad
1 changed files with 12 additions and 27 deletions

View File

@ -95,34 +95,20 @@ func (mx *MatrixHandler) HandleBotInvite(evt *event.Event) {
return return
} }
resp, err := intent.JoinRoomByID(evt.RoomID) members := mx.joinAndCheckMembers(evt, intent)
if err != nil { if members == nil {
mx.log.Debugln("Failed to join room", evt.RoomID, "with invite from", evt.Sender)
return
}
members, err := intent.JoinedMembers(resp.RoomID)
if err != nil {
mx.log.Debugln("Failed to get members in room", resp.RoomID, "after accepting invite from", evt.Sender)
intent.LeaveRoom(resp.RoomID)
return
}
if len(members.Joined) < 2 {
mx.log.Debugln("Leaving empty room", resp.RoomID, "after accepting invite from", evt.Sender)
intent.LeaveRoom(resp.RoomID)
return return
} }
if !user.Whitelisted { if !user.Whitelisted {
intent.SendNotice(resp.RoomID, "You are not whitelisted to use this bridge.\n"+ _, _ = intent.SendNotice(evt.RoomID, "You are not whitelisted to use this bridge.\n"+
"If you're the owner of this bridge, see the bridge.permissions section in your config file.") "If you're the owner of this bridge, see the bridge.permissions section in your config file.")
intent.LeaveRoom(resp.RoomID) _, _ = intent.LeaveRoom(evt.RoomID)
return return
} }
if evt.RoomID == mx.bridge.Config.Bridge.Relaybot.ManagementRoom { if evt.RoomID == mx.bridge.Config.Bridge.Relaybot.ManagementRoom {
intent.SendNotice(evt.RoomID, "This is the relaybot management room. Send `!wa help` to get a list of commands.") _, _ = intent.SendNotice(evt.RoomID, "This is the relaybot management room. Send `!wa help` to get a list of commands.")
mx.log.Debugln("Joined relaybot management room", evt.RoomID, "after invite from", evt.Sender) mx.log.Debugln("Joined relaybot management room", evt.RoomID, "after invite from", evt.Sender)
return return
} }
@ -135,17 +121,16 @@ func (mx *MatrixHandler) HandleBotInvite(evt *event.Event) {
hasPuppets = true hasPuppets = true
continue continue
} }
mx.log.Debugln("Leaving multi-user room", resp.RoomID, "after accepting invite from", evt.Sender) mx.log.Debugln("Leaving multi-user room", evt.RoomID, "after accepting invite from", evt.Sender)
intent.SendNotice(resp.RoomID, "This bridge is user-specific, please don't invite me into rooms with other users.") _, _ = intent.SendNotice(evt.RoomID, "This bridge is user-specific, please don't invite me into rooms with other users.")
intent.LeaveRoom(resp.RoomID) _, _ = intent.LeaveRoom(evt.RoomID)
return return
} }
if !hasPuppets { if !hasPuppets && (len(user.ManagementRoom) == 0 || evt.Content.AsMember().IsDirect) {
user := mx.bridge.GetUserByMXID(evt.Sender) user.SetManagementRoom(evt.RoomID)
user.SetManagementRoom(resp.RoomID) _, _ = intent.SendNotice(user.ManagementRoom, "This room has been registered as your bridge management/status room. Send `help` to get a list of commands.")
intent.SendNotice(user.ManagementRoom, "This room has been registered as your bridge management/status room. Send `help` to get a list of commands.") mx.log.Debugln(evt.RoomID, "registered as a management room with", evt.Sender)
mx.log.Debugln(resp.RoomID, "registered as a management room with", evt.Sender)
} }
} }