Advertisement
Guest User

Untitled

a guest
Jun 5th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.90 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. print "POE IRC Bot. Skeleton by Caaz.\n";
  4.  
  5. print "SERVER \(Optional PORT NICK\)\n";
  6.  
  7. chomp($Connect = <STDIN>);
  8.  
  9.  
  10.  
  11. use POE::Component::IRC;
  12.  
  13. use POE;
  14.  
  15.  
  16.  
  17. BOTVARS: {
  18.  
  19. $BotNick = "DuskBot"; # Nick
  20.  
  21. $BotUser = "Dusk"; # Username "indent"
  22.  
  23. $BotName = "DuskBot 2.0"; # Real Name
  24.  
  25. $CmdPrefix = "!"; # Command Prefix
  26.  
  27. $BotPass = "Removed"; # Nickserv Password
  28.  
  29. $BotOwner = "Solareon"; # Owner of the Bot
  30.  
  31. $BotPath = "/home/solareon/Desktop/DuskBot"; # Path to any files.
  32.  
  33. $BotVersion = "DuskBot 2.0 (Perl)";
  34.  
  35. }
  36.  
  37. FILES: {
  38.  
  39. open DATA, "<".$BotPath."DBUsers.txt";
  40.  
  41. @DB = <DATA>;
  42.  
  43. chomp($DBUsers = $DB[0]);
  44.  
  45. close DATA;
  46.  
  47. }
  48.  
  49. open DATA, "<".$BotPath.(split / /, $Connect)[0]."-AutoJoin.txt";
  50.  
  51. @Channels=<DATA>;
  52.  
  53. close DATA;chomp(@Channels);
  54.  
  55. $BotChannels = $Channels[0];
  56.  
  57. $Connect = $Connect." ".$BotNick;
  58.  
  59. $BotNick = (split / /, $Connect)[2];
  60.  
  61. my ($irc) = POE::Component::IRC->spawn();
  62.  
  63. POE::Session->create(inline_states => {
  64.  
  65. _start => sub {
  66.  
  67. $irc->yield(register => "all");
  68.  
  69. $irc->yield( connect => {
  70.  
  71. Nick => (split / /, $Connect)[2],
  72.  
  73. Username => $BotUser,
  74.  
  75. Ircname => $BotName,
  76.  
  77. Server => (split / /, $Connect)[0],
  78.  
  79. Port => (split / /, $Connect)[1],
  80.  
  81. });
  82.  
  83. },
  84.  
  85. irc_001 => sub {
  86.  
  87. $TDstat = "OFF";
  88.  
  89. $DefCon = "5";
  90.  
  91. $GTNstat = "OFF";
  92.  
  93. $irc->yield(mode => $BotNick." +B");
  94.  
  95. $irc->yield(privmsg => "Nickserv" => "id ".$BotPass);
  96.  
  97. my $alarm_id = $irc->delay( [ join => $BotChannels ], 2 );
  98.  
  99. },
  100.  
  101. irc_error => sub {
  102.  
  103. my ($kernel, $IRCWhat) = @_[KERNEL, ARG0];
  104.  
  105. print $IRCWhat."\n";
  106.  
  107. },
  108.  
  109. irc_ctcp_action => sub {
  110.  
  111. my ($kernel, $IRCWho, $where, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2];
  112.  
  113. $IRCWhere = $where->[0];
  114.  
  115. print GetTime()."$IRCWhere > * ".(split /!/, $IRCWho)[0]." $IRCWhat\n";
  116.  
  117. Bot("ACTION",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere,$IRCWhat);
  118.  
  119. },
  120.  
  121. irc_ctcp_version => sub {
  122.  
  123. my ($kernel, $IRCWho, $where, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2];
  124.  
  125. $IRCWhere = $where->[0];
  126.  
  127. print GetTime()."CTCP > * Got CTCP VERSION from ".(split /!/, $IRCWho)[0]."\n";
  128.  
  129. $irc->yield(ctcpreply => (split /!/, $IRCWho)[0] => $BotVersion);
  130.  
  131. },
  132.  
  133. irc_join => sub {
  134.  
  135. my ($kernel, $IRCWho, $IRCWhere) = @_[KERNEL, ARG0, ARG1];
  136.  
  137. print GetTime()."Join * ".(split /!/, $IRCWho)[0]." joins $IRCWhere\n";
  138.  
  139. Bot("JOIN",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere);
  140.  
  141. },
  142.  
  143. irc_invite => sub {
  144.  
  145. my ($kernel, $IRCWho, $IRCWhere) = @_[KERNEL, ARG0, ARG1];
  146.  
  147. print GetTime()."Invi * ".(split /!/, $IRCWho)[0]." invites you to $IRCWhere\n";
  148.  
  149. Bot("INVITE", (split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere);
  150.  
  151. },
  152.  
  153. irc_kick => sub {
  154.  
  155. my ($kernel, $IRCWho, $IRCWhere, $IRCWhoElse, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2, ARG3];
  156.  
  157. print GetTime()."Kick * ".(split /!/, $IRCWho)[0]." kicks $IRCWhoElse out of $IRCWhere ($IRCWhat)\n";
  158.  
  159. Bot("KICK",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere,$IRCWhoElse,$IRCWhat);
  160.  
  161. },
  162.  
  163. irc_msg => sub {
  164.  
  165. my ($kernel, $IRCWho, $where, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2];
  166.  
  167. $IRCWhere = $where->[0];
  168.  
  169. print GetTime()."Priv\a> <".(split /!/, $IRCWho)[0]."> $IRCWhat\n";
  170.  
  171. Bot("PRIVMSG",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere,$IRCWhat);
  172.  
  173. },
  174.  
  175. irc_nick => sub {
  176.  
  177. my ($kernel, $IRCWho, $IRCWhoElse) = @_[KERNEL, ARG0, ARG1];
  178.  
  179. print GetTime()."Nick * ".(split /!/, $IRCWho)[0]." changes nick to $IRCWhoElse\n";
  180.  
  181. Bot("NICK", (split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhoElse);
  182.  
  183. },
  184.  
  185. irc_notice => sub {
  186.  
  187. my ($kernel, $IRCWho, $where, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2];
  188.  
  189. $IRCWhere = $where->[0];
  190.  
  191. print GetTime()."Noti <".(split /!/, $IRCWho)[0]."> $IRCWhat\n" if((split /!/, $IRCWho)[0] !~ /WolfBot/i);
  192.  
  193. Bot("NOTICE",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere,$IRCWhat);
  194.  
  195. },
  196.  
  197. irc_part => sub {
  198.  
  199. my ($kernel, $IRCWho, $IRCWhere, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2];
  200.  
  201. print GetTime()."Part * ".(split /!/, $IRCWho)[0]." left channel $IRCWhere \(".$IRCWhat."\)\n";
  202.  
  203. Bot("PART",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere,$IRCWhat);
  204.  
  205. },
  206.  
  207. irc_public => sub {
  208.  
  209. my ($kernel, $IRCWho, $where, $IRCWhat) = @_[KERNEL, ARG0, ARG1, ARG2];
  210.  
  211. $IRCWhere = $where->[0];
  212.  
  213. print GetTime()."$IRCWhere > <".(split /!/, $IRCWho)[0]."> $IRCWhat\n";
  214.  
  215. Bot("CHANMSG",(split /!/, $IRCWho)[0],(split /!/, $IRCWho)[1],$IRCWhere,$IRCWhat);
  216.  
  217. },
  218.  
  219. irc_disconnected => sub { print "Disconnected.\n"; exit 1; }, # Ends on disconnect.
  220.  
  221. },);
  222.  
  223.  
  224.  
  225. sub Bot {
  226.  
  227. $Event = $_[0];
  228.  
  229. if($Event =~ /CHANMSG/) { $Com = "privmsg ".$_[3]." "; $UserMsg = $_[4]; $Where = $_[3]; }
  230.  
  231. elsif($Event =~ /NOTICE/) { $Com = "notice ".$_[1]." "; $UserMsg = $_[4]; $Where = $_[1]; }
  232.  
  233. elsif($Event =~ /PRIVMSG/) { $Com = "notice ".$_[1]." "; $UserMsg = $_[4]; $Where = $_[1]; }
  234.  
  235. elsif($Event =~ /INVITE/) { $Com = "notice ".$_[1]." "; $UserMsg = $_[3]; $Where = $_[1]; if ($UserMsg !~ /sex/i) { $irc->yield(join => $Use$
  236.  
  237. elsif($Event =~ /JOIN/) { $Com = "notice ".$_[3]." "; $UserMsg = $_[3]; $Where = $_[1]; }
  238.  
  239. elsif($Event =~ /NICK/) { if($_[1] =~ /^$BotOwner$/i) { print "Owner changing...\n"; $BotOwner = Regexit($_[3]) } }
  240.  
  241. $UserNick = Regexit($_[1]);
  242.  
  243. $UserHost = $_[2];
  244.  
  245. $UserMsg = POE::Component::IRC::Common::strip_formatting(POE::Component::IRC::Common::strip_color($UserMsg));
  246.  
  247. $CurSec = SpamProtect();
  248.  
  249. &CREATEUser($UserNick);
  250.  
  251. if($DBUsers =~ /(.*)<$UserNick :(.*?)\[Access (.*?)\](.*?)>(.*)/i) {
  252.  
  253. $Access = $3;
  254.  
  255. if($Access <= 0) {
  256.  
  257. return 0;
  258.  
  259. }
  260.  
  261. }
  262.  
  263. ##########
  264.  
  265. #WereWolf#
  266.  
  267. ##########
  268.  
  269.  
  270.  
  271. if(($Where =~ /wwolf/i) || ($UserNick =~ /Wolfbot/i)) {
  272.  
  273. if($Event =~ /(CHANMSG|NOTICE|PRIVMSG)/) {
  274.  
  275. $WW{"MyType"} = "Wolf" if($WW{"MyType"} =~ /werewolf/);
  276.  
  277. if(($UserMsg =~ /^($BotNick|Bots), Join/i) && ($WW{"Will Join"} !~ /No/i)) {
  278.  
  279. $irc->yield(privmsg => "#WWolf" => "!Join");
  280.  
  281. $WW{"Will Join"} = "No";
  282.  
  283. $WW{"MyType"} = "Villager";
  284.  
  285. }
  286.  
  287. elsif($UserMsg =~ /^$BotNick, Leave/i) {
  288.  
  289. $irc->yield(part => "#WWolf" => "Invite me, and I will continue playing.");
  290.  
  291. $WW{"Will Join"} = "Yes";
  292.  
  293. while ( ($key, $value) = each %WW ) {
  294.  
  295. $WW{$key} = "";
  296.  
  297. }
  298.  
  299. }
  300.  
  301. elsif($UserMsg =~ /^$BotNick won,/i) {
  302.  
  303. my $alarm_id = $irc->delay( [ privmsg => "#wwolf" => "Woohoo! I won. :D" ], 1 );
  304.  
  305. while ( ($key, $value) = each %WW ) {
  306.  
  307. $WW{$key} = "";
  308.  
  309. }
  310.  
  311. }
  312.  
  313. elsif($UserMsg =~ /^$BotNick lost,/i) {
  314.  
  315. my $alarm_id = $irc->delay( [ privmsg => "#wwolf" => ";~; I didn't think I'd lose..." ], 1 );
  316.  
  317.  
  318.  
  319. while ( ($key, $value) = each %WW ) {
  320.  
  321. $WW{$key} = "";
  322.  
  323. }
  324.  
  325. }
  326.  
  327. elsif($UserMsg =~ /^$BotNick.*?wolf/i) {
  328.  
  329. @rray = ($UserNick." is lying.", $UserNick." only wants to make me lose ;~;", "Not uh.", "Jeez, blaming me already...");
  330.  
  331. $irc->yield(privmsg => "#wwolf" => $rray[int(rand(@rray))]) if(rand(100) > 50);
  332.  
  333. }
  334.  
  335. elsif($UserMsg =~ /^The game is over\.$|^Game cancelled\./i) {
  336.  
  337. while ( ($key, $value) = each %WW ) {
  338.  
  339. $WW{$key} = "";
  340.  
  341. }
  342.  
  343. }
  344.  
  345. elsif($UserMsg =~ /^($BotNick|Bots), what are you/i) {
  346.  
  347. if($WW{"MyType"} =~ /Wolf|Village Idiot/) {
  348.  
  349. $irc->yield(privmsg => "#WWolf" => "I am a Villager.");
  350.  
  351. }
  352.  
  353. else {
  354.  
  355. $irc->yield(privmsg => "#WWolf" => "I am a ".$WW{"MyType"}.".");
  356.  
  357. }
  358.  
  359. }
  360.  
  361. elsif($UserMsg =~ /Active Roles: (.*)/i) {
  362.  
  363. $WW{"Roles"} = $1;
  364.  
  365. }
  366.  
  367. elsif($UserMsg =~ /(.*?) (has joined|has started)/i) {
  368.  
  369. if($1 =~ /$BotNick/) { return 0; }
  370.  
  371. $WW{"Players"} = $WW{"Players"}.$1." ";
  372.  
  373. @WWPlayers = split / /, $WW{"Players"};
  374.  
  375. print "Updating players...\n".@WWPlayers."\n";
  376.  
  377. }
  378.  
  379. elsif($UserMsg =~ /^(.*) (has left the game|struggles vainly|was)/i) {
  380.  
  381. $WW{"Players"} =~ s/$1 //igs;
  382.  
  383. @WWPlayers = split / /, $WW{"Players"};
  384.  
  385. print "Updating players...\n".@WWPlayers."\n";
  386.  
  387. }
  388.  
  389. elsif($UserMsg =~ /has cast their vote for (.*?)!/i) {
  390.  
  391. $tring = $1;
  392.  
  393. $WW{"Votes".Regexit($tring)}++;
  394.  
  395. if(($WW{"Votes".Regexit($tring)} > $WW{"MostVoted"}) && (Regexit($tring) !~ /$WW{"MostVotedName"}/)) {
  396.  
  397. $WW{"MostVoted"} = $WW{"Votes".Regexit($tring)};
  398.  
  399. $WW{"MostVotedName"} = Regexit($tring);
  400.  
  401. $irc->yield(privmsg => "WolfBot" => "vote ".$tring) if((int(rand(100)) > 80) && ($tring !~ /$BotNick/i));
  402.  
  403. }
  404.  
  405. }
  406.  
  407. elsif($UserMsg =~ /seconds to send your votes/i) {
  408.  
  409. $WW{"MostVoted"}="";
  410.  
  411. $WW{"MostVotedName"}="";
  412.  
  413. if($WW{"Vote"} !~ /^$/) {
  414.  
  415.  
  416.  
  417. my $alarm_id = $irc->delay( [ privmsg => "WolfBot" => "vote ".$WW{"Vote"} ], 5 );
  418.  
  419. }
  420.  
  421. elsif(int(rand(100)) > 70) {
  422.  
  423. my $alarm_id = $irc->delay( [ privmsg => "WolfBot" => "vote ".$WWPlayers[int(rand(@WWPlayers))] ], 5 );
  424.  
  425. }
  426.  
  427. $WW{"Vote"} = "";
  428.  
  429. if($WW{"MyType"} =~ /Village Idiot/i) {
  430.  
  431. $WW{"Vote"} = $BotNick;
  432.  
  433. }
  434.  
  435. }
  436.  
  437. if(($UserNick =~ /WolfBot/i) && ($Event =~ /(NOTICE|PRIVMSG|CHANMSG)/)) {
  438.  
  439. if($UserMsg =~ /You are a wolf!/i) {
  440.  
  441. $WW{"MyType"} = "Wolf";
  442.  
  443. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $WWPlayers[int(rand(@WWPlayers))]." is Wolf." ], 50 ) if($WW{"Roles"} =~ /Idiot/i);
  444.  
  445. $WW{"Vote"} = $BotNick;
  446.  
  447. }
  448.  
  449. elsif($UserMsg =~ /You are the finder!/i) {
  450.  
  451. $WW{"MyType"} = "Finder";
  452.  
  453. }
  454.  
  455. elsif($UserMsg =~ /You are the seer!/i) {
  456.  
  457. $WW{"MyType"} = "Seer";
  458.  
  459. }
  460.  
  461. elsif($UserMsg =~ /You are the doppleganger!/i) {
  462.  
  463. $WW{"MyType"} = "Doppleganger";
  464.  
  465. }
  466.  
  467. elsif($UserMsg =~ /You are the angel!/i) {
  468.  
  469. $WW{"MyType"} = "Angel";
  470.  
  471. }
  472.  
  473. elsif($UserMsg =~ /You are the Village Idiot!/i) {
  474.  
  475. $WW{"MyType"} = "Village Idiot";
  476.  
  477. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $WWPlayers[int(rand(@WWPlayers))]." is Wolf." ], 50 );
  478.  
  479. $WW{"Vote"} = $BotNick;
  480.  
  481. }
  482.  
  483. elsif($UserMsg =~ /into (a|an) (.*?)!/i) {
  484.  
  485. $tring = $2;
  486.  
  487. if($tring =~ /werewolf/i) {
  488.  
  489. $WW{"MyType"} = "Wolf";
  490.  
  491. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $WWPlayers[int(rand(@WWPlayers))]." is Wolf." ], 50 ) if($WW{"Roles"} =~ /Idiot/i);
  492.  
  493.  
  494.  
  495. $WW{"Vote"} = $BotNick;
  496.  
  497. }
  498.  
  499. if($tring =~ /village idiot/i) {
  500.  
  501. $WW{"MyType"} = "Village Idiot";
  502.  
  503. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $WWPlayers[int(rand(@WWPlayers))]." is Wolf." ], 50 );
  504.  
  505. $WW{"Vote"} = $BotNick;
  506.  
  507. }
  508.  
  509. if($tring =~ /angel/i) { $WW{"MyType"} = "Angel"; }
  510.  
  511. if($tring =~ /seer/i) { $WW{"MyType"} = "Seer"; }
  512.  
  513. if($tring =~ /finder/i) { $WW{"MyType"} = "Finder"; }
  514.  
  515. else {
  516.  
  517. $WW{"MyType"} = $tring;
  518.  
  519. }
  520.  
  521. }
  522.  
  523. elsif($UserMsg =~ /You have 45/i) {
  524.  
  525. if($WW{"MyType"} =~ /Wolf/i) {
  526.  
  527. $irc->yield(privmsg => "wolfbot" => "kill ".$WWPlayers[int(rand(@WWPlayers))]);
  528.  
  529. }
  530.  
  531. elsif($WW{"MyType"} =~ /Seer/i) {
  532.  
  533. $WW{"Target"} = $WWPlayers[0];
  534.  
  535. $WW{"Players"} =~ s/$WWPlayers[0] //igs;
  536.  
  537. @WWPlayers = split / /, $WW{"Players"};
  538.  
  539. $irc->yield(privmsg => "wolfbot" => "see ".$WW{"Target"});
  540.  
  541. }
  542.  
  543. elsif($WW{"MyType"} =~ /Finder/i) {
  544.  
  545. $WW{"Target"} = $WWPlayers[0];
  546.  
  547. $WW{"Players"} =~ s/$WWPlayers[0] //igs;
  548.  
  549. @WWPlayers = split / /, $WW{"Players"};
  550.  
  551. $irc->yield(privmsg => "wolfbot" => "find ".$WW{"Target"});
  552.  
  553. }
  554.  
  555. if($WW{"MyType"} =~ /Doppleganger/i) {
  556.  
  557. $WW{"Target"} = $WWPlayers[int(rand(@WWPlayers))];
  558.  
  559. $irc->yield(privmsg => "wolfbot" => "dopple ".$WW{"Target"});
  560.  
  561. }
  562.  
  563. if($WW{"MyType"} =~ /Angel/i) {
  564.  
  565. $WW{"Target"} = $WWPlayers[int(rand(@WWPlayers))];
  566.  
  567. $irc->yield(privmsg => "wolfbot" => "shield ".$WW{"Target"});
  568.  
  569.  
  570.  
  571. }
  572.  
  573. }
  574.  
  575. elsif($UserMsg =~ /(.*?) is (a|an) (.*?)!/i) {
  576.  
  577. $tring = $1;
  578.  
  579. $tringt = $3;
  580.  
  581. if($tringt =~ /Wolf/i) {
  582.  
  583. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $tring." is Wolf." ], 5 );
  584.  
  585. $WW{"Vote"} = $tring;
  586.  
  587. }
  588.  
  589. elsif($tringt =~ /Idiot/i) {
  590.  
  591. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $tring." is Village idiot." ], 5 );
  592.  
  593. }
  594.  
  595. elsif($tringt =~ /villager/i) {
  596.  
  597. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $tring." is Villager." ], 5 );
  598.  
  599. }
  600.  
  601. elsif($tringt =~ /Angel/i) {
  602.  
  603. my $alarm_id = $irc->delay( [ privmsg => $tring => "I'm seer, and you're angel, right? Protect me, I'll keep looking for the wolf." ], 2 );
  604.  
  605. }
  606.  
  607. elsif($tringt =~ /Doppleganger/i) {
  608.  
  609. my $alarm_id = $irc->delay( [ privmsg => $tring => "Dopple me for seer!" ], 2 );
  610.  
  611. }
  612.  
  613. }
  614.  
  615. elsif($UserMsg =~ /(.*?) targe(t*?)ed (.*?)!/i) {
  616.  
  617. $tring = $1;
  618.  
  619. $tringt = $3;
  620.  
  621. my $alarm_id = $irc->delay( [ privmsg => "#WWolf" => $tring." targetted ".$tringt."." ], 5 );
  622.  
  623. $WW{"Vote"} = $tring;
  624.  
  625. }
  626.  
  627. elsif($UserMsg =~ /The (wolves|other wolves) are: (.*)/i) {
  628.  
  629. @WWolfs = split /, /, $1;
  630.  
  631. print "Updating players...\n";
  632.  
  633. foreach (@WWolfs) {
  634.  
  635. $WW{"Players"} =~ s/$_ //gs;
  636.  
  637. @WWPlayers = split / /, $WW{"Players"};
  638.  
  639. print "Updating players...\n".@WWPlayers."\n";
  640.  
  641. }
  642.  
  643. }
  644.  
  645. }
  646.  
  647. }
  648.  
  649.  
  650.  
  651. ################
  652.  
  653. #Owner commands#
  654.  
  655. ################
  656.  
  657. if($_[4] =~ /^${CmdPrefix}Do (.*)/i) {
  658.  
  659. @rray = split / /, $1;
  660.  
  661. if($UserNick =~ /^$BotOwner$/i) {
  662.  
  663. $irc->yield(@rray);
  664.  
  665. }
  666.  
  667. }
  668.  
  669. elsif($_[4] =~ /^${CmdPrefix}Setv \$(.*?) (.*)/i) {
  670.  
  671. $tring = $1;
  672.  
  673. $tringt = $2;
  674.  
  675. if($UserNick =~ /^$BotOwner$/i) {
  676.  
  677. ${$tring} = $tringt;
  678.  
  679. Command($Com."$tring set to $tringt");
  680.  
  681. }
  682.  
  683. }
  684.  
  685. elsif($UserMsg =~ /^${CmdPrefix}Vars \$(.*)/i) {
  686.  
  687. $tring = $1;
  688.  
  689. if($UserNick =~ /^$BotOwner$/i) {
  690.  
  691. Command($Com."${$tring}") if(${$tring} !~ /$BotPass/);
  692.  
  693. }
  694.  
  695. }
  696.  
  697. elsif($UserMsg =~ /^${CmdPrefix}DefCon (.*)/i) {
  698.  
  699. $tring = $1;
  700.  
  701. if($UserNick =~ /^$BotOwner$/i) {
  702.  
  703. if($tring !~ /\D/) {
  704.  
  705. @rray = split /\s/, $tring;
  706.  
  707. $DefCon = $rray[0];
  708.  
  709. Command($Com."DefCon setting changed to $rray[0]");
  710.  
  711. }
  712.  
  713. elsif($tring =~ /Current/i) {
  714.  
  715. Command($Com."Current DefCon setting is $DefCon");
  716.  
  717. }
  718.  
  719. }
  720.  
  721. }
  722.  
  723. elsif($UserMsg =~ /^${CmdPrefix}Nick (.*)/i) {
  724.  
  725. $tring = $1;
  726.  
  727. if($UserNick =~ /^$BotOwner$/i) {
  728.  
  729. $BotNick = $tring;
  730.  
  731. $irc->yield(nick => $tring);
  732.  
  733. }
  734.  
  735. }
  736.  
  737. elsif($UserMsg =~ /^${CmdPrefix}Amsg (.*)/i) {
  738.  
  739. $tring = $1;
  740.  
  741. open DATA, "<".$BotPath.(split / /, $Connect)[0]."-AutoJoin.txt";
  742.  
  743. @Channels=<DATA>;
  744.  
  745. close DATA;chomp(@Channels);
  746.  
  747. $BotChannels = $Channels[0];
  748.  
  749. $irc->yield(join => $BotChannels);
  750.  
  751. if($UserNick =~ /^$BotOwner$/i) {
  752.  
  753. $irc->yield(privmsg => $BotChannels => $tring);
  754.  
  755. }
  756.  
  757. }
  758.  
  759.  
  760.  
  761. ######
  762.  
  763. #Coin#
  764.  
  765. ######
  766.  
  767. elsif($UserMsg =~ /^${CmdPrefix}Coin/i) {
  768.  
  769. $Coin = rand(100);
  770.  
  771. if($Coin > 50) {
  772.  
  773. Command($Com."Heads");
  774.  
  775. }
  776.  
  777. else {
  778.  
  779. Command($Com."Tails");
  780.  
  781. }
  782.  
  783. }
  784.  
  785.  
  786.  
  787.  
  788.  
  789. ##################
  790.  
  791. #Guess The Number#
  792.  
  793. ##################
  794.  
  795. elsif($UserMsg =~ /^${CmdPrefix}gtn (.*)/i) {
  796.  
  797. $tring = $1;
  798.  
  799. @rray = split /\s/, $tring;
  800.  
  801. if($DefCon > "4") {
  802.  
  803. if($GTNstat =~ "OFF") {
  804.  
  805. $GTNstat = "ON";
  806.  
  807. $GTN = int(rand(100));
  808.  
  809. Command($Com."Guess the Number is now on. Use ${CmdPrefix}gtn <number from 1 to 100> to guess.");
  810.  
  811. }
  812.  
  813. elsif($rray[0] =~ /OFF/i) {
  814.  
  815. $GTNstat = "OFF";
  816.  
  817. $GTN = "";
  818.  
  819. Command($Com."Guess the Number has been cancelled.");
  820.  
  821. }
  822.  
  823. elsif($GTNstat =~ "ON") {
  824.  
  825. if($rray[0] !~ /\D/) {
  826.  
  827. if($rray[0] == $GTN) {
  828.  
  829. Command($Com."$rray[0] is correct.");
  830.  
  831. Command($Com."$UserNick wins.");
  832.  
  833. $GTNstat = "OFF";
  834.  
  835. $GTN = "";
  836.  
  837. }
  838.  
  839. elsif($rray[0] !~ $GTN) {
  840.  
  841. if($rray[0] < $GTN) {
  842.  
  843. Command($Com."$rray[0] is incorrect. Try a higher number.");
  844.  
  845. }
  846.  
  847. elsif($rray[0] > $GTN) {
  848.  
  849. Command($Com."$rray[0] is incorrect. Try a lower number.");
  850.  
  851. }
  852.  
  853. }
  854.  
  855. }
  856.  
  857. else {
  858.  
  859. Command($Com."Please just use numbers.");
  860.  
  861. }
  862.  
  863. }
  864.  
  865. else {
  866.  
  867. Command($Com."Variable confliction. Guess the Number cancelled.");
  868.  
  869. $GTNstat = "OFF";
  870.  
  871. $GTN = "";
  872.  
  873. }
  874.  
  875. }
  876.  
  877. }
  878.  
  879.  
  880.  
  881. ###########
  882.  
  883. #Query Spy#
  884.  
  885. ###########
  886.  
  887. elsif($UserMsg =~ /^${CmdPrefix}QuerySpy (.*)/i) {
  888.  
  889. $tring = $1;
  890.  
  891. @rray = split /\s/, $tring;
  892.  
  893. if($UserNick =~ /^$BotOwner$/i) {
  894.  
  895. if($rray[0] =~ /^Start/i) {
  896.  
  897. if($QuerySpy =~ /^ON/i) {
  898.  
  899. Command($Com."QuerySpy is already on.");
  900.  
  901. }
  902.  
  903. else {
  904.  
  905. $QuerySpy = "ON";
  906.  
  907. $QueryAt = "atLog";
  908.  
  909. Command($Com."QuerySpy has been initiated. Would you like to enable logging? ${CmdPrefix}QS Yes or ${CmdPrefix}QS No.");
  910.  
  911. }
  912.  
  913. }
  914.  
  915. elsif($rray[0] =~ /^Stop/i) {
  916.  
  917. if($QuerySpy =~ /^OFF/i) {
  918.  
  919. Command($Com."QuerySpy is already off.");
  920.  
  921. }
  922.  
  923. else {
  924.  
  925. $QuerySpy = "OFF";
  926.  
  927. $QueryAt = "";
  928.  
  929. $QSTarg = "";
  930.  
  931. $QueryChan = "";
  932.  
  933. $QueryLog = "";
  934.  
  935. Command($Com."QuerySpy has been disabled.");
  936.  
  937. }
  938.  
  939. }
  940.  
  941. else {
  942.  
  943. Command($Com."That is not a valid option.");
  944.  
  945. }
  946.  
  947. }
  948.  
  949. }
  950.  
  951. elsif($UserMsg =~ /^${CmdPrefix}QS (.*)/i) {
  952.  
  953. $tring = $1;
  954.  
  955. @rray = split /\s/, $tring;
  956.  
  957. if($UserNick =~ /^$BotOwner$/i) {
  958.  
  959. if($QueryAt =~ /^atLog/i) {
  960.  
  961. if($rray[0] =~ /^Yes/i) {
  962.  
  963. $QueryLog = "Yes";
  964.  
  965. Command($Com."Logging is now enabled. Please choose a target via ${CmdPrefix}Target <target>");
  966.  
  967. $QueryAt = "atTarg";
  968.  
  969. }
  970.  
  971. elsif($rray[0] =~ /^No/i) {
  972.  
  973. $QueryLog = "No";
  974.  
  975. Command($Com."Logging is now disabled. Please choose a target via ${CmdPrefix}Target <target>");
  976.  
  977. $QueryAt = "atTarg";
  978.  
  979. }
  980.  
  981. else {
  982.  
  983. Command($Com."Please use only Yes or No options.");
  984.  
  985. }
  986.  
  987. }
  988.  
  989. }
  990.  
  991. }
  992.  
  993. elsif($UserMsg =~ /^${CmdPrefix}Target (.*)/i) {
  994.  
  995. $tring = $1;
  996.  
  997. @rray = split /\s/, $tring;
  998.  
  999. if($QueryAt =~ /^atTarg/i) {
  1000.  
  1001. if($UserNick =~ /^$BotOwner$/i) {
  1002.  
  1003. $QSTarg = $rray[0];
  1004.  
  1005. $QueryAt = "atWhere";
  1006.  
  1007. Command($Com."QuerySpy target set to $QSTarg");
  1008.  
  1009. Command($Com."Choose where messages will be send with ${CmdPrefix}Where");
  1010.  
  1011. }
  1012.  
  1013. }
  1014.  
  1015. }
  1016.  
  1017. elsif($UserMsg =~ /^${CmdPrefix}Where (.*)/i) {
  1018.  
  1019. $tring = $1;
  1020.  
  1021. @rray = split /\s/, $tring;
  1022.  
  1023. if($UserNick =~ /^$BotOwner$/i) {
  1024.  
  1025. if($QueryAt =~ /^atWhere/i) {
  1026.  
  1027. $QueryChan = $rray[0];
  1028.  
  1029. $QueryAt = "atSay";
  1030.  
  1031. if($QueryLog =~ /^Yes/i) {
  1032.  
  1033. open DATA, ">>".$BotPath."QueryLogs.txt";
  1034.  
  1035. print DATA "QuerySpy session started with $QSTarg"."\n";
  1036.  
  1037. close DATA;
  1038.  
  1039. }
  1040.  
  1041. Command($Com."QuerySpy channel set to $QueryChan");
  1042.  
  1043. }
  1044.  
  1045. }
  1046.  
  1047. }
  1048.  
  1049. elsif($UserNick =~ /^$QSTarg/i) {
  1050.  
  1051. $tring = $UserMsg;
  1052.  
  1053. @rray = split (/\s/, $tring);
  1054.  
  1055. if($QueryAt =~ /^atSay/i) {
  1056.  
  1057. if($Event =~ /PRIVMSG/) {
  1058.  
  1059. $irc->yield(privmsg.$QueryWhere."$UserNick ~~ $UserMsg");
  1060.  
  1061. if($QueryLog =~ /^Yes/i) {
  1062.  
  1063. open DATA, ">>".$BotPath."QueryLogs.txt";
  1064.  
  1065. print DATA "QSTarg ~~ $UserMsg"."\n";
  1066.  
  1067. close DATA;
  1068.  
  1069. }
  1070.  
  1071. }
  1072.  
  1073. }
  1074.  
  1075. }
  1076.  
  1077. elsif($UserMsg =~ /^${CmdPrefix}Say (.*)/i) {
  1078.  
  1079. if($UserNick =~ /^$BotOwner$/i) {
  1080.  
  1081. if($QueryAt =~ /^atSay/i) {
  1082.  
  1083. $irc->yield(privmsg.$QSTarg."$1");
  1084.  
  1085. $irc->yield(privmsg.$QueryChan.$1);
  1086.  
  1087. if($QueryLog =~ /^Yes/i) {
  1088.  
  1089. open DATA, ">>".$Botpath."QueryLogs.txt";
  1090.  
  1091. print DATA "$BotOwner ~~ ".$1."\n";
  1092.  
  1093. close DATA
  1094.  
  1095. }
  1096.  
  1097. }
  1098.  
  1099. }
  1100.  
  1101. }
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107. ###############
  1108.  
  1109. #Truth or Dare#
  1110.  
  1111. ###############
  1112.  
  1113. elsif($UserMsg =~ /^${CmdPrefix}TD/i) {
  1114.  
  1115. if($DefCon > 3) {
  1116.  
  1117. if($TDstat =~ "OFF") {
  1118.  
  1119. $TDstat = "ON";
  1120.  
  1121. $TDwhere = "atMode";
  1122.  
  1123. $TDtarg = $UserNick;
  1124.  
  1125. Command($Com."Truth or Dare has begun. Please choose either ${CmdPrefix}PG13 mode or ${CmdPrefix}XXX mode.");
  1126.  
  1127. }
  1128.  
  1129. elsif($TDstat =~ "ON") {
  1130.  
  1131. Command($Com."Truth or Dare is already on.");
  1132.  
  1133. }
  1134.  
  1135. else {
  1136.  
  1137. Command($Com."Variable confliction. Ending.");
  1138.  
  1139. $TDwhere = "";
  1140.  
  1141. $TDstat = "OFF";
  1142.  
  1143. $TDtarg = "";
  1144.  
  1145. }
  1146.  
  1147. }
  1148.  
  1149. }
  1150.  
  1151. elsif($UserMsg =~ /^${CmdPrefix}PG13/i) {
  1152.  
  1153. if(($DefCon > 3) && ($TDwhere = "atMode")) {
  1154.  
  1155. $TDmode = "PG13";
  1156.  
  1157. $TDwhere = "atPick";
  1158.  
  1159. Command($Com."Mode set to PG13.");
  1160.  
  1161. Command($Com."Please pick the first target, $TDtarg");
  1162.  
  1163. }
  1164.  
  1165. }
  1166.  
  1167. elsif($UserMsg =~ /^${CmdPrefix}XXX/i) {
  1168.  
  1169. if(($DefCon > 3) && ($TDwhere = "atMode")) {
  1170.  
  1171. $TDmode = "XXX";
  1172.  
  1173. $TDwhere = "atPick";
  1174.  
  1175. Command($Com."Mode set to XXX.");
  1176.  
  1177. Command($Com."Please pick the first target, $TDtarg");
  1178.  
  1179. }
  1180.  
  1181. }
  1182.  
  1183. elsif($UserMsg =~ /^${CmdPrefix}Pick (.*)/i) {
  1184.  
  1185. $tring = $1;
  1186.  
  1187. @rray = split /\s/, $tring;
  1188.  
  1189. if(($DefCon > 3) && ($TDwhere = "atPick")) {
  1190.  
  1191. if($rray[0] !~ $BotNick) {
  1192.  
  1193. $TDtarg = $rray[1];
  1194.  
  1195. Command($Com."Please choose either ${CmdPrefix}Truth or ${CmdPrefix}Dare.");
  1196.  
  1197. $TDwhere = "atChoose";
  1198.  
  1199. }
  1200.  
  1201. }
  1202.  
  1203. }
  1204.  
  1205. elsif($UserMsg =~ /^${CmdPrefix}Truth/i) {
  1206.  
  1207. if($DefCon > 3) {
  1208.  
  1209. if($TDmode = "PG13") {
  1210.  
  1211. open DATA, "<".$BotPath."PG13Truth.txt";
  1212.  
  1213. @PG13Truth=<DATA>;
  1214.  
  1215. close DATA;
  1216.  
  1217. $TDwhere = "atPick";
  1218.  
  1219. Command($Com."$PG13Truth[int(rand(@PG13Truth))]");
  1220.  
  1221. Command($Com."Please type ${CmdPrefix}Pick <nick> after answering.");
  1222.  
  1223. }
  1224.  
  1225. if($TDmode = "XXX") {
  1226.  
  1227. open DATA, "<".$BotPath."XXXTruth.txt";
  1228.  
  1229. @PG13Truth=<DATA>;
  1230.  
  1231. close DATA;
  1232.  
  1233. $TDwhere = "atPick";
  1234.  
  1235. Command($Com."$XXXTruth[int(rand(@XXXTruth))]");
  1236.  
  1237. Command($Com."Please type ${CmdPrefix}Pick <nick> after answering.");
  1238.  
  1239. }
  1240.  
  1241. }
  1242.  
  1243. }
  1244.  
  1245. elsif($UserMsg =~ /^${CmdPrefix}Dare/i) {
  1246.  
  1247. if($DefCon > 3) {
  1248.  
  1249. if($TDmode = "PG13") {
  1250.  
  1251. open DATA, "<".$BotPath."PG13Dare.txt";
  1252.  
  1253. @PG13Truth=<DATA>;
  1254.  
  1255. close DATA;
  1256.  
  1257. $TDwhere = "atPick";
  1258.  
  1259. Command($Com."$PG13Dare[int(rand(@PG13Dare))]");
  1260.  
  1261. Command($Com."Please type ${CmdPrefix}Pick <nick> after answering.");
  1262.  
  1263. }
  1264.  
  1265. if($TDmode = "XXX") {
  1266.  
  1267. open DATA, "<".$BotPath."XXXDare.txt";
  1268.  
  1269. @PG13Truth=<DATA>;
  1270.  
  1271. close DATA;
  1272.  
  1273. $TDwhere = "atPick";
  1274.  
  1275. Command($Com."$XXXDare[int(rand(@XXXDare))]");
  1276.  
  1277. Command($Com."Please type ${CmdPrefix}Pick <nick> after answering.");
  1278.  
  1279. }
  1280.  
  1281. }
  1282.  
  1283. }
  1284.  
  1285. elsif($UserMsg =~ /^${CmdPrefix}TD-/i) {
  1286.  
  1287. if($TDstat = "ON") {
  1288.  
  1289. $TDstat = "OFF";
  1290.  
  1291. Command($Com."Truth or Dare has been disabled.");
  1292.  
  1293. $TDwhere = "";
  1294.  
  1295. $TDmode = "";
  1296.  
  1297. $TDtarg = "";
  1298.  
  1299. }
  1300.  
  1301. }
  1302.  
  1303.  
  1304.  
  1305. ######
  1306.  
  1307. #Math#
  1308.  
  1309. ######
  1310.  
  1311. elsif($UserMsg =~ /^${CmdPrefix}Math (.*)/i) {
  1312.  
  1313. $tring = $1;
  1314.  
  1315. @rray = split /\s/, $tring;
  1316.  
  1317. if($DefCon > 1) {
  1318.  
  1319. if($rray[0] =~ /Calc/i) {
  1320.  
  1321. $MathAns = eval $rray[1];
  1322.  
  1323. Command($Com."The answer is $MathAns");
  1324.  
  1325. }
  1326.  
  1327. elsif($rray[0] =~ /Abs/i) {
  1328.  
  1329. $MathAns = abs $rray[1];
  1330.  
  1331. Command($Com."The answer is $MathAns");
  1332.  
  1333. }
  1334.  
  1335. elsif($rray[0] =~ /Cos/i) {
  1336.  
  1337. $MathAns = cos $rray[1];
  1338.  
  1339. Command($Com."The answer is $MathAns");
  1340.  
  1341. }
  1342.  
  1343. elsif($rray[0] =~ /Exp/i) {
  1344.  
  1345. $MathAns = exp $rray[1];
  1346.  
  1347. Command($Com."The answer is $MathAns");
  1348.  
  1349. }
  1350.  
  1351. elsif($rray[0] =~ /Log/i) {
  1352.  
  1353. $MathAns = log $rray[1];
  1354.  
  1355. Command($Com."The answer is $MathAns");
  1356.  
  1357. }
  1358.  
  1359. elsif($rray[0] =~ /Sin/i) {
  1360.  
  1361. $MathAns = sin $rray[1];
  1362.  
  1363. Command($Com."The answer is $MathAns");
  1364.  
  1365. }
  1366.  
  1367. elsif($rray[0] =~ /Sqrt/i) {
  1368.  
  1369. $MathAns = sqrt $rray[1];
  1370.  
  1371. Command($Com."The answer is $MathAns");
  1372.  
  1373. }
  1374.  
  1375. }
  1376.  
  1377. }
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383. #####################
  1384.  
  1385. #Important Commands #
  1386.  
  1387. #####################
  1388.  
  1389. elsif($UserMsg =~ /^${CmdPrefix}(Help|Commands)$/i) {
  1390.  
  1391. if($DefCon > 1) {
  1392.  
  1393. Command($Com."!GTN - Starts Guess the Number game. Remember to include a space after !gtn or it won't start correctly.");
  1394.  
  1395. Command($Com."!DefCon - Sets DefCon level. Only usable by owner.");
  1396.  
  1397. Command($Com."!Math - Performs mathematical operations. Currently supported:");
  1398.  
  1399. Command($Com."Math(cont) - abs (absolute value), cos (cosine), exp (exponent), log (logarithm), sin (sine), sqrt (square root)");
  1400.  
  1401. Command($Com."Math(cont) - calc (acts as a calculator)");
  1402.  
  1403. }
  1404.  
  1405. }
  1406.  
  1407. elsif($UserMsg =~ /^${CmdPrefix}AJ$/i) {
  1408.  
  1409. if($DefCon > 2) {
  1410.  
  1411. open DATA, "<".$BotPath.(split / /, $Connect)[0].(split / /, $Connect)[1]."-AutoJoin.txt";
  1412.  
  1413. @Channels=<DATA>;
  1414.  
  1415. close DATA;
  1416.  
  1417. if($Channels[0] !~ /$Where,/i) {
  1418.  
  1419. open DATA, ">>".$BotPath.(split / /, $Connect)[0].(split / /, $Connect)[1]."-Autojoin.txt"; print DATA "$Where,";
  1420.  
  1421. Command($Com."Channel added to AutoJoin.");
  1422.  
  1423. }
  1424.  
  1425. else {
  1426.  
  1427. Command($Com."Channel already in AutoJoin.");
  1428.  
  1429. }
  1430.  
  1431. }
  1432.  
  1433. }
  1434.  
  1435. #####################
  1436.  
  1437. # END #
  1438.  
  1439. #####################
  1440.  
  1441. }
  1442.  
  1443. }
  1444.  
  1445. sub Regexit {
  1446.  
  1447. ($Reg = $_[0]) =~ s/\\/\\\\/gs;
  1448.  
  1449. $Reg =~ s/(\?|\(|\)|\||\[|\|\{|\}|\.)/\\$1/gs;
  1450.  
  1451. $Reg =~ s/\*/\(\.\*\)/gs;
  1452.  
  1453. return $Reg;
  1454.  
  1455. }
  1456.  
  1457. sub CREATEUser {
  1458.  
  1459. if($DBUsers !~ /(.*)<$_[0] :(.*?)>(.*)/i) {
  1460.  
  1461. open DATA, ">>".$BotPath."DBUsers.txt";
  1462.  
  1463. print DATA "<".$_[0]." : \\\[Access 1\\\] >";
  1464.  
  1465. close DATA;
  1466.  
  1467. open DATA, "<".$BotPath."DBUsers.txt";
  1468.  
  1469. @DB = <DATA>;
  1470.  
  1471. chomp($DBUsers = $DB[0]);
  1472.  
  1473. close DATA;
  1474.  
  1475. }
  1476.  
  1477. }
  1478.  
  1479. sub SpamProtect {
  1480.  
  1481. my($Sec, $Min, $Hour, $Day, $mon, $year, $WDay, $YDay) = localtime;
  1482.  
  1483. return (((($YDay * 24) * 60) * 60) + (($Hour * 60) * 60) + ($Min * 60) + $Sec);
  1484.  
  1485. }
  1486.  
  1487. sub Command {
  1488.  
  1489. $PrivmsgA = $_[0];
  1490.  
  1491. @PrivmsgB = split / /, $PrivmsgA;
  1492.  
  1493. $ComA = shift(@PrivmsgB);
  1494.  
  1495. $ComB = shift(@PrivmsgB);
  1496.  
  1497. if($BotNick =~ /Luka/i) { $BotFont = "〜"; $irc->yield($ComA => $ComB => POE::Component::IRC::Common::MAGENTA.(join " ", @PrivmsgB)." 〜"); }
  1498.  
  1499. elsif($BotNick =~ /(Rin|Len)/i) { $BotFont = "〜"; $irc->yield($ComA => $ComB => POE::Component::IRC::Common::ORANGE.(join " ", @PrivmsgB)." ☯"); }
  1500.  
  1501. elsif($BotNick =~ /Pichu/i) { $BotFont = "⚡"; $irc->yield($ComA => $ComB => POE::Component::IRC::Common::ORANGE.(join " ", @PrivmsgB)." ⚡"); }
  1502.  
  1503. elsif($BotNick =~ /Akul/i) { $irc->yield($ComA => $ComB => POE::Component::IRC::Common::MAGENTA.(reverse(join " ", @PrivmsgB))." 〜"); }
  1504.  
  1505. elsif($BotNick =~ /Ukalay/i) { $irc->yield($ComA => $ComB => POE::Component::IRC::Common::MAGENTA.(PigLatin(join " ", @PrivmsgB))." 〜"); }
  1506.  
  1507. else { $irc->yield($ComA => $ComB => (join " ", @PrivmsgB).""); }
  1508.  
  1509. }
  1510.  
  1511. sub GetTime { # This is just for timestamps, just leave it.
  1512.  
  1513. my($Sec, $Min, $Hour, $Day, $Mon, $Year, $WDay, $YDay) = localtime;
  1514.  
  1515. my $APM = "AM";
  1516.  
  1517. if($Hour > 12) { $Hour -= 12; $APM = "PM"; }
  1518.  
  1519. if($Hour < 10) { $Hour = "0".$Hour; }
  1520.  
  1521. if($Min < 10) { $Min = "0".$Min; }
  1522.  
  1523. if($Sec < 10) { $Sec = "0".$Sec; }
  1524.  
  1525. return "[ $Hour:$Min:$Sec $APM ] ";
  1526.  
  1527. }
  1528.  
  1529. # Caaz was here.
  1530.  
  1531. $poe_kernel->run();
  1532.  
  1533. exit 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement