mirror of https://github.com/bvn13/JIrcBot.git
implemented autorejoin mechanism. in case of bot was kicked
parent
9717263dc0
commit
cc8cf8cb42
|
@ -5,7 +5,7 @@ After=network.target
|
|||
[Service]
|
||||
User=bvn13
|
||||
WorkingDirectory=/srv/jircbot
|
||||
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.0.4.jar
|
||||
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.0.5.jar
|
||||
SuccessExitStatus=143
|
||||
|
||||
[Install]
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -6,7 +6,7 @@
|
|||
|
||||
<groupId>ru.bvn13</groupId>
|
||||
<artifactId>jircbot</artifactId>
|
||||
<version>1.0.4</version>
|
||||
<version>1.0.5</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ import org.springframework.stereotype.Component;
|
|||
import ru.bvn13.jircbot.Services.YandexSearchService;
|
||||
import ru.bvn13.jircbot.config.JircBotConfiguration;
|
||||
import ru.bvn13.jircbot.listeners.*;
|
||||
import ru.bvn13.jircbot.listeners.advices.AdviceListener;
|
||||
import ru.bvn13.jircbot.listeners.calculator.CalculatorListener;
|
||||
import ru.bvn13.jircbot.listeners.quiz.QuizListener;
|
||||
|
||||
|
@ -72,8 +73,9 @@ public class JircBot extends ListenerAdapter {
|
|||
.addListener(new AdviceListener())
|
||||
//.addListener(new LinkPreviewListener())
|
||||
//.addListener(new HelloOnJoinListener())
|
||||
.addListener(new BashOrgListener())
|
||||
.addListener(new QuizListener())
|
||||
.addListener(new BashOrgListener())
|
||||
.addListener(new AutoRejoinListener())
|
||||
.setServers(servers)
|
||||
.setAutoReconnect(true)
|
||||
//.addAutoJoinChannel(c.getChannelName()) //Join the official #pircbotx channel
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package ru.bvn13.jircbot.listeners;
|
||||
|
||||
import org.pircbotx.hooks.ListenerAdapter;
|
||||
import org.pircbotx.hooks.events.JoinEvent;
|
||||
import org.pircbotx.hooks.events.KickEvent;
|
||||
import org.pircbotx.hooks.events.MessageEvent;
|
||||
import org.pircbotx.hooks.types.GenericMessageEvent;
|
||||
import ru.bvn13.jircbot.listeners.advices.AdviceEngine;
|
||||
|
||||
/**
|
||||
* Created by bvn13 on 27.01.2018.
|
||||
*/
|
||||
public class AutoRejoinListener extends ListenerAdapter {
|
||||
|
||||
private Boolean wasKicked = false;
|
||||
private String offender = "";
|
||||
|
||||
@Override
|
||||
public void onKick(KickEvent event) throws Exception {
|
||||
|
||||
if (event.getRecipient().getUserId().equals(event.getBot().getUserBot().getUserId())) {
|
||||
wasKicked = true;
|
||||
offender = event.getUser().getNick();
|
||||
event.getBot().sendIRC().joinChannel(event.getChannel().getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onJoin(JoinEvent event) throws Exception {
|
||||
|
||||
if (wasKicked) {
|
||||
wasKicked = false;
|
||||
event.getBot().sendIRC().notice(event.getChannel().getName(), ""+offender+", "+ AdviceEngine.getAdvice());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package ru.bvn13.jircbot.listeners.advices;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Created by bvn13 on 27.01.2018.
|
||||
*/
|
||||
public class AdviceEngine {
|
||||
private static final String urlAdvice = "http://fucking-great-advice.ru/api/random";
|
||||
|
||||
public static String getAdvice() throws Exception {
|
||||
StringBuffer content = new StringBuffer();
|
||||
try {
|
||||
URL url = new URL(urlAdvice);
|
||||
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
||||
con.setRequestMethod("GET");
|
||||
|
||||
int status = con.getResponseCode();
|
||||
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
String inputLine;
|
||||
while ((inputLine = in.readLine()) != null) {
|
||||
content.append(inputLine);
|
||||
}
|
||||
in.close();
|
||||
|
||||
con.disconnect();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new Exception("не могу получить совет для тебя");
|
||||
}
|
||||
try {
|
||||
JSONParser jsonParser = new JSONParser();
|
||||
JSONObject json = (JSONObject) jsonParser.parse(content.toString());
|
||||
|
||||
return (String) json.get("text");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new Exception("почини бота, блеать!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package ru.bvn13.jircbot.listeners;
|
||||
package ru.bvn13.jircbot.listeners.advices;
|
||||
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
import org.json.simple.JSONObject;
|
||||
|
@ -22,7 +22,6 @@ public class AdviceListener extends ListenerAdapter {
|
|||
|
||||
private static final String COMMAND = "?advice";
|
||||
|
||||
private static final String urlAdvice = "http://fucking-great-advice.ru/api/random";
|
||||
|
||||
@Override
|
||||
public void onGenericMessage(final GenericMessageEvent event) throws Exception {
|
||||
|
@ -37,7 +36,7 @@ public class AdviceListener extends ListenerAdapter {
|
|||
|
||||
if (event.getMessage().equalsIgnoreCase(COMMAND)) {
|
||||
try {
|
||||
String advice = this.getAdvice();
|
||||
String advice = AdviceEngine.getAdvice();
|
||||
event.respond(advice);
|
||||
} catch (Exception e) {
|
||||
event.respond(e.getMessage());
|
||||
|
@ -57,7 +56,7 @@ public class AdviceListener extends ListenerAdapter {
|
|||
}
|
||||
if (this.userIsInList(users, userName)) {
|
||||
try {
|
||||
String advice = this.getAdvice();
|
||||
String advice = AdviceEngine.getAdvice();
|
||||
String response = "" + userName + ", " + advice;
|
||||
if (event instanceof MessageEvent) {
|
||||
((MessageEvent) event).respondChannel(response);
|
||||
|
@ -86,37 +85,6 @@ public class AdviceListener extends ListenerAdapter {
|
|||
return isOnline.get();
|
||||
}
|
||||
|
||||
private String getAdvice() throws Exception {
|
||||
StringBuffer content = new StringBuffer();
|
||||
try {
|
||||
URL url = new URL(urlAdvice);
|
||||
HttpURLConnection con = (HttpURLConnection) url.openConnection();
|
||||
con.setRequestMethod("GET");
|
||||
|
||||
int status = con.getResponseCode();
|
||||
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
|
||||
String inputLine;
|
||||
while ((inputLine = in.readLine()) != null) {
|
||||
content.append(inputLine);
|
||||
}
|
||||
in.close();
|
||||
|
||||
con.disconnect();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new Exception("не могу получить совет для тебя");
|
||||
}
|
||||
try {
|
||||
JSONParser jsonParser = new JSONParser();
|
||||
JSONObject json = (JSONObject) jsonParser.parse(content.toString());
|
||||
|
||||
return (String) json.get("text");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new Exception("почини бота, блеать!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package ru.bvn13.jircbot.listeners.calculator;
|
|||
import lombok.Data;
|
||||
import net.objecthunter.exp4j.Expression;
|
||||
import net.objecthunter.exp4j.ExpressionBuilder;
|
||||
import org.pircbotx.hooks.events.MessageEvent;
|
||||
import org.pircbotx.hooks.types.GenericMessageEvent;
|
||||
import ru.bvn13.fsm.Condition;
|
||||
import ru.bvn13.fsm.Exceptions.FSMException;
|
||||
|
@ -204,7 +205,7 @@ public class CalculatorDialog extends FSM {
|
|||
try {
|
||||
exp = expressionBuilder.build();
|
||||
} catch (Exception e) {
|
||||
event.respond("ERROR: "+e.getMessage());
|
||||
this.sendNotice("ERROR: "+e.getMessage());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -214,7 +215,7 @@ public class CalculatorDialog extends FSM {
|
|||
expressionBuilder = null;
|
||||
exp = null;
|
||||
} catch (Exception e) {
|
||||
event.respond("ERROR: "+e.getMessage());
|
||||
this.sendNotice("ERROR: "+e.getMessage());
|
||||
if (!this.getPreviousState().getName().equalsIgnoreCase("init")) {
|
||||
try {
|
||||
this.prev();
|
||||
|
@ -254,6 +255,7 @@ public class CalculatorDialog extends FSM {
|
|||
this.expression = "";
|
||||
this.init();
|
||||
} catch (NotInitedException e) {
|
||||
this.sendNotice("ERROR: "+e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else {
|
||||
|
@ -305,4 +307,7 @@ public class CalculatorDialog extends FSM {
|
|||
command.equalsIgnoreCase("done");
|
||||
}
|
||||
|
||||
private void sendNotice(String str) {
|
||||
event.getBot().sendIRC().notice(((MessageEvent) event).getChannel().getName(), str);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue