implemented posting quotes from Bash.Org

pull/2/head
Vyacheslav N. Boyko 2018-01-26 17:47:06 +03:00
parent 560dfaed36
commit 9717263dc0
4 changed files with 96 additions and 4 deletions

View File

@ -5,7 +5,7 @@ After=network.target
[Service]
User=bvn13
WorkingDirectory=/srv/jircbot
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.0.3.jar
ExecStart=/usr/bin/java -jar /srv/jircbot/jircbot-1.0.4.jar
SuccessExitStatus=143
[Install]

View File

@ -6,7 +6,7 @@
<groupId>ru.bvn13</groupId>
<artifactId>jircbot</artifactId>
<version>1.0.3</version>
<version>1.0.4</version>
<packaging>jar</packaging>

View File

@ -70,8 +70,9 @@ public class JircBot extends ListenerAdapter {
.addListener(new RegexCheckerListener())
//.addListener(new YandexSearchListener(this.config, this.yandexSearchService))
.addListener(new AdviceListener())
.addListener(new LinkPreviewListener())
.addListener(new HelloOnJoinListener())
//.addListener(new LinkPreviewListener())
//.addListener(new HelloOnJoinListener())
.addListener(new BashOrgListener())
.addListener(new QuizListener())
.setServers(servers)
.setAutoReconnect(true)

View File

@ -0,0 +1,91 @@
package ru.bvn13.jircbot.listeners;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.pircbotx.hooks.ListenerAdapter;
import org.pircbotx.hooks.events.MessageEvent;
import org.pircbotx.hooks.types.GenericMessageEvent;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by bvn13 on 26.01.2018.
*/
public class BashOrgListener extends ListenerAdapter {
private static final String COMMAND = "?bash";
private static final String USER_AGENT = "Mozilla/5.0";
@Override
public void onGenericMessage(final GenericMessageEvent event) throws Exception {
if (event.getUser().getUserId().equals(event.getBot().getUserBot().getUserId())) {
return;
}
if (!event.getMessage().startsWith(COMMAND)) {
return;
}
try {
sendNotice(event, getRandomBashQuote());
} catch (Exception e) {
event.respond("ОШИБКА: "+e.getMessage());
e.printStackTrace();
}
}
private void sendNotice(GenericMessageEvent event, String str) {
event.getBot().sendIRC().notice(((MessageEvent) event).getChannel().getName(), str);
}
private String getDataFromConnection(HttpURLConnection con) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "windows-1251"));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
private String getRandomBashQuote() throws Exception {
URL obj = new URL("http://bash.im/random");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", USER_AGENT);
//con.setRequestProperty("X-Requested-With", "XMLHttpRequest");
int responseCode = con.getResponseCode();
if (responseCode != 200) {
throw new Exception("Не удалось получить цитату!");
}
String response = getDataFromConnection(con);
Document doc = Jsoup.parse(response);
Elements quotes = doc.select(".quote .text");
if (quotes.size() == 0) {
throw new Exception("Не получено ни одной цитаты!");
}
Element quote = quotes.get(0);
return quote.text();
}
}