/autorun/fuckyou.pl

https://bitbucket.org/sroofies/irc-shit · Perl · 128 lines · 80 code · 18 blank · 30 comment · 4 complexity · 6513d71d4b37d17441726b3825fbf069 MD5 · raw file

  1. use Irssi;
  2. use Irssi::Irc;
  3. use Time::HiRes qw(time);
  4. use Digest::MD5 qw(md5_hex);
  5. #__ ___ ____ _ _ ___ _ _ ____ _ _ ____ ___ _ _ ____
  6. #\ \ / / \ | _ \| \ | |_ _| \ | |/ ___| | | | / ___|_ _| \ | |/ ___|
  7. # \ \ /\ / / _ \ | |_) | \| || || \| | | _ | | | \___ \| || \| | | _
  8. # \ V V / ___ \| _ <| |\ || || |\ | |_| | | |_| |___) | || |\ | |_| |
  9. # \_/\_/_/ \_\_| \_\_| \_|___|_| \_|\____| \___/|____/___|_| \_|\____|
  10. #
  11. # _____ _ _ _____ ____ _____ ____ ____ ____ ___ ____ _____ ____
  12. #|_ _| | | | ____/ ___|| ____| / ___| / ___| _ \|_ _| _ \_ _/ ___|
  13. # | | | |_| | _| \___ \| _| \___ \| | | |_) || || |_) || | \___ \
  14. # | | | _ | |___ ___) | |___ ___) | |___| _ < | || __/ | | ___) |
  15. # |_| |_| |_|_____|____/|_____| |____/ \____|_| \_\___|_| |_| |____/
  16. #
  17. # __ __ _ __ __ ____ _____ _ _ _ __ __
  18. #| \/ | / \\ \ / / | _ \| ____| / \ | | | | \ \ / /
  19. #| |\/| | / _ \\ V / | |_) | _| / _ \ | | | | \ \//
  20. #| | | |/ ___ \| | | _ <| |___ / ___ \| |___| |___| |
  21. #|_| |_/_/ \_\_| |_| \_\_____/_/ \_\_____|_____|_|
  22. #
  23. # _____ _ _ ____ _ _____ _ _ ____ _ _ _ _ _ _____ __
  24. #| ___| | | |/ ___| |/ /_ _| \ | |/ ___| / \ | \ | | \ | |/ _ \ \ / /
  25. #| |_ | | | | | | ' / | || \| | | _ / _ \ | \| | \| | | | \ V /
  26. #| _| | |_| | |___| . \ | || |\ | |_| | / ___ \| |\ | |\ | |_| || |
  27. #|_| \___/ \____|_|\_\___|_| \_|\____| /_/ \_\_| \_|_| \_|\___/ |_|
  28. #
  29. #__ _____ _ _ ____ _ _ ____ _____ ____ ____
  30. #\ \ / / _ \| | | | _ \ | | | / ___|| ____| _ \/ ___|
  31. # \ V / | | | | | | |_) | | | | \___ \| _| | |_) \___ \
  32. # | || |_| | |_| | _ < | |_| |___) | |___| _ < ___) |
  33. # |_| \___/ \___/|_| \_\ \___/|____/|_____|_| \_\____/
  34. use vars qw($VERSION %IRSSI); $VERSION = "2.2";
  35. %IRSSI = (
  36. authors => "Goat-See AND /SET ABLE BY SNAPE",
  37. contact => "mrtheplague@gmail.com",
  38. name => "fuckyou",
  39. description => "/fuckyou NICK numberchannels",
  40. license => "urmom",
  41. url => "http://www.buttes.org/",
  42. );
  43. my $FORCEPART = "forcepart"; # Change these if your ircd is not gay/unreal and uses
  44. my $FORCEJOIN = "forcejoin"; # forcejoin and forcepart as the command
  45. Irssi::settings_add_str("fuckyou", "fuckyou", "owned_by_penisbird");
  46. Irssi::signal_add('setup changed', \&reload_settings);
  47. my $FURRY;
  48. sub reload_settings {
  49. $FURRY = Irssi::settings_get_str("fuckyou");
  50. }
  51. sub cmd_fuckyou
  52. {
  53. my ($data, $server, $dest) = @_;
  54. my ($nick, $amt_end) = split(/ +/, $data);
  55. unless($nick && $amt_end)
  56. {
  57. Irssi::print("/fuckyou <nick> <amt> ALSO DO /SET fuckyou <chanprefix> for both unfuck and fuck");
  58. return;
  59. }
  60. for(1 .. $amt_end)
  61. {
  62. my $nig = md5_hex($$ * time * $_);
  63. $server->command("$FORCEJOIN $nick #${FURRY}_$nig");
  64. }
  65. }
  66. sub cmd_unfuckyou
  67. {
  68. my ($data, $server, $channel)= @_;
  69. return Irssi::print("/unfuckyou user user2 user3") unless $data;
  70. foreach my $dick (split(" ", $data))
  71. {
  72. @niggers=();
  73. $server->redirect_event(
  74. "whois", 1, $dick, 0,
  75. undef,
  76. {
  77. "event 319" => "redir autowhois_channels",
  78. "" => "event empty"
  79. }
  80. );
  81. $server->send_raw("WHOIS :$dick");
  82. }
  83. }
  84. sub event_whois_channels
  85. {
  86. my ($server, $data) = @_;
  87. my ($num, $nick, $channels) = split(/ +/, $data, 3);
  88. my @niggers = ();
  89. my $counter=0;
  90. $channels =~ s/^://;
  91. $channels =~ s/[ ]{1,}$//;
  92. @niggers = split(' ', $channels);
  93. foreach (@niggers)
  94. {
  95. s/[@%+]([&#])/$1/;
  96. if(/[&#](fuck_you|owned_by_penisbird|$FURRY)_[a-f0-9]+/i)
  97. {
  98. #Irssi::print("Forceparting $nick from $_");
  99. $server->send_raw("$FORCEPART $nick $_");
  100. $counter++;
  101. }
  102. }
  103. Irssi::print("Forceparted $nick from $counter channels") if $counter;
  104. }
  105. Irssi::command_bind('fuckyou', 'cmd_fuckyou');
  106. Irssi::command_bind('unfuckyou', 'cmd_unfuckyou');
  107. Irssi::signal_add(
  108. {
  109. 'redir autowhois_channels' => \&event_whois_channels,
  110. });