[Bonus] Discord integration
This commit is contained in:
parent
2f9d604ccf
commit
8923c331c4
6 changed files with 100 additions and 3 deletions
|
@ -15,5 +15,6 @@
|
|||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="Treasure.jar"/>
|
||||
<classpathentry exported="true" kind="lib" path="JDA-5.0.0-beta.8-withDependencies.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
BIN
JDA-5.0.0-beta.8-withDependencies.jar
Normal file
BIN
JDA-5.0.0-beta.8-withDependencies.jar
Normal file
Binary file not shown.
|
@ -24,6 +24,8 @@ public class Configuration {
|
|||
|
||||
private String token_issuer;
|
||||
private int token_expiration;
|
||||
|
||||
private String token_discord;
|
||||
|
||||
private File _file;
|
||||
|
||||
|
@ -156,4 +158,8 @@ public class Configuration {
|
|||
users_files = "/tmp/users_files";
|
||||
return users_files;
|
||||
}
|
||||
|
||||
public String getDiscordToken(){
|
||||
return this.token_discord;
|
||||
}
|
||||
}
|
|
@ -10,14 +10,17 @@ import java.util.regex.Matcher;
|
|||
import javax.net.ssl.SSLServerSocket;
|
||||
import javax.net.ssl.SSLServerSocketFactory;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.bonus.discord.Bot;
|
||||
import be.jeffcheasey88.peeratcode.framework.Client;
|
||||
import be.jeffcheasey88.peeratcode.framework.HttpReader;
|
||||
import be.jeffcheasey88.peeratcode.framework.HttpUtil;
|
||||
import be.jeffcheasey88.peeratcode.framework.HttpWriter;
|
||||
import be.jeffcheasey88.peeratcode.framework.Locker;
|
||||
import be.jeffcheasey88.peeratcode.framework.Response;
|
||||
import be.jeffcheasey88.peeratcode.framework.Route;
|
||||
import be.jeffcheasey88.peeratcode.framework.Router;
|
||||
import be.jeffcheasey88.peeratcode.framework.User;
|
||||
import be.jeffcheasey88.peeratcode.model.Group;
|
||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||
import be.jeffcheasey88.peeratcode.routes.BadgeDetails;
|
||||
import be.jeffcheasey88.peeratcode.routes.ChapterElement;
|
||||
|
@ -65,7 +68,7 @@ public class Main{
|
|||
});
|
||||
|
||||
initRoutes(router, config);
|
||||
|
||||
|
||||
startWebServer(config, router);
|
||||
}
|
||||
|
||||
|
@ -81,14 +84,19 @@ public class Main{
|
|||
router.register(new BadgeDetails(router.getDataBase()));
|
||||
|
||||
router.register(new GroupList(router.getDataBase()));
|
||||
router.register(new GroupCreate(router.getDataBase()));
|
||||
router.register(new GroupJoin(router.getDataBase()));
|
||||
router.register(new GroupQuit(router.getDataBase()));
|
||||
|
||||
Locker<Group> groupLock = new Locker<>();
|
||||
router.register(new GroupCreate(router.getDataBase(), groupLock));
|
||||
|
||||
DynamicLeaderboard dlb = new DynamicLeaderboard(router.getDataBase());
|
||||
router.register(dlb);
|
||||
|
||||
router.register(new PuzzleResponse(router.getDataBase(), config.getUsersFiles(), dlb.getLocker()));
|
||||
|
||||
Bot bot = new Bot(config, router.getDataBase(), groupLock);
|
||||
bot.start();
|
||||
}
|
||||
|
||||
private static void startWebServer(Configuration config, Router router) throws IOException {
|
||||
|
|
76
src/be/jeffcheasey88/peeratcode/bonus/discord/Bot.java
Normal file
76
src/be/jeffcheasey88/peeratcode/bonus/discord/Bot.java
Normal file
|
@ -0,0 +1,76 @@
|
|||
package be.jeffcheasey88.peeratcode.bonus.discord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.Configuration;
|
||||
import be.jeffcheasey88.peeratcode.framework.Locker;
|
||||
import be.jeffcheasey88.peeratcode.framework.Locker.Key;
|
||||
import be.jeffcheasey88.peeratcode.model.Group;
|
||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.JDABuilder;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.channel.concrete.Category;
|
||||
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
|
||||
|
||||
public class Bot extends Thread{
|
||||
|
||||
private String token;
|
||||
private DatabaseRepository repo;
|
||||
private Locker<Group> locker;
|
||||
|
||||
public Bot(Configuration config, DatabaseRepository repo, Locker<Group> locker){
|
||||
this.token = config.getDiscordToken();
|
||||
this.repo = repo;
|
||||
this.locker = locker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(){
|
||||
try{
|
||||
JDA jda = JDABuilder.createDefault(token).build();
|
||||
jda.awaitReady();
|
||||
Guild guild = jda.getGuildById(1068824613603262464L);
|
||||
Category event = guild.getCategoryById(1095761356017373284L);
|
||||
|
||||
Key key = new Key();
|
||||
|
||||
locker.init(key);
|
||||
|
||||
List<Group> groups = this.repo.getAllGroups();
|
||||
for(Group group : groups){
|
||||
Integer chapter = group.getLinkToChapter();
|
||||
Integer puzzle = group.getLinkToPuzzle();
|
||||
if((chapter == null || chapter == 0) && (puzzle == null || puzzle == 0)) continue;
|
||||
boolean contains = false;
|
||||
for(VoiceChannel channel : event.getVoiceChannels()){
|
||||
if(channel.getName().equalsIgnoreCase(group.getName())){
|
||||
contains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(contains) continue;
|
||||
event.createVoiceChannel(group.getName()).complete();
|
||||
}
|
||||
|
||||
while(true){
|
||||
locker.lock(key);
|
||||
Group group = locker.getValue(key);
|
||||
Integer chapter = group.getLinkToChapter();
|
||||
Integer puzzle = group.getLinkToPuzzle();
|
||||
if((chapter == null || chapter == 0) && (puzzle == null || puzzle == 0)) continue;
|
||||
boolean contains = false;
|
||||
for(VoiceChannel channel : event.getVoiceChannels()){
|
||||
if(channel.getName().equalsIgnoreCase(group.getName())){
|
||||
contains = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(contains) continue;
|
||||
event.createVoiceChannel(group.getName()).complete();
|
||||
}
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,18 +9,22 @@ import org.json.simple.JSONObject;
|
|||
import be.jeffcheasey88.peeratcode.framework.HttpReader;
|
||||
import be.jeffcheasey88.peeratcode.framework.HttpUtil;
|
||||
import be.jeffcheasey88.peeratcode.framework.HttpWriter;
|
||||
import be.jeffcheasey88.peeratcode.framework.Locker;
|
||||
import be.jeffcheasey88.peeratcode.framework.Response;
|
||||
import be.jeffcheasey88.peeratcode.framework.Route;
|
||||
import be.jeffcheasey88.peeratcode.framework.User;
|
||||
import be.jeffcheasey88.peeratcode.model.Completion;
|
||||
import be.jeffcheasey88.peeratcode.model.Group;
|
||||
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
|
||||
|
||||
public class GroupCreate implements Response {
|
||||
|
||||
private Locker<Group> locker;
|
||||
private DatabaseRepository repo;
|
||||
|
||||
public GroupCreate(DatabaseRepository repo) {
|
||||
public GroupCreate(DatabaseRepository repo, Locker<Group> locker){
|
||||
this.repo = repo;
|
||||
this.locker = locker;
|
||||
}
|
||||
|
||||
@Route(path = "^\\/groupCreate$", type = POST, needLogin = true)
|
||||
|
@ -35,6 +39,8 @@ public class GroupCreate implements Response {
|
|||
|
||||
if (this.repo.insertGroup(group, user)) {
|
||||
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *");
|
||||
|
||||
locker.setValue(group);
|
||||
} else {
|
||||
HttpUtil.responseHeaders(writer, 403, "Access-Control-Allow-Origin: *");
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue