# Jhippo.java
package Jhippo;
/**
*
* @author tak
* @version 3.6
*/
import java.util.Random;
import org.jibble.pircbot.*;
import java.util.regex.*;
public class Jhippo extends PircBot {
public Jhippo() {
this.setName("Jhippo");
}
/*Russian Roulette*/
public static boolean roulette() {
Random chamber = new Random();
int shot = chamber.nextInt(6)+1;
if (shot < 3) {
return(true);
} else {
return(false);
}
}
@Override
protected void onKick(String channel, String kickerNick,
String kickerLogin, String kickerHostname,
String recipientNick, String reason) {
if (recipientNick.equalsIgnoreCase(getNick())) {
joinChannel(channel);
}
}
public void onDisconnect() {
try {
reconnect();
} catch (Exception e) {
System.out.println("Coulden't reconnect to server");
}
}
protected final String[] owners = { "tak", "bigmoneyhat", "FuryHunter", "starshine" };
protected boolean owner = false;
@Override
public void onMessage(String channel, String sender,
String login, String hostname, String message) {
/*check if owners*/
owner:
for (int i = 0; i < owners.length; i++) {
if (owners[i].equalsIgnoreCase(sender)) {
owner = true;
break owner;
} else {
owner = false;
}
}
/*!msg command*/
Pattern msgFunct = Pattern.compile("^(!msg) (.*?) (.*?)$", Pattern.CASE_INSENSITIVE);
Matcher msg = msgFunct.matcher(message);
/*!kick command*/
Pattern kickFunct = Pattern.compile("^(!kick) (.*?) (.*?)?$", Pattern.CASE_INSENSITIVE);
Matcher kick = kickFunct.matcher(message);
/*!join command*/
Pattern joinFunct = Pattern.compile("(!join) (.*?)$", Pattern.CASE_INSENSITIVE);
Matcher join = joinFunct.matcher(message);
/*!toBinary*/
Pattern toBinaryFunct = Pattern.compile("(^!toBinary) (.*?)$", Pattern.CASE_INSENSITIVE);
Matcher toBinary = toBinaryFunct.matcher(message);
/*!toBinary*/
Pattern rouletteFunct = Pattern.compile("(^!roulette) (.*?)$", Pattern.CASE_INSENSITIVE);
Matcher roulette = rouletteFunct.matcher(message);
/*Functions actually Start*/
if (message.equalsIgnoreCase("!time")) {
String time = new java.util.Date().toString();
sendMessage(channel, sender + ": The time is now " + time);
}
if (message.equalsIgnoreCase("!help")) {
sendMessage(channel, "Help With:");
sendMessage(channel, "!help (general help)");
sendMessage(channel, "!helpmisc (misc for norm users)");
sendMessage(channel, "!helpchan (help w/ channel stuffs)");
sendMessage(channel, "!helpowner (help w/ owner commands)");
}
if (message.equalsIgnoreCase("!helpowner")) {
sendMessage(channel, "Owner Only Commands:");
sendMessage(channel, "!quit");
sendMessage(channel, "!kick *who *reason");
sendMessage(channel, "!penis");
sendMessage(channel, "!timewarp");
sendMessage(channel, "!roulette *nick");
}
if (message.equalsIgnoreCase("!helpmisc")) {
sendMessage(channel, "Misc Commands:");
sendMessage(channel, "!laser");
sendMessage(channel, "!nigger");
sendMessage(channel, "!time");
sendMessage(channel, "!toBinary *integar");
}
if (message.equalsIgnoreCase("!helpchan")) {
sendMessage(channel, "Channel Tools:");
sendMessage(channel, "!part (parts channel)");
sendMessage(channel, "!join *channel");
sendMessage(channel, "!msg *who *message");
}
if (message.equalsIgnoreCase("!quit") && owner) {
quitServer("god damn hippies..\n");
try {
Thread.sleep(300);
} catch ( InterruptedException e) {
System.err.println("sleep interupted");
} finally {
System.exit(1);
}
}
if (message.equalsIgnoreCase("!penis") && owner) {
for (int i = 0; i < 20; i++) {
if (i % 2 == 1) {
sendMessage(channel, "PENIS!!!");
try {
Thread.sleep(500);
} catch ( InterruptedException e) {
System.err.println("sleep interupted");
}
} else {
sendMessage(channel, Colors.BROWN + "8==========> ~~~~");
try {
Thread.sleep(500);
} catch ( InterruptedException e) {
System.err.println("sleep interupted");
}
}
}
}
if (message.equalsIgnoreCase("!timewarp") && owner) {
String[] timewarp = {"I remember doing the TIme Warp", "Drinking those moments when",
"The blackness would hit me and the void would be calling",
"Let's do the time warp again...", "Let's do the time warp again!",
" ",
"It's just a jump to the left", "And then a step to the right",
"With your hands on your hips", "You bring your knees in tight",
"But it's the pelvic thrust that really drives you insane,",
"Let's do the Time Warp again!"};
for(int i = 0; i < timewarp.length; i++) {
try {
Thread.sleep(2000);
} catch ( InterruptedException e) {
System.err.println("sleep interupted");
} finally {
sendMessage(channel, timewarp[i]);
}
}
}
if (message.equalsIgnoreCase("!laser")) {
for(int i = 0; i < 2; i++) {
try {
Thread.sleep(3000);
} catch ( InterruptedException e) {
System.err.println("sleep interupted");
} finally {
sendMessage(channel, Colors.OLIVE + "PEW, PEW!");
}
}
}
if (message.equalsIgnoreCase("!nigger")) {
sendMessage(channel, "GIVE ME BACK MY BIKE!");
}
if (message.equalsIgnoreCase("!part")) {
partChannel(channel, "because your not good enough..");
}
if (msg.find()) {
String to = msg.group(2);
String send = msg.group(3);
sendMessage(to, send);
}
if (kick.find() && owner) {
String who = kick.group(2);
String reason = kick.group(3);
kick(channel, who, reason);
}
if (join.find()) {
String where = join.group(2);
joinChannel(where);
}
if (toBinary.find()) {
String binary = toBinary.group(2);
try {
int i = Integer.parseInt(binary.trim());
String binstr = Integer.toBinaryString(i);
sendMessage(channel, "Binary value is: " + binstr);
} catch (NumberFormatException e) {
sendMessage(channel, Colors.RED + "enter a correct integer");
}
}
if (roulette.find() && owner) {
String name = roulette.group(2);
boolean check = roulette();
if (check) {
sendMessage(channel, "BANG BANG, " + name + " IS DEAD");
kick(channel, name, "lost the game.");
} else {
sendMessage(channel, "click. ... " + name + " wins ^_^");
op(channel, name);
}
}
}
}
JhippoGUI.java
package Jhippo;
/**
*
* @author tak
* @version 3.6
*/
public class JhippoGUI extends javax.swing.JFrame {
/** Creates new form JhippoGUI */
public JhippoGUI() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jColorChooser1 = new javax.swing.JColorChooser();
title = new javax.swing.JLabel();
servertext = new javax.swing.JLabel();
porttext = new javax.swing.JLabel();
port = new javax.swing.JTextField();
server = new javax.swing.JTextField();
channeltext = new javax.swing.JLabel();
channel = new javax.swing.JTextField();
jSeparator1 = new javax.swing.JSeparator();
connect = new javax.swing.JButton();
passwordtext = new javax.swing.JLabel();
pasword = new javax.swing.JTextField();
jSeparator2 = new javax.swing.JSeparator();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
title.setText("Jhippo");
servertext.setText("Server");
porttext.setText("Port");
port.setText("6667");
server.setText("irc.esper.net");
server.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
serverActionPerformed(evt);
}
});
channeltext.setText("Channel");
channel.setText("#hippos");
connect.setText("Connect");
connect.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
connectActionPerformed(evt);
}
});
passwordtext.setText("password");
pasword.setText("dsk`144$sdx=-9");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(title)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(channeltext, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(passwordtext)
.addComponent(servertext))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pasword, javax.swing.GroupLayout.DEFAULT_SIZE, 63, Short.MAX_VALUE)
.addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(porttext)
.addGap(18, 18, 18)
.addComponent(port, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(connect, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addComponent(server, javax.swing.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE))
.addGap(71, 71, 71)))))
.addContainerGap())
.addComponent(jSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 316, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(title)
.addGap(10, 10, 10)
.addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(34, 34, 34)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(server, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(servertext))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(port, javax.swing.GroupLayout.DEFAULT_SIZE, 31, Short.MAX_VALUE)
.addComponent(porttext, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(pasword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(passwordtext)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(connect)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(channel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(channeltext))))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void serverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_serverActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_serverActionPerformed
private void connectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_connectActionPerformed
Jhippo bot = new Jhippo();
String serverc = server.getText();
String portc = port.getText();
String channelc = channel.getText();
try {
bot.setVerbose(true);
bot.setAutoNickChange(true);
bot.connect(serverc);
bot.joinChannel(channelc);
bot.identify("dsk`144$sdx=-9");
} catch (Exception e) {
title.setText("Error occured");
}
}//GEN-LAST:event_connectActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JhippoGUI().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField channel;
private javax.swing.JLabel channeltext;
private javax.swing.JButton connect;
private javax.swing.JColorChooser jColorChooser1;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JLabel passwordtext;
private javax.swing.JTextField pasword;
private javax.swing.JTextField port;
private javax.swing.JLabel porttext;
private javax.swing.JTextField server;
private javax.swing.JLabel servertext;
private javax.swing.JLabel title;
// End of variables declaration//GEN-END:variables
}
Refactorings
No refactoring yet !
Java irc bot using Pircbot.jar, and a Swing GUI client, built with netbeans =) put into two files, Jhippo.java and JhippoGUI.java