Fix the problem that members cannot be added when creating a group

This commit is contained in:
zhaoYangguang 2020-09-24 16:58:49 +08:00
parent 8ff600bd23
commit 99c47fe6aa
4 changed files with 30 additions and 54 deletions

View File

@ -1151,9 +1151,7 @@ func (handler *CommandHandler) CommandCreate(ce *CommandEvent) {
handler.log.Debugln("Create Group", topic, "with", members)
err := user.Conn.HandleGroupCreate(members)
inputArr := strings.Split(ce.Args[1], ",")
inputArr = inputArr[1:]
members = skype.Members{}
for _, memberId := range inputArr {
members.Members = append(members.Members, skype.Member{
@ -1161,7 +1159,10 @@ func (handler *CommandHandler) CommandCreate(ce *CommandEvent) {
Role: "Admin",
})
}
err = user.Conn.AddMember(members, "")
conversationId, ok := <-user.Conn.CreateChan
if ok {
err = user.Conn.AddMember(members, conversationId)
}
if err != nil {
ce.Reply("Please confirm that parameters is correct.")
} else {

View File

@ -752,50 +752,33 @@ func (portal *Portal) ChangeAdminStatus(jids []string, setAdmin bool) {
//}
func (portal *Portal) membershipRemove(content string) {
xmlFormat := skype.XmlContent{}
xmlFormat := skype.XmlDeleteMember{}
err := xml.Unmarshal([]byte(content), &xmlFormat)
for _, target := range xmlFormat.Targets {
member := portal.bridge.GetPuppetByJID(target)
member := portal.bridge.GetPuppetByJID(xmlFormat.Target)
memberMaxid := strings.Replace(string(member.MXID), "@skype&8:", "@skype&8-", 1)
_, err = portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{
UserID: id.UserID(memberMaxid),
})
if err != nil {
portal.log.Errorln("Error %v member from whatsapp:", err)
}
//for _, chat := range user.Conn.Store.Chats {
// group := portal.bridge.GetPuppetByJID(chat.Id.(string))
// fmt.Println("member")
// fmt.Println(group)
// fmt.Println("用户信息:")
// fmt.Println(chat.Id.(string))
//
// if group == nil {
// portal.log.Errorln("%s is not exist", jid)
// continue
// }
// if group.JID == jid {
// _, err := portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{
// UserID: group.MXID,
// })
// if err != nil {
// portal.log.Errorln("Error %v member from whatsapp:", err)
// }
// }
//}
}
func (portal *Portal) membershipAdd(user *User, jid string) {
chatMap := make(map[string]skype.Conversation)
for _, chat := range user.Conn.Store.Chats {
if chat.Id == jid {
cid, _ := chat.Id.(string)
chatMap[cid] = chat
memberMaxid := strings.Replace(string(member.MXID), "@skype&8:", "@skype&8-", 1)
_, err = portal.MainIntent().KickUser(portal.MXID, &mautrix.ReqKickUser{
UserID: id.UserID(memberMaxid),
})
if err != nil {
portal.log.Errorln("Error %v member from whatsapp:", err)
}
}
}
func (portal *Portal) membershipAdd(content string) {
xmlFormat := skype.XmlAddMember{}
err := xml.Unmarshal([]byte(content), &xmlFormat)
for _, target := range xmlFormat.Targets {
puppet := portal.bridge.GetPuppetByJID(target)
fmt.Println("membershipAdd puppet jid", target)
err = puppet.IntentFor(portal).EnsureJoined(portal.MXID)
if err != nil {
portal.log.Errorln("Error %v joined member from skype:", err)
}
}
fmt.Println("membershipAddzsl:", chatMap)
user.syncPortals(chatMap, false)
}
func (portal *Portal) membershipCreate(user *User, cmd skypeExt.ChatUpdate) {

View File

@ -285,13 +285,7 @@ func (ext *ExtendedConn) HandleGroupKick(groupJid string, numbers[]string) (err
}
func (ext *ExtendedConn) HandleGroupCreate(numbers skype.Members) (err error) {
//var parts []string
//parts = append(parts, numbers...)
err = ext.Conn.CreateConversationGroup(numbers)
//if err != nil {
// fmt.Printf("%s HandleGroupCreate err", err)
//}
return
return ext.Conn.CreateConversationGroup(numbers)
}
func (ext *ExtendedConn) HandleGroupLeave(groupJid string) (err error) {

View File

@ -1077,16 +1077,14 @@ func (user *User) HandleChatUpdate(cmd skype.Resource) {
}
go portal.UpdateAvatar(user, avatar)
case skypeExt.ChatMemberAdd:
fmt.Println("portal.MXID")
fmt.Println(portal.MXID)
fmt.Println(user)
user.log.Debugfln("chat member add")
if len(portal.MXID) == 0 {
err := portal.CreateMatrixRoom(user)
if err != nil {
fmt.Println("create room failed")
}
}
go portal.membershipAdd(user, cmd.Jid)
go portal.membershipAdd(cmd.Content)
case skypeExt.ChatMemberDelete:
go portal.membershipRemove(cmd.Content)
//case skypeExt.ChatActionAddTopic: