How to catch invisible friends on GTalk
ajatus.in
ajatus.in
Yes, that's the whole point of being invisible. If your friends are misusing a technical feature in a manner you consider rude, perhaps you should try talking to them about it.
What if you discovered a technique to make a phone ring when the ringer is disabled or perhaps even when the phone is switched off? Using it outside of an emergency would obviously be quite rude.
This is a VERY common thing. It means that people tend to not want certain people initiating conversations with them, but they have no problem doing so when they need something.
It's a tool, it doesn't have a correct use case. Just common and uncommon.
My method is to remove people who are offline most of the time, so that they don't get to see my online status in return. I think that online status should be mutual, if I can't see them, they shouldn't be able to see me.
If they appear offline, but you don't see a response message that says "<username> is offline and can't receive messages right now.", then they're invisible.
(Only checked this in the desktop Google Talk client and the Gmail chat version)
This will have false-positives for people that genuinely have logged off (which gives the same <presence type='unavailable'/> stanza).
Another way to potentially check whether someone's online or not is to send a caps discovery request (ie. ask their client what XMPP extensions it support). If it replies, they're obviously online (haven't tested this, some clients may in fact be shrewd enough to ignore such requests when set to invisible).
1. Off the record (OTR) chats are not recorded.
2. There is message delivery notification in GTalk.
Putting these together: if you chat OTR with X and later, if you send a message to X (who is invisible) and you get a red error "X did not receive your message", then X is offline. For a normal offline contact, it would have been delivered as an offline message, but since the conversation is OTR, it cannot be recorded and hence you get a notification. :-)
On the other hand, if X is online, you don't get the red message.
1) Contact goes from Online to Invisible
2) Contact goes from Online to Offline by signing off
This effectively means that the script gives you no more information than what you get from the contact list. You can't know if someone went offline or went invisible.
Note that if you read that first link, you will see that you used to not only be able to see the "go invisible" event, you were also able to simply scan your entire buddy list for invisible users. Google fixed this 'vulnerability,' but for one reason or another left the ability to see the becomes-invisible event.
message = xmpp.Message(event.getFrom().getStripped(), 'BU!')
message.setAttr('type', 'chat')
C.send(message) like this. Two spaces is sufficient.