@ -0,0 +1,7 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> |
||||
<classpathentry kind="lib" path="D:/Downloads/JDA-3.8.0_423-withDependencies.jar" sourcepath="D:/Downloads/JDA-3.8.0_423-sources.jar"/> |
||||
<classpathentry kind="output" path="bin"/> |
||||
</classpath> |
@ -0,0 +1 @@ |
||||
/bin/ |
@ -0,0 +1,17 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>BandoriBot</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -0,0 +1,11 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 |
||||
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve |
||||
org.eclipse.jdt.core.compiler.compliance=1.8 |
||||
org.eclipse.jdt.core.compiler.debug.lineNumber=generate |
||||
org.eclipse.jdt.core.compiler.debug.localVariable=generate |
||||
org.eclipse.jdt.core.compiler.debug.sourceFile=generate |
||||
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
||||
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
||||
org.eclipse.jdt.core.compiler.source=1.8 |
@ -0,0 +1,143 @@ |
||||
package sig; |
||||
import java.io.File; |
||||
import java.util.Arrays; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
|
||||
import javax.security.auth.login.LoginException; |
||||
|
||||
import net.dv8tion.jda.core.JDA; |
||||
import net.dv8tion.jda.core.JDABuilder; |
||||
import net.dv8tion.jda.core.entities.Channel; |
||||
import net.dv8tion.jda.core.entities.ChannelType; |
||||
import net.dv8tion.jda.core.entities.Member; |
||||
import net.dv8tion.jda.core.entities.MessageChannel; |
||||
import net.dv8tion.jda.core.events.Event; |
||||
import net.dv8tion.jda.core.events.ReadyEvent; |
||||
import net.dv8tion.jda.core.events.message.MessageReceivedEvent; |
||||
import net.dv8tion.jda.core.hooks.ListenerAdapter; |
||||
|
||||
public class BandoriBot extends ListenerAdapter{ |
||||
final public static String BASEDIR = "./"; |
||||
public static HashMap<String,List<String>> stamp_map = new HashMap<String,List<String>>(); |
||||
|
||||
public static void main(String[] arguments) { |
||||
populateStampMap(); |
||||
String[] filedata = FileUtils.readFromFile(BASEDIR+"clientToken.txt"); |
||||
try { |
||||
JDA bot = new JDABuilder(filedata[0]) |
||||
.addEventListener(new BandoriBot()).build(); |
||||
bot.awaitReady(); |
||||
} catch (LoginException | InterruptedException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
public static void populateStampMap() { |
||||
stamp_map.put("kasumi_gogo",Arrays.asList("gogo")); |
||||
stamp_map.put("tae_letsplay",Arrays.asList("playtogether","wanttoplay","multilive","letsplay")); |
||||
stamp_map.put("rimi_choco",Arrays.asList("choco","cornet")); |
||||
stamp_map.put("saya_bread",Arrays.asList("bread")); |
||||
stamp_map.put("arisa_doki",Arrays.asList("doki")); |
||||
stamp_map.put("ran_same",Arrays.asList("sameasalways","alwayssame","alwaysthesame")); |
||||
stamp_map.put("moca_youdidit",Arrays.asList("youdidit","congratulations","buns","mocatastic")); |
||||
stamp_map.put("himari_heyheyhoh",Arrays.asList("heyo","heyhey","hihi","hiyo")); |
||||
stamp_map.put("tomoe_letsdothis",Arrays.asList("letsdothis","letsdoit")); |
||||
stamp_map.put("tsugumi_wecandoit",Arrays.asList("wegotthis","wegotit","wecan")); |
||||
stamp_map.put("kokoro_happylucky",Arrays.asList("happy!","lucky")); |
||||
stamp_map.put("kaoru_fleeting",Arrays.asList("fleeting")); |
||||
stamp_map.put("aya_fever",Arrays.asList("fever","ayay")); |
||||
stamp_map.put("hagumi_smileyay",Arrays.asList("smileyay","yay")); |
||||
stamp_map.put("kanon_fuee",Arrays.asList("fue","waa","reee")); |
||||
stamp_map.put("misaki_ready",Arrays.asList("amready","beenready","ready!")); |
||||
stamp_map.put("hina_fullcombo",Arrays.asList("fcd","fullcombo","nomiss","allperfect","notasinglemiss","thefc","anfc","fullperfect")); |
||||
stamp_map.put("chisato_planned",Arrays.asList("justasplanned","allplanned","calculated","thatcoming")); |
||||
stamp_map.put("maya_huhehe",Arrays.asList("hehe","huehe","huehue")); |
||||
stamp_map.put("eve_bushido",Arrays.asList("bushido")); |
||||
stamp_map.put("yukina_notbad",Arrays.asList("notbad","veryclose")); |
||||
stamp_map.put("sayo_goodwork",Arrays.asList("goodwork","goodjob","nicejob","welldone","greatwork","greatjob")); |
||||
stamp_map.put("lisa_nextonelastone",Arrays.asList("lastone","mylast")); |
||||
stamp_map.put("ako_onemoretime",Arrays.asList("onemore","goagain","keepgoing","dontstop")); |
||||
stamp_map.put("rinko_jam",Arrays.asList("lovethissong","jam")); |
||||
stamp_map.put("marina_yeahyeah",Arrays.asList("yeahyeah","letsgo")); |
||||
stamp_map.put("kokoro_moremore",Arrays.asList("moremore","iwantmore")); |
||||
stamp_map.put("arisa_huh",Arrays.asList("huh?","hh?","yy?","aat?","aa?","tt?","nani","nand")); |
||||
stamp_map.put("yukina_followmylead",Arrays.asList("followmylead","takethelead","guideyou","fullydevoted")); |
||||
stamp_map.put("kaoru_suchalovelyevening",Arrays.asList("goodevening","lovelyevening","beautifulnight","grandnight","wonderfulevening")); |
||||
stamp_map.put("rimi_congrats",Arrays.asList("grats")); |
||||
stamp_map.put("ran_somethingbigiscoming",Arrays.asList("somethingbig","iscoming")); |
||||
stamp_map.put("tsugumi_comeon",Arrays.asList("comeon","dontbeafraid","dontbeshy","tsugurific")); |
||||
stamp_map.put("tae_fufusocute",Arrays.asList("socute","kawaii","fufu","adorable","cute")); |
||||
stamp_map.put("eve_marchintobattle",Arrays.asList("marchintobattle","chargeintobattle")); |
||||
stamp_map.put("saya_illtry",Arrays.asList("illtry","itachance","itatry","atleastonce")); |
||||
stamp_map.put("lisa_imsohappy",Arrays.asList("ecstatic","sohappy","toohappy")); |
||||
stamp_map.put("sayo_ohwell",Arrays.asList("ohwell","ahwell","youtried")); |
||||
stamp_map.put("ako_areyouokay",Arrays.asList("youok","beok","daijo")); |
||||
stamp_map.put("chisato_thisissomuchfun",Arrays.asList("muchfun","veryfun","reallyfun","extremelyfun","offun")); |
||||
stamp_map.put("rinko_theresnoway",Arrays.asList("noway")); |
||||
stamp_map.put("tae_thisisgreat",Arrays.asList("thisisgreat","thisisawesome","thisiswonderful")); |
||||
stamp_map.put("moca_thisisgettinginteresting",Arrays.asList("gettinginteresting","thingsaregetting","thisisgetting")); |
||||
stamp_map.put("kaoru_takemyhand",Arrays.asList("takemyhand","allowmeto","demonstrate","romeo")); |
||||
stamp_map.put("kokoro_letsmaketheworldsmile",Arrays.asList("hhw","happyworld","hellohappy","worldsmile")); |
||||
stamp_map.put("hina_nowwereboppin",Arrays.asList("bop","nowwere")); |
||||
} |
||||
|
||||
public static void checkForStamp(MessageChannel channel, String user,String message) { |
||||
boolean foundmatch = false; |
||||
message = message.toLowerCase().replaceAll("[ ]", ""); |
||||
for (String key : stamp_map.keySet()) { |
||||
for (String message_search : stamp_map.get(key)) { |
||||
String filteredmessage = message; |
||||
filteredmessage = filteredmessage.replaceAll("[^A-Za-z0-9]",""); |
||||
System.out.println(filteredmessage); |
||||
if (message_search.contains("?") || message_search.contains("!")) { |
||||
if (message.contains(message_search)) { |
||||
foundmatch = true; |
||||
CreateStamp(channel,key); |
||||
System.out.println("Stamp "+key+" created by user "+user+" MESSAGE:"+message+"."); |
||||
break; |
||||
} |
||||
} else { |
||||
if (filteredmessage.contains(message_search)) { |
||||
foundmatch=true; |
||||
CreateStamp(channel,key); |
||||
System.out.println("Stamp "+key+" created by user "+user+" MESSAGE:"+message+"."); |
||||
break; |
||||
} |
||||
} |
||||
} |
||||
if (foundmatch) { |
||||
return; |
||||
} |
||||
} |
||||
} |
||||
|
||||
public static void CreateStamp(MessageChannel channel, String stamp_name) { |
||||
channel.sendFile(new File(BASEDIR+"stamps/"+stamp_name+".png")).queue(); |
||||
} |
||||
|
||||
@Override |
||||
public void onMessageReceived(MessageReceivedEvent ev) { |
||||
JDA bot = ev.getJDA(); |
||||
|
||||
String message = ev.getMessage().getContentDisplay(); |
||||
MessageChannel messaging_channel = ev.getChannel(); |
||||
|
||||
if (ev.isFromType(ChannelType.TEXT)) { |
||||
Channel channel = ev.getTextChannel(); |
||||
Member user = ev.getMember(); |
||||
|
||||
System.out.println("Channel "+channel+": "+user+" - "+message); |
||||
|
||||
if (user.getUser().getId().equalsIgnoreCase("494666451765035009")) { |
||||
return; |
||||
} |
||||
|
||||
if (channel.getId().equalsIgnoreCase("485297375665979414")) { |
||||
System.out.println("Detected in Bandori Channel...."); |
||||
checkForStamp(messaging_channel,user.getNickname(),message); |
||||
} |
||||
} |
||||
|
||||
} |
||||
} |
@ -0,0 +1,306 @@ |
||||
package sig; |
||||
|
||||
import java.io.BufferedReader; |
||||
import java.io.File; |
||||
import java.io.FileInputStream; |
||||
import java.io.FileOutputStream; |
||||
import java.io.FileReader; |
||||
import java.io.FileWriter; |
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
import java.io.InputStreamReader; |
||||
import java.io.PrintWriter; |
||||
import java.io.Reader; |
||||
import java.net.URL; |
||||
import java.nio.channels.FileChannel; |
||||
import java.nio.charset.Charset; |
||||
import java.util.ArrayList; |
||||
import java.util.HashMap; |
||||
import java.util.List; |
||||
|
||||
import org.json.JSONArray; |
||||
import org.json.JSONException; |
||||
import org.json.JSONObject; |
||||
|
||||
import sig.sigIRC; |
||||
import sig.modules.ChatLog.ChatLogMessage; |
||||
|
||||
public class FileUtils { |
||||
public static String[] readFromFile(String filename) { |
||||
File file = new File(filename); |
||||
//System.out.println(file.getAbsolutePath());
|
||||
List<String> contents= new ArrayList<String>(); |
||||
if (file.exists()) { |
||||
try( |
||||
FileReader fw = new FileReader(filename); |
||||
BufferedReader bw = new BufferedReader(fw);) |
||||
{ |
||||
String readline = bw.readLine(); |
||||
do { |
||||
if (readline!=null) { |
||||
//System.out.println(readline);
|
||||
contents.add(readline); |
||||
readline = bw.readLine(); |
||||
}} while (readline!=null); |
||||
fw.close(); |
||||
bw.close(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
return contents.toArray(new String[contents.size()]); |
||||
} |
||||
|
||||
private static String readAll(Reader rd) throws IOException { |
||||
StringBuilder sb = new StringBuilder(); |
||||
int cp; |
||||
while ((cp = rd.read()) != -1) { |
||||
sb.append((char) cp); |
||||
} |
||||
return sb.toString(); |
||||
} |
||||
|
||||
private static String readFilter(Reader rd, HashMap<Long,String> channel_ids) throws IOException { |
||||
StringBuilder sb = new StringBuilder(); |
||||
boolean allowed=false; |
||||
boolean quotation_mark=false; |
||||
boolean endquotation_mark=false; |
||||
boolean foundChannel=false; |
||||
boolean nextBrace=false; |
||||
boolean outputStuff=false; |
||||
String numb = ""; |
||||
int braceCount=0; |
||||
int channelCount=0; |
||||
int vals=0; |
||||
int cp; |
||||
while ((cp = rd.read()) != -1) { |
||||
if (braceCount==0) { |
||||
allowed=true; |
||||
} else |
||||
if (braceCount==1 && !quotation_mark){ |
||||
quotation_mark=true; |
||||
numb=""; |
||||
allowed=false; |
||||
} else |
||||
if (!endquotation_mark) { |
||||
if ((char)cp >= '0' && |
||||
(char)cp <= '9') { |
||||
allowed=false; |
||||
numb+=(char)cp; |
||||
} else { |
||||
allowed=false; |
||||
endquotation_mark=true; |
||||
try { |
||||
if (channel_ids.containsKey(Long.parseLong(numb))) { |
||||
if (channelCount>=1) { |
||||
sb.append(","); |
||||
} |
||||
sb.append("\""+numb+"\""); |
||||
foundChannel=true; |
||||
System.out.println("Found channel "+numb); |
||||
outputStuff=true; |
||||
} |
||||
} catch (NumberFormatException e) { |
||||
|
||||
} |
||||
} |
||||
} else |
||||
if (!nextBrace && foundChannel) { |
||||
allowed=true; |
||||
if ((char)cp == '{') { |
||||
nextBrace=true; |
||||
} |
||||
} else |
||||
if (foundChannel) { |
||||
allowed=true; |
||||
if (braceCount==1) { |
||||
allowed=false; |
||||
channelCount++; |
||||
quotation_mark=false; |
||||
endquotation_mark=false; |
||||
foundChannel=false; |
||||
nextBrace=false; |
||||
} |
||||
} else { |
||||
allowed=false; |
||||
if (braceCount==1) { |
||||
allowed=false; |
||||
quotation_mark=false; |
||||
endquotation_mark=false; |
||||
foundChannel=false; |
||||
nextBrace=false; |
||||
} |
||||
} |
||||
|
||||
/*if (outputStuff && vals++<1000) { |
||||
System.out.print((char)cp); |
||||
}*/ |
||||
if ((char)cp == '{') { |
||||
braceCount++; |
||||
//System.out.println("Brace count is "+braceCount+".");
|
||||
} else |
||||
if ((char)cp == '}') { |
||||
braceCount--; |
||||
//System.out.println("Brace count is "+braceCount+".");
|
||||
} |
||||
|
||||
if (allowed) { |
||||
sb.append((char) cp); |
||||
} |
||||
} |
||||
sb.append("}"); |
||||
//System.out.println("=============");
|
||||
//System.out.println(sb.toString());
|
||||
return sb.toString(); |
||||
} |
||||
|
||||
public static JSONObject readJsonFromUrlWithFilter(String url, HashMap<Long,String> filter) throws IOException, JSONException { |
||||
return readJsonFromUrlWithFilter(url,filter,null,false); |
||||
} |
||||
|
||||
public static JSONObject readJsonFromFileWithFilter(String file, HashMap<Long,String> filter) throws IOException, JSONException { |
||||
InputStream is = new FileInputStream(new File(file)); |
||||
try { |
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); |
||||
String jsonText = readFilter(rd,filter); |
||||
JSONObject json = new JSONObject(jsonText); |
||||
jsonText=null; |
||||
return json; |
||||
} finally { |
||||
is.close(); |
||||
} |
||||
} |
||||
|
||||
public static JSONObject readJsonFromUrlWithFilter(String url, HashMap<Long,String> filter, String file, boolean writeToFile) throws IOException, JSONException { |
||||
InputStream is = new URL(url).openStream(); |
||||
try { |
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); |
||||
String jsonText = readFilter(rd,filter); |
||||
if (writeToFile) { |
||||
writetoFile(new String[]{jsonText},file); |
||||
} |
||||
JSONObject json = new JSONObject(jsonText); |
||||
return json; |
||||
} finally { |
||||
is.close(); |
||||
} |
||||
} |
||||
|
||||
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { |
||||
return readJsonFromUrl(url,null,false); |
||||
} |
||||
|
||||
public static JSONArray readJsonArrayFromUrl(String url) throws IOException, JSONException { |
||||
return readJsonArrayFromUrl(url,null,false); |
||||
} |
||||
|
||||
public static JSONObject readJsonFromFile(String file) throws IOException, JSONException { |
||||
InputStream is = new FileInputStream(new File(file)); |
||||
try { |
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); |
||||
String jsonText = readAll(rd); |
||||
JSONObject json = new JSONObject(jsonText); |
||||
jsonText=null; |
||||
return json; |
||||
} finally { |
||||
is.close(); |
||||
} |
||||
} |
||||
|
||||
public static JSONObject readJsonFromUrl(String url, String file, boolean writeToFile) throws IOException, JSONException { |
||||
InputStream is = new URL(url).openStream(); |
||||
try { |
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); |
||||
String jsonText = readAll(rd); |
||||
if (writeToFile) { |
||||
writetoFile(new String[]{jsonText},file); |
||||
} |
||||
JSONObject json = new JSONObject(jsonText); |
||||
return json; |
||||
} finally { |
||||
is.close(); |
||||
} |
||||
} |
||||
|
||||
public static JSONArray readJsonArrayFromUrl(String url, String file, boolean writeToFile) throws IOException, JSONException { |
||||
InputStream is = new URL(url).openStream(); |
||||
try { |
||||
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); |
||||
String jsonText = readAll(rd); |
||||
if (writeToFile) { |
||||
writetoFile(new String[]{jsonText},file); |
||||
} |
||||
JSONArray json = new JSONArray(jsonText); |
||||
return json; |
||||
} finally { |
||||
is.close(); |
||||
} |
||||
} |
||||
|
||||
public static void logToFile(String message, String filename) { |
||||
logToFile(message,filename,false); |
||||
} |
||||
|
||||
public static void logToFile(String message, String filename, boolean outputToChatLog) { |
||||
File file = new File(filename); |
||||
try { |
||||
|
||||
if (!file.exists()) { |
||||
file.createNewFile(); |
||||
} |
||||
|
||||
FileWriter fw = new FileWriter(file, true); |
||||
PrintWriter pw = new PrintWriter(fw); |
||||
|
||||
pw.println(message); |
||||
pw.flush(); |
||||
pw.close(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
if (outputToChatLog && sigIRC.chatlogmodule_enabled) { |
||||
ChatLogMessage.importMessages(message); |
||||
} |
||||
} |
||||
|
||||
public static void writetoFile(String[] data, String filename) { |
||||
File file = new File(filename); |
||||
try { |
||||
|
||||
if (!file.exists()) { |
||||
file.createNewFile(); |
||||
} |
||||
|
||||
FileWriter fw = new FileWriter(file,false); |
||||
PrintWriter pw = new PrintWriter(fw); |
||||
|
||||
for (String s : data) { |
||||
pw.println(s); |
||||
} |
||||
pw.flush(); |
||||
pw.close(); |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
public static void copyFile(File source, File dest) throws IOException { |
||||
FileChannel sourceChannel = null; |
||||
FileChannel destChannel = null; |
||||
try { |
||||
sourceChannel = new FileInputStream(source).getChannel(); |
||||
destChannel = new FileOutputStream(dest).getChannel(); |
||||
destChannel.transferFrom(sourceChannel, 0, sourceChannel.size()); |
||||
}finally{ |
||||
sourceChannel.close(); |
||||
destChannel.close(); |
||||
} |
||||
} |
||||
|
||||
public static void deleteFile(String filename) { |
||||
File file = new File(filename); |
||||
if (file.exists()) { |
||||
file.delete(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,5 @@ |
||||
package sig; |
||||
|
||||
public class MessageListener { |
||||
|
||||
} |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 101 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 63 KiB |