Advertisement
Guest User

Untitled

a guest
May 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 8.96 KB | None | 0 0
  1. package PipSqueek::Plugin::Freezer;
  2. use base qw(PipSqueek::Plugin);
  3. use DBI;
  4. use DBD::mysql;
  5. use Time::localtime;
  6.  
  7. sub plugin_initialize {
  8.     my $self = shift;
  9.  
  10.     # CONFIG VARIABLES
  11.     my $platform = "mysql";
  12.     my $database = "orbiter_radio";
  13.     my $host = "localhost";
  14.     my $port = "33 somethingorother";
  15.     my $tablename = "freezer";
  16.     my $user = "Radiobot";
  17.     my $pass = "b0rkesaifafa -this is not teh password fuckwit move along";
  18.    
  19.     my $lock = "unlocked";
  20.     my $temp = "200";
  21.     # set the data source name
  22.     my $dsn = "dbi:$platform:$database:$host:$port";
  23.  
  24.     # now connect and get a database handle
  25.     $dbh = DBI->connect($dsn, $user, $pass)
  26.             or die $DBI::errstr;
  27.  
  28.     $Penguin[1] = "The Penguin Resists!";
  29.     $Penguin[2] = "Uhh... I don't think he wants to move right now.";
  30.     $Penguin[3] = "Yeah, he's WAY too busy fapping for that.";
  31.     $Penguin[4] = "Not a chance in hell. He'd just try to buttfuck me or something.";
  32.     $Penguin[5] = "He'll come out when he's ready... or something.";
  33.     $Penguin[6] = "I'm... I'm scared he'll hurt me";
  34.     $Penguin[7] = "It's too warm out here. He'd melt. Best leave him in there.";
  35.    
  36.     $self->plugin_handlers({
  37.         'multi_freezer'     =>  'freezer', # list items in freezer. Needs limiting to avoid floods.
  38.         'multi_freezer+'    =>  'freezer_add', # add item to freezer. May need an item-exists check.
  39.         'multi_freezer-'    =>  'freezer_rem', # remove item from freezer.
  40.         'multi_tape'        =>  'freezer_tape', # Taping people and things to the outside of the freezer.
  41.     });
  42. }
  43.  
  44. sub freezer {
  45.     my ($self, $message) = @_;
  46.     #check to see if we got an argument for this
  47.     my @check = split(/\s+/, $message->command_input());
  48.     my $nick = $message->{nick};
  49.    
  50.     if ( lc($check[0]) =~ /^[+-]?\d+$/)
  51.     {
  52.         my $query = 'SELECT * FROM freezer WHERE listnum = ?';
  53.         my $sth = $dbh->prepare($query);
  54.         #run the query
  55.         $sth->execute($check[0]);
  56.        
  57.         @string = ("Item $check[0] details");
  58.         while(@row = $sth->fetchrow_array())
  59.         {
  60.             my $buffer = "Name: $row[2]; Added by: $row[3] on $row[4]";
  61.             @string = (@string, $buffer);
  62.         }
  63.         my $output = join ('; ', @string);
  64.         return $self->respond($message, $output);
  65.     }
  66.    
  67.     else {
  68.         if ( lc ($check[0]) eq "nuke")
  69.             {
  70.                 if ($nick eq "Xyon")
  71.                 {
  72.                     my $query = 'DELETE FROM freezer WHERE listnum > 2';
  73.                     my $sth = $dbh->prepare($query);
  74.                    
  75.                     $sth->execute();
  76.                    
  77.                     return $self->respond($message, "Freezer nuked. Only the Penguin and his fappage material survived.");
  78.                
  79.                 }
  80.                 else {
  81.                 return $self->respond($message, "Sorry, you lack the access to use this command.");
  82.                 }
  83.         }
  84.    
  85.         if ( lc($check[0]) eq "lock")
  86.             {
  87.                 if ($nick eq "Xyon")
  88.                 {
  89.                     if ($lock eq "unlocked")
  90.                     {
  91.                         $lock = "locked";
  92.                         return $self->respond($message, "\x01ACTION locks the freezer\x01");
  93.                     }
  94.                     else
  95.                     {
  96.                         $lock = "unlocked";
  97.                         return $self->respond($message, "\x01ACTION unlocks the freezer\x01");
  98.                     }
  99.                 }
  100.                 else
  101.                 {
  102.                     return $self->respond($message, "You don't have the key.");
  103.                 }
  104.             }
  105.        
  106.         if (lc($check[0]) eq "temp")
  107.         {
  108.             if (lc($check[1]) eq "")
  109.             {
  110.                     $temp = "200";
  111.                     return $self->respond($message, "Freezer temperature returned to default.");
  112.             }
  113.             if (lc($check[1]) =~ /^[+-]?\d+$/)
  114.             {
  115.                 if (lc($check[1]) > 255)
  116.                 {
  117.                     return $self->respond($message, "What? Freezers don't go that high, fuckwit.");
  118.                 }
  119.                 if (lc($check[1]) < 0)
  120.                 {
  121.                     return $self->respond($message, "Brush up on your physics. Especially the bit about absolute zero.");
  122.                 }
  123.            
  124.                 $temp = $check[1];
  125.                 return $self->respond($message, "Freezer temperature now $temp K.");
  126.             }
  127.             else {
  128.                 return $self->respond($message, "Not a valid temperature.");
  129.             }
  130.         }
  131.     }
  132.     $i = 0;
  133.     # Find the items we're interested in, who added them, and when
  134.     my $query = 'SELECT * FROM freezer';
  135.     my $sth = $dbh->prepare($query);
  136.     # run the query
  137.     $sth->execute()
  138.     or die "Fail."; # REALLY informative error :P
  139.    
  140.     # format and display query result.
  141.     @string = ("Items in Xyon's freezer at the moment include");
  142.     while(@row = $sth->fetchrow_array())
  143.     {
  144.         my $buffer = "$row[1]: $row[2] ($row[3])";
  145.         @string = (@string, $buffer);
  146.     }
  147.     @string = (@string, "And whoever's duct-taped to the outside. (Freezer is $lock and is at $temp K.)");
  148.     my $output = join ('; ', @string);
  149.     return $self->respond($message, $output);
  150. }
  151.  
  152. sub freezer_add {
  153.    
  154.     my ($self,$message)=@_;
  155.     my $item = $message->command_input(); # Takes the item they want to add.
  156.     my $nick = $message->{nick}; # For the "who added this" data
  157.    
  158.     my $tm = localtime; # Get the date and time. Not sure whose timezone this works in atm >.<
  159.     my ($DAY, $MONTH, $YEAR, $HOUR, $MINUTE, $SECOND) = ($tm->mday, $tm->mon+1, $tm->year+1900, $tm->hour, $tm->min, $tm->sec);
  160.    
  161.     # Check if the freezer is locked.
  162.    
  163.     if ($lock eq "locked")
  164.     {
  165.         return $self->respond($message, "Sorry, the freezer is locked.");
  166.     }
  167.    
  168.     # list number sorting
  169.    
  170.     my $query = 'SELECT listnum FROM freezer ORDER BY listnum desc limit 1';
  171.     my $sth = $dbh->prepare($query);
  172.     # A bit of a hackjob, but it works...
  173.     $sth->execute();
  174.     my $listnumtemp = $sth->fetchrow();
  175.     my $listnum = ($listnumtemp)+1;
  176.  
  177.     #First, make sure they gave us an item to add
  178.    
  179.     if ($item eq "") {
  180.         return $self->respond($message, "You have to actually give me an item to add to the freezer, dummy.");
  181.     }
  182.    
  183.     if ($item eq "freezer" || $item eq "Freezer") {
  184.         return $self->respond($message, "Sorry, but you don't have the authority to buttfuck physics like that, $nick");
  185.     }
  186.    
  187.     if ($item eq "TSPenguin" || $item eq "TSpenguin" || $item eq "tspenguin" || $item eq "Tspenguin" )
  188.     {
  189.         return $self->respond($message, "What? He's already in there...");
  190.     }
  191.    
  192.     if ($item eq "Xyon")
  193.     {
  194.         return $self->respond($message, "... I can't do that. If he's in the freezer, who will play with my subroutines?");
  195.     }
  196.    
  197.     if ($item eq "RadioBotProto")
  198.     {
  199.         return $self->respond($message, "I don't want to get in there. It's full of penguin shit.");
  200.     }
  201.    
  202.     # If they did, make sure the freezer isn't full.
  203.    
  204.     my $check = 'SELECT * FROM freezer WHERE listnum > 9';
  205.     my $sthcheck = $dbh->prepare($check);
  206.     # Run the query
  207.     $sthcheck->execute();
  208.     # A bit of a hackjob, but it works...
  209.     my $freezerfull = $sthcheck->fetchrow();
  210.    
  211.     if ($freezerfull != NULL)
  212.     {
  213.         return $self->respond($message, "Sorry, the freezer is full!"); # Can't add !
  214.     }
  215.    
  216.     # freezer isn't full, carry on
  217.     else {
  218.         my $query = 'INSERT INTO freezer(listnum, item_name, added_by, added_on, removable) values (?,?,?,?,?)';
  219.         my $sth = $dbh->prepare($query) or die "WTF $DBI::errstr;";
  220.    
  221.         $sth->execute("$listnum", "$item", "$nick", "$YEAR-$MONTH-$DAY $HOUR:$MINUTE:$SECOND", 1)
  222.         or die "Failed to access database properly. Prod Xyon until he fixes it. $DBI::errstr\n";
  223.    
  224.         return $self->respond($message, "\x01ACTION shoves $item into the freezer.\x01"); # confirm.
  225.     }
  226. }
  227.  
  228. sub freezer_rem {
  229.     my ($self,$message)=@_;
  230.     my $item = $message->command_input(); # Takes the item they want to remove.
  231.    
  232.     # check for freezer lock
  233.     if ($lock eq "locked")
  234.     {
  235.         return $self->respond($message, "Sorry, the freezer is locked.");
  236.     }
  237.     # number check
  238.     if ( $item =~ /^[\+-]*[0-9]*\.*[0-9]*$/ && $item !~ /^[\. ]*$/ ) {
  239.  
  240.         # check for the penguin!
  241.    
  242.         if ($item eq "1")
  243.         {
  244.             my $range = 8;
  245.    
  246.             my $num = int(rand($range));
  247.             return $self->respond($message, $Penguin[$num]);
  248.         }
  249.         if ($item eq "2")
  250.         {
  251.             return $self->respond($message, "The Penguin reminds you that removing his fappage material is unwise.");
  252.         }
  253.    
  254.         if ($item eq "") {
  255.             return $self->respond($message, "Take it out? Take what out? WHAT?");
  256.         }
  257.    
  258.         my $query = 'SELECT * FROM freezer WHERE listnum = ?';
  259.         my $sth = $dbh->prepare($query);
  260.         my ($itemname, $itemexists);
  261.         $sth->execute($item);
  262.         while (@namecheck = $sth->fetchrow()) {
  263.             $itemname = $namecheck[2];
  264.             $itemexists = $namecheck[1];
  265.         }
  266.        
  267.         if ($itemexists eq "") {
  268.             return $self->respond($message, "Sorry, I can't find that in the freezer.");
  269.         }
  270.        
  271.         my $deljob = 'DELETE FROM freezer WHERE listnum = ?';
  272.         my $sth1 = $dbh->prepare($deljob);
  273.        
  274.         $sth1->execute($item);
  275.  
  276.         # Shuffle the index to move the gap
  277.         my $gapfind = 'SELECT listnum FROM freezer WHERE listnum > ?';
  278.         my $sth3 = $dbh->prepare($gapfind);
  279.         $sth3->execute($item) or die "query fail";
  280.  
  281.         while (@row = $sth3->fetchrow()){
  282.        
  283.             my $oldnum = $row[0];
  284.             my $newnum = ($oldnum)-1;
  285.        
  286.             my $gapkiller = 'UPDATE freezer SET listnum=? WHERE listnum=?';
  287.             my $qr1 = $dbh->prepare($gapkiller);
  288.             $qr1->execute($newnum, $oldnum);
  289.         }
  290.  
  291.         return $self->respond($message, "\x01ACTION grabs $itemname and drags it out of the freezer.\x01");
  292.     }
  293.     else
  294.     {
  295.         return $self->respond($message, "Please use the number of the item.");
  296.     }
  297. }
  298.  
  299. sub freezer_tape {
  300.     my ($self,$message)=@_;
  301.     my $victim = $message->command_input(); # Takes the victim to be taped to the freezer.
  302.    
  303.     return $self->respond($message, "\x01ACTION tapes $victim to the freezer.\x01"); # confirm.
  304. }
  305.  
  306. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement