fix kick/remove puppet

This commit is contained in:
zhaoYangguang 2020-12-08 14:54:32 +08:00
parent f4499a6384
commit be7c67981b
1 changed files with 15 additions and 24 deletions

View File

@ -2,16 +2,14 @@ package main
import ( import (
"bytes" "bytes"
//whatsappExt "github.com/kelaresg/matrix-skype/whatsapp-ext" "maunium.net/go/mautrix/patch"
//"encoding/gob"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"encoding/xml" "encoding/xml"
"fmt" "fmt"
skype "github.com/kelaresg/go-skypeapi" skype "github.com/kelaresg/go-skypeapi"
skypeExt "github.com/kelaresg/matrix-skype/skype-ext" skypeExt "github.com/kelaresg/matrix-skype/skype-ext"
//whatsappExt "github.com/kelaresg/matrix-skype/whatsapp-ext"
"html" "html"
"image" "image"
"image/gif" "image/gif"
@ -28,14 +26,9 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
log "maunium.net/go/maulogger/v2" log "maunium.net/go/maulogger/v2"
"maunium.net/go/mautrix/crypto/attachment"
//"github.com/Rhymen/go-whatsapp"
//waProto "github.com/Rhymen/go-whatsapp/binary/proto"
"maunium.net/go/mautrix" "maunium.net/go/mautrix"
"maunium.net/go/mautrix/appservice" "maunium.net/go/mautrix/appservice"
"maunium.net/go/mautrix/crypto/attachment"
"maunium.net/go/mautrix/event" "maunium.net/go/mautrix/event"
"maunium.net/go/mautrix/format" "maunium.net/go/mautrix/format"
"maunium.net/go/mautrix/id" "maunium.net/go/mautrix/id"
@ -43,7 +36,6 @@ import (
"github.com/kelaresg/matrix-skype/database" "github.com/kelaresg/matrix-skype/database"
"github.com/kelaresg/matrix-skype/types" "github.com/kelaresg/matrix-skype/types"
//"github.com/kelaresg/matrix-skype/whatsapp-ext"
) )
func (bridge *Bridge) GetPortalByMXID(mxid id.RoomID) *Portal { func (bridge *Bridge) GetPortalByMXID(mxid id.RoomID) *Portal {
@ -779,7 +771,7 @@ func (portal *Portal) ChangeAdminStatus(jids []string, setAdmin bool) {
// UserID: member.MXID, // UserID: member.MXID,
// }) // })
// if err != nil { // if err != nil {
// portal.log.Errorln("Error %s member from whatsapp: %v", action, err) // portal.log.Errorln("Error %s member from skype: %v", action, err)
// } // }
// } // }
//} //}
@ -789,13 +781,14 @@ func (portal *Portal) membershipRemove(content string) {
err := xml.Unmarshal([]byte(content), &xmlFormat) err := xml.Unmarshal([]byte(content), &xmlFormat)
for _, target := range xmlFormat.Targets { for _, target := range xmlFormat.Targets {
member := portal.bridge.GetPuppetByJID(target) member := portal.bridge.GetPuppetByJID(target)
memberMXID := id.UserID(patch.Parse(string(member.MXID)))
memberMaxid := strings.Replace(string(member.MXID), "@skype&8:", "@skype&8-", 1) if portal.bridge.AS.StateStore.IsInRoom(portal.MXID, memberMXID) {
_, err = portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{ _, err = portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{
UserID: id.UserID(memberMaxid), UserID: member.MXID,
}) })
if err != nil { if err != nil {
portal.log.Errorln("Error %v member from whatsapp:", err) portal.log.Errorln("Error kick member from matrix after kick from skype: %v", err)
}
} }
} }
} }
@ -2326,17 +2319,15 @@ func (portal *Portal) HandleMatrixLeave(sender *User) {
} }
func (portal *Portal) HandleMatrixKick(sender *User, evt *event.Event) { func (portal *Portal) HandleMatrixKick(sender *User, evt *event.Event) {
number, _:= portal.bridge.ParsePuppetMXID(id.UserID(evt.GetStateKey())) jid, _:= portal.bridge.ParsePuppetMXID(id.UserID(evt.GetStateKey()))
puppet := portal.bridge.GetPuppetByMXID(id.UserID(evt.GetStateKey())) puppet := portal.bridge.GetPuppetByJID(jid)
fmt.Println("HandleMatrixKick", puppet)
if puppet != nil { if puppet != nil {
number = strings.Replace(number, skypeExt.NewUserSuffix, "", 1) jid = strings.Replace(jid, skypeExt.NewUserSuffix, "", 1)
err := sender.Conn.HandleGroupKick(portal.Key.JID, []string{number}) err := sender.Conn.HandleGroupKick(portal.Key.JID, []string{jid})
if err != nil { if err != nil {
portal.log.Errorfln("Failed to kick %s from group as %s: %v", puppet.JID, sender.MXID, err) portal.log.Errorfln("Failed to kick %s from group as %s: %v", puppet.JID, sender.MXID, err)
return return
} }
//portal.log.Infoln("Kick %s response: %s", puppet.JID, <-resp)
} }
} }