add command "logout"

This commit is contained in:
zhaoYangguang 2020-10-13 13:15:19 +08:00
parent ffa87ebcfc
commit 5b122411ae
2 changed files with 25 additions and 55 deletions

View File

@ -113,8 +113,8 @@ func (handler *CommandHandler) CommandMux(ce *CommandEvent) {
// handler.CommandDevTest(ce) // handler.CommandDevTest(ce)
//case "set-pl": //case "set-pl":
// handler.CommandSetPowerLevel(ce) // handler.CommandSetPowerLevel(ce)
//case "logout": case "logout":
// handler.CommandLogout(ce) handler.CommandLogout(ce)
case "login-matrix", "sync", "list", "open", "pm", "invite", "kick", "leave", "join", "create", "share": case "login-matrix", "sync", "list", "open", "pm", "invite", "kick", "leave", "join", "create", "share":
if !ce.User.HasSession() { if !ce.User.HasSession() {
ce.Reply("You are not logged in. Use the `login` command to log into WhatsApp.") ce.Reply("You are not logged in. Use the `login` command to log into WhatsApp.")
@ -245,8 +245,21 @@ func (handler *CommandHandler) CommandLogin(ce *CommandEvent) {
} }
} }
const cmdLogoutHelp = `logout - Logout from WhatsApp` const cmdLogoutHelp = `logout - Logout from Skype`
func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
//ce.User.Conn.Conn.LogoutChan <- 1
ce.User.Conn.LoggedIn = false
ce.User.Conn.LoginInfo = &skype.Session{
SkypeToken: "",
SkypeExpires: "",
RegistrationToken: "",
RegistrationTokenStr: "",
RegistrationExpires: "",
LocationHost: "",
EndpointId: "",
}
ce.Reply("Logged out successfully.")
}
// CommandLogout handles !logout command // CommandLogout handles !logout command
//func (handler *CommandHandler) CommandLogout(ce *CommandEvent) { //func (handler *CommandHandler) CommandLogout(ce *CommandEvent) {
// if ce.User.Session == nil { // if ce.User.Session == nil {
@ -446,7 +459,7 @@ func (handler *CommandHandler) CommandHelp(ce *CommandEvent) {
ce.Reply("* " + strings.Join([]string{ ce.Reply("* " + strings.Join([]string{
cmdPrefix + cmdHelpHelp, cmdPrefix + cmdHelpHelp,
cmdPrefix + cmdLoginHelp, cmdPrefix + cmdLoginHelp,
//cmdPrefix + cmdLogoutHelp, cmdPrefix + cmdLogoutHelp,
//cmdPrefix + cmdDeleteSessionHelp, //cmdPrefix + cmdDeleteSessionHelp,
//cmdPrefix + cmdReconnectHelp, //cmdPrefix + cmdReconnectHelp,
//cmdPrefix + cmdDisconnectHelp, //cmdPrefix + cmdDisconnectHelp,

57
user.go
View File

@ -373,9 +373,7 @@ func (user *User) Login(ce *CommandEvent, name string, password string) (err err
} }
ce.Reply("Successfully logged in") ce.Reply("Successfully logged in")
// subscribe basic user.Conn.Subscribes() // subscribe basic event
user.Conn.Subscribes()
// subscribe conta
err = user.Conn.Conn.ContactList(user.Conn.UserProfile.Username) err = user.Conn.Conn.ContactList(user.Conn.UserProfile.Username)
if err == nil{ if err == nil{
var userIds []string var userIds []string
@ -395,11 +393,15 @@ func (user *User) Login(ce *CommandEvent, name string, password string) (err err
user.SetSession(user.Conn.LoginInfo) user.SetSession(user.Conn.LoginInfo)
user.JID = "8:" + user.Conn.UserProfile.Username + skypeExt.NewUserSuffix user.JID = "8:" + user.Conn.UserProfile.Username + skypeExt.NewUserSuffix
user.addToJIDMap() user.addToJIDMap()
ce.User.Conn.GetConversations("", user.bridge.Config.Bridge.InitialChatSync) _ = ce.User.Conn.GetConversations("", user.bridge.Config.Bridge.InitialChatSync)
return return
} }
func loopPresence(user *User) {
func loopPresence(user *User) {
for { for {
if user.Conn.LoggedIn == false {
break
}
for cid, contact := range user.contactsPresence { for cid, contact := range user.contactsPresence {
puppet := user.bridge.GetPuppetByJID(cid) puppet := user.bridge.GetPuppetByJID(cid)
_ = puppet.DefaultIntent().SetPresence(event.Presence(strings.ToLower(contact.Availability))) _ = puppet.DefaultIntent().SetPresence(event.Presence(strings.ToLower(contact.Availability)))
@ -407,51 +409,6 @@ func loopPresence(user *User) {
time.Sleep(39 * time.Second) time.Sleep(39 * time.Second)
} }
} }
func (user *User) Login1(ce *CommandEvent) {
//qrChan := make(chan string, 3)
//eventIDChan := make(chan id.EventID, 1)
//go user.loginQrChannel(ce, qrChan, eventIDChan)
//session, err := user.Conn.LoginWithRetry(qrChan, user.bridge.Config.Bridge.LoginQRRegenCount)
//qrChan <- "stop"
//if err != nil {
// var eventID id.EventID
// select {
// case eventID = <-eventIDChan:
// default:
// }
// reply := event.MessageEventContent{
// MsgType: event.MsgText,
// }
// if err == whatsapp.ErrAlreadyLoggedIn {
// reply.Body = "You're already logged in"
// } else if err == whatsapp.ErrLoginInProgress {
// reply.Body = "You have a login in progress already."
// } else if err == whatsapp.ErrLoginTimedOut {
// reply.Body = "QR code scan timed out. Please try again."
// } else {
// user.log.Warnln("Failed to log in:", err)
// reply.Body = fmt.Sprintf("Unknown error while logging in: %v", err)
// }
// msg := reply
// if eventID != "" {
// msg.NewContent = &reply
// msg.RelatesTo = &event.RelatesTo{
// Type: event.RelReplace,
// EventID: eventID,
// }
// }
// _, _ = ce.Bot.SendMessageEvent(ce.RoomID, event.EventMessage, &msg)
// return
//}
//// TODO there's a bit of duplication between this and the provisioning API login method
//// Also between the two logout methods (commands.go and provisioning.go)
//user.ConnectionErrors = 0
//user.JID = strings.Replace(user.Conn.Info.Wid, whatsappExt.OldUserSuffix, whatsappExt.NewUserSuffix, 1)
//user.addToJIDMap()
//user.SetSession(&session)
//ce.Reply("Successfully logged in, synchronizing chats...")
//user.PostLogin()
}
type Chat struct { type Chat struct {
Portal *Portal Portal *Portal