123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- package main;
- import java.io.IOException;
- import java.net.UnknownHostException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- import java.util.Locale;
- import org.jibble.pircbot.IrcException;
- import org.jibble.pircbot.NickAlreadyInUseException;
- import org.jibble.pircbot.PircBot;
- import actions.Action;
- import comportement.Comportement;
- public class Bot extends PircBot {
- private volatile static long TIME_BETWEEN_MESSAGES = 200;
- private List<Action> actions = Action.getAllActions(this);
- private List<Comportement> comportements = Comportement.getAllComportements(this);
- private String[] admins;
- private boolean responseOnPrivateChannel = true;
- private boolean responseOnPrivateMessages = true;
- private volatile static long WAIT_BEFORE_RECONNECT = 60;
-
- public Bot() {
- this.setAutoNickChange(true);
- this.setName("UneFede");
- this.setVersion("Gentille Droide de la fédération, <3 Marmat");
- this.setMessageDelay(TIME_BETWEEN_MESSAGES);
- if(Main.isDebug()) {
- this.setVerbose(true);
- }else {
- this.setVerbose(false);
- }
- }
-
-
- public void onPrivateMessage(String sender, String login, String hostname, String message) {
- if(responseOnPrivateMessages) {
- onMessage(sender, sender, login, hostname, message);
- }else {
- sendMessage(sender,"Eh non, Je suis configurée pour ne pas répondre aux MP. Désolé!");
- }
- }
-
-
- public void onDisconnect() {
- Date d = new Date();
- System.err.println("Je viens d'être déconnectée!");
- this.sendMessageToAdmins("Je viens d'être déconnectée!");
- while(!this.isConnected()) {
- try {
- Thread.sleep(WAIT_BEFORE_RECONNECT*1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- try {
- this.reconnect();
- }catch (UnknownHostException e) {
-
-
- } catch (NickAlreadyInUseException e) {
- this.sendMessageToAdmins("Je viens d'être déconnectée et en tentant de me reconnecter mon nom était déjà utilisé!");
- e.printStackTrace();
- } catch (IOException e) {
- this.sendMessageToAdmins("Je viens d'être déconnectée et en tentant de me reconnecter, j'ai eu une IOException: "+e.toString());
- e.printStackTrace();
- } catch (IrcException e) {
- this.sendMessageToAdmins("Je viens d'être déconnectée et en tentant de me reconnecter, j'ai eu une IrcException: "+e.toString());
- e.printStackTrace();
- }
- }
-
- SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss", Locale.FRENCH);
- this.sendMessageToAdmins("Je viens de me reconnecter, j'était abscente depuis le "+sdf.format(d));
-
- }
-
- public final void joinChannels() {
- String[] channels = Main.getCHANNELS();
- for(int i = 0; i< channels.length; i++) {
- joinChannel(channels[i]);
- }
- }
-
- public void onMessage(String channel, String sender,
- String login, String hostname, String message) {
-
- for(Action a:actions){
- if(a.hasToReact(message)) {
- a.react(channel, sender, login, hostname, message);
- }
- }
- //easter Eggs
- String ea="Ehlo "+this.getNick();
- if (message.toLowerCase().contains(ea.toLowerCase())) {
- sendMessage(channel, "Ehlo "+sender+"!!");
- }
-
- if(message.toLowerCase().contains("mousse au chocolat")) {
- sendMessage(channel, "J'adore la mousse au chocolat de Benjamin B.");
- }
- System.out.println("cprt");
- for(Comportement c : comportements) {
- System.out.println("Comportements");
- if(c.hastoreact(message)) {
- c.react(channel, sender, login, hostname, message);
- System.out.println("a reagi");
- }else {
- System.out.println("ne reagit pas");
- }
- }
- }
- public void onMode(String channel,
- String sourceNick,
- String sourceLogin,
- String sourceHostname,
- String mode) {
- mode = mode.toLowerCase();
- if(mode.contains("pircbot") && mode.substring(0, 2).equals("+b") && sourceLogin.toLowerCase().contains("abitbolg")) {
- sendMessageToAdmins("Help, il semblerai que je me soit fait ban sur "+channel+" Tu peux vérifier?");
- }
- }
-
-
- /**
- * Envoie les messages les uns à la suite de l'autre dans l'ordre de la liste.
- * @param channel Channel IRC dans lequel envoyer les messages
- * @param lines liste de chaaines de caractères à envoyer.
- */
- private void sendMessage(String channel, List<String> lines) {
- for(String s : lines) {
- sendMessage(channel,s);
- }
- }
-
-
- /**
- *
- */
- @Override
- public void onKick (String channel, String kickerNick, String login, String hostname, String recipientNick, String reason) {
- if(recipientNick.equalsIgnoreCase(this.getNick())){
- RejoinThread rj = new RejoinThread(this,channel);
- rj.start();
- }
-
- }
-
- public void sendMessageToAdmins(String message) {
- for(int i=0;i<admins.length;i++) {
- sendMessage(admins[i], message);
- }
- }
-
- public void sendMessageToAdmins(List<String> messages) {
- for(int i=0;i<admins.length;i++) {
- sendMessage(admins[i], messages);
- }
- }
-
-
- /**
- * @return the tIME_BETWEEN_MESSAGES
- */
- public static long getTIME_BETWEEN_MESSAGES() {
- return TIME_BETWEEN_MESSAGES;
- }
- /**
- * @param tIME_BETWEEN_MESSAGES the tIME_BETWEEN_MESSAGES to set
- */
- public static void setTIME_BETWEEN_MESSAGES(long tIME_BETWEEN_MESSAGES) {
- TIME_BETWEEN_MESSAGES = tIME_BETWEEN_MESSAGES;
- }
- /**
- * @return the admins
- */
- public String[] getAdmins() {
- return admins;
- }
- /**
- * @param admins the admins to set
- */
- public void setAdmins(String[] admins) {
- this.admins = admins;
- }
- /**
- * @return the responseOnPrivateChannel
- */
- public boolean isResponseOnPrivateChannel() {
- return responseOnPrivateChannel;
- }
- /**
- * @param responseOnPrivateChannel the responseOnPrivateChannel to set
- */
- public void setResponseOnPrivateChannel(boolean responseOnPrivateChannel) {
- this.responseOnPrivateChannel = responseOnPrivateChannel;
- }
- /**
- * @return the responseOnPrivateMessages
- */
- public boolean isResponseOnPrivateMessages() {
- return responseOnPrivateMessages;
- }
- /**
- * @param responseOnPrivateMessages the responseOnPrivateMessages to set
- */
- public void setResponseOnPrivateMessages(boolean responseOnPrivateMessages) {
- this.responseOnPrivateMessages = responseOnPrivateMessages;
- }
- public void sendMessage(String sender,String channel,String message) {
- if(this.responseOnPrivateChannel) {
- this.sendMessage(sender, message);
- }else {
- this.sendMessage(channel, message);
- }
- }
-
- public void sendMessages(String sender, String channel,List<String> messages) {
- if(this.responseOnPrivateChannel) {
- this.sendMessage(sender, messages);
- }else {
- this.sendMessage(channel, messages);
- }
- }
-
-
- }
|