NOTA: voleva parlare di questo per coloro che vogliono fare ciò che è menzionato in questo thread. Se non si ha familiarità con il protocollo e le stanze XMPP, si potrebbero perdere alcune informazioni necessarie per impostare lo stato corretto. I documenti del modulo xmpppy non sembrano esplicitare esplicitamente i passaggi per impostare la presenza.
L'impostazione della presenza iniziale è più semplice, come mostrato nei post precedenti in questa discussione. Imposta una presenza (tipo) predefinita di utente disponibile. Non sono sicuro quali siano gli stati di "stato" e "show" di default, si presuma in bianco o "disponibile" anche.
Tuttavia, quando si imposta un nuovo stato definendo un nuovo oggetto presenza per inviare lo stato, se si inizializza l'oggetto con valori predefiniti (senza argomenti) come nel post originale qui, l'oggetto presenza (o stanza) da inviare è incompleto perché non definisce una presenza corretta "tipo". Quindi, a seconda del server XMPP con cui si sta lavorando, potrebbe o meno prendere le impostazioni correttamente.
Il modo corretto per inizializzare nuovo oggetto stato di presenza sarebbe come questo:
offPres = xmpp.Presence(typ='unavailable',show='unavailable',status='unavailable')
o semplicemente quanto segue, se commutazione tra "disponibile on-line /" e "non disponibile/offline" w/o accedendo e fuori dalla sessione di IM XMPP, dove non ci interessa cosa viene mostrato per stato/stato dello stato (cioè l'etichetta che vedi associata allo stato, come "Offline - away" vs solo "offline").
offPres = xmpp.Presence(typ='unavailable')
Per lo stato personalizzato come DND, Away, Out to Lunch, ecc., Diventa un po 'più complicato. Non ho molta familiarità con XMPP, ma presumo che tu specifichi lo stato e mostri il valore dello stato come tale (ad esempio DND, Away) mentre imposti il tipo di presenza come "disponibile" o "non disponibile" a seconda che tu voglia apparire in questo modo o non.
E in base ai documenti xmpppy, è possibile specificare solo il tipo di presenza all'inizializzazione dell'oggetto, non è possibile modificarlo in seguito. Ma è possibile modificare lo stato e mostrare gli stati per l'oggetto presenza dopo l'inizializzazione. Questo è fatto come mostrato nel post originale qui. Per lo stato di visualizzazione, è disponibile un metodo setShow corrispondente allo setStatus.
L'invio della presenza è uguale a quello del post originale.
Cosa restituisce pres.getStatus()? – Xavier
Sembra che restituisca il contenuto di new_status, in questo caso "blah blah blah". – snostorm