1 # renames bitlbee facebook-via-xmpp buddies to something sane
2 # Originally by Tim Angus, http://a.ngus.net/bitlbee_rename.pl
3 # Modified slightly to only rename people on chat.facebook.com, and also strip invalid chars from names, by Lakitu7
4 # copied in a mod by ajf on #bitlbee to only match u###### names
5 # truncates names over 25 chars to comply with bitlbee's limit; thanks Jesper on #bitlbee
7 # script is for irssi. Save it as .irssi/scripts/bitlbee_rename.pl then /script load bitlbee_rename.pl
8 # known issues: If the name it's renaming to is already taken, the rename fails.
15 my $bitlbeeChannel = "&bitlbee";
16 my %nicksToRename = ();
17 my $facebookhostname = "chat.facebook.com";
21 # "message join", SERVER_REC, char *channel, char *nick, char *address
22 my ($server, $channel, $nick, $address) = @_;
23 my $username = substr($address, 0, index($address,'@'));
24 my $host = substr($address, index($address,'@')+1);
26 if($channel =~ m/($bitlbeeChannel)/ and $nick =~ m/$username/ and $nick =~ m/^u\d+/ and $host =~ m/($facebookhostname)/ )
28 $nicksToRename{$nick} = $channel;
29 $server->command("whois $nick");
35 my ($server, $data) = @_;
36 my ($me, $nick, $user, $host) = split(" ", $data);
38 if (exists($nicksToRename{$nick}))
40 my $channel = $nicksToRename{$nick};
41 delete($nicksToRename{$nick});
43 my $ircname = substr($data, index($data,':')+1);
45 $ircname =~ s/[^A-Za-z0-9_]//g;
46 $ircname = substr( $ircname, 0, 25 );
48 $server->command("msg $channel rename $nick $ircname");
49 $server->command("msg $channel save");
53 Irssi::signal_add_first 'message join' => 'message_join';
54 Irssi::signal_add_first 'event 311' => 'whois_data';