package us.aaronweiss.juicebot.examples;
import io.netty.channel.Channel;
import us.aaronweiss.juicebot.Bot;
import us.aaronweiss.juicebot.ManagedBot;
import us.aaronweiss.juicebot.Message;
import java.util.Scanner;
/**
* A bot that says whatever the owner says in reverse. This
* makes liberal use of the {@code ManagedBot} base as a
* simple, and easy means of filtering messages from a user.
*
* @author Aaron Weiss
* @version 1.0.0
* @since 2.0.1
*/
public class ReversedBot extends ManagedBot {
/**
* Creates a {@code ReversedBot} for a particular {@code username}.
*
* @param username the username to reverse messages from.
*/
public ReversedBot(String username) {
super("reversed_" + username, username);
}
@Override
public boolean receivedAdmin(Message message) {
if (message.type().equals("PRIVMSG")) {
message.reply(reverse(message.message()));
return true;
}
return false;
}
@Override
public void receivedUser(Message message) {
return;
}
@Override
public void joinAll() {
join("#vana");
}
/**
* Reverses the {@code message} completely.
*
* @param message the string to reverse
* @return the reversed string
*/
protected String reverse(String message) {
return new StringBuilder(message).reverse().toString();
}
/**
* Runs this bot.
*
* @param args the server to connect to
*/
public static void main(String[] args) {
String server = "irc.fyrechat.net:6667";
if (args.length > 0)
server = args[0];
Bot bot = new ReversedBot("calc0000");
Channel session = bot.connect(server);
Scanner input = new Scanner(System.in);
while (true) {
String cmd = input.nextLine();
if (cmd.equalsIgnoreCase("quit") || cmd.equalsIgnoreCase("exit") || cmd.equalsIgnoreCase("shutdown")) {
bot.disconnect(session);
break;
}
}
input.close();
}
}