-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
EazyFTW
committed
Aug 28, 2020
1 parent
0742a1e
commit 32004c4
Showing
3 changed files
with
134 additions
and
5 deletions.
There are no files selected for viewing
83 changes: 83 additions & 0 deletions
83
src/main/java/me/TechsCode/TechDiscordBot/module/modules/PreorderModule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
package me.TechsCode.TechDiscordBot.module.modules; | ||
|
||
import me.TechsCode.TechDiscordBot.TechDiscordBot; | ||
import me.TechsCode.TechDiscordBot.module.Module; | ||
import me.TechsCode.TechDiscordBot.mysql.storage.Preorder; | ||
import me.TechsCode.TechDiscordBot.objects.Requirement; | ||
import net.dv8tion.jda.api.entities.Member; | ||
import net.dv8tion.jda.api.entities.Role; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.concurrent.TimeUnit; | ||
import java.util.stream.Collectors; | ||
|
||
public class PreorderModule extends Module { | ||
|
||
private List<String> roles = new ArrayList<>(); | ||
|
||
public PreorderModule(TechDiscordBot bot) { | ||
super(bot); | ||
} | ||
|
||
@Override | ||
public void onEnable() { | ||
new Thread(() -> { | ||
while (true) { | ||
updateRoles(); | ||
|
||
try { | ||
Thread.sleep(TimeUnit.MINUTES.toMillis(5)); //Wait every 5 minutes | ||
} catch (Exception ignored) {} | ||
} | ||
}).start(); | ||
|
||
new Thread(() -> { | ||
while (true) { | ||
updateRolesMembers(); | ||
|
||
try { | ||
Thread.sleep(TimeUnit.SECONDS.toMillis(10)); //Wait every 10 seconds | ||
} catch (Exception ignored) {} | ||
} | ||
}).start(); | ||
} | ||
|
||
public void updateRoles() { | ||
roles = TechDiscordBot.getJDA().getRoles().stream().filter(role -> role.getName().endsWith(" Preorders")).map(Role::getName).collect(Collectors.toList()); | ||
} | ||
|
||
public void updateRolesMembers() { | ||
if(roles.size() == 0) return; | ||
|
||
for(String roleS : roles) { | ||
if(!bot.getRoles(roleS).hasAny()) continue; | ||
String pluginName = roleS.replace(" Preorder", ""); | ||
|
||
List<Preorder> preorders = new ArrayList<>(TechDiscordBot.getStorage().getPreorders(pluginName)); | ||
|
||
for(Preorder preorder : preorders) { | ||
Member member = bot.getMember(String.valueOf(preorder.getDiscordId())); | ||
if(member == null) continue; | ||
|
||
if(member.getRoles().stream().anyMatch(r -> r.getName().equals(roleS))) continue; | ||
|
||
Role role = bot.getRoles(roleS).first(); | ||
TechDiscordBot.getGuild().addRoleToMember(member, role).queue(); | ||
} | ||
} | ||
} | ||
|
||
@Override | ||
public void onDisable() {} | ||
|
||
@Override | ||
public String getName() { | ||
return "Preorder"; | ||
} | ||
|
||
@Override | ||
public Requirement[] getRequirements() { | ||
return new Requirement[0]; | ||
} | ||
} |
35 changes: 35 additions & 0 deletions
35
src/main/java/me/TechsCode/TechDiscordBot/mysql/storage/Preorder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package me.TechsCode.TechDiscordBot.mysql.storage; | ||
|
||
public class Preorder { | ||
|
||
private final String plugin, email, discordName, transactionId; | ||
private final long discordId; | ||
|
||
public Preorder(String plugin, String email, long discordId, String discordName, String transactionId) { | ||
this.plugin = plugin; | ||
this.email = email; | ||
this.discordId = discordId; | ||
this.discordName = discordName; | ||
this.transactionId = transactionId; | ||
} | ||
|
||
public String getPlugin() { | ||
return plugin; | ||
} | ||
|
||
public String getEmail() { | ||
return email; | ||
} | ||
|
||
public String getDiscordName() { | ||
return discordName; | ||
} | ||
|
||
public long getDiscordId() { | ||
return discordId; | ||
} | ||
|
||
public String getTransactionId() { | ||
return transactionId; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters