Skip to content

Commit 2e3c5be

Browse files
author
Minecon724
committed
gdf
1 parent 0312b3e commit 2e3c5be

File tree

4 files changed

+145
-4
lines changed

4 files changed

+145
-4
lines changed

src/main/java/pl/minecon724/bitbot/BitBot.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,47 @@
1111
import net.dv8tion.jda.api.JDABuilder;
1212
import net.dv8tion.jda.api.interactions.commands.OptionType;
1313
import net.dv8tion.jda.api.interactions.commands.build.CommandData;
14+
import net.dv8tion.jda.api.interactions.commands.build.SubcommandData;
1415
import pl.minecon724.bitbot.commands.Commands;
16+
import pl.minecon724.bitbot.commands.GiveawayCommand;
1517
import pl.minecon724.bitbot.listeners.EventReady;
1618
import pl.minecon724.bitbot.utils.EcoManager;
1719
import pl.minecon724.bitbot.utils.StatusChange;
1820

1921
public class BitBot {
2022
static EcoManager ecoMan;
23+
static GiveawayCommand giveaway;
2124

2225
public static void main(String[] args) throws LoginException, ClassNotFoundException, SQLException {
26+
giveaway = new GiveawayCommand(args[2]);
2327
//ecoMan = new EcoManager(args[1]);
2428
JDA jda = JDABuilder.createDefault(args[0]).build();
2529
jda.addEventListener(new EventReady());
26-
jda.addEventListener(new Commands());
30+
jda.addEventListener(new Commands(giveaway));
2731
jda.upsertCommand("help", "Show all commands");
2832
CommandData exchangeCmd = new CommandData("exchange", "Exchange assets");
2933
exchangeCmd.addOption(OptionType.STRING, "From", "Asset you want to sell");
3034
exchangeCmd.addOption(OptionType.STRING, "To", "Asset you want to buy");
3135
exchangeCmd.addOption(OptionType.INTEGER, "Quantity", "Quantity of the asset you want to SELL");
3236
jda.upsertCommand(exchangeCmd);
3337
CommandData marketCmd = new CommandData("market", "View market");
34-
marketCmd.addOption(OptionType.STRING, "Asset", "Detailed asset info");
38+
marketCmd.addOption(OptionType.STRING, "Asset", "Detailed asset info", false);
39+
jda.upsertCommand(marketCmd);
40+
jda.upsertCommand("money", "Check account balance");
41+
CommandData giveawayCmd = new CommandData("giveaway", "Giveaway commands");
42+
SubcommandData gStart = new SubcommandData("start", "Start a giveaway");
43+
gStart.addOption(OptionType.INTEGER, "winners", "winner count");
44+
gStart.addOption(OptionType.INTEGER, "minutes", "d");
45+
gStart.addOption(OptionType.STRING, "prize", "g");
46+
giveawayCmd.addSubcommands(gStart);
47+
SubcommandData gReroll = new SubcommandData("reroll", "Reroll winner");
48+
gReroll.addOption(OptionType.INTEGER, "message id", "Giveaway message id");
49+
giveawayCmd.addSubcommands(gReroll);
50+
SubcommandData gEnd = new SubcommandData("end", "End giveaway");
51+
gEnd.addOption(OptionType.INTEGER, "message id", "Giveaway message id");
52+
giveawayCmd.addSubcommands(gEnd);
3553
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
3654
scheduler.scheduleAtFixedRate(new StatusChange(jda), 0l, 1l, TimeUnit.MINUTES);
55+
scheduler.scheduleAtFixedRate(giveaway.new refresh(), 0l, 1l, TimeUnit.MINUTES);
3756
}
3857
}

src/main/java/pl/minecon724/bitbot/commands/Commands.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,25 @@
66
public class Commands extends ListenerAdapter {
77
HelpCommand helpcmd = new HelpCommand();
88
MarketCommand marketCmd = new MarketCommand();
9+
GiveawayCommand giveawayCmd;
10+
public Commands(GiveawayCommand gCmd) {
11+
this.giveawayCmd = gCmd;
12+
}
913

1014
public void onSlashCmd(SlashCommandEvent e) {
1115
switch (e.getName().toLowerCase()) {
1216
case "help":
1317
e.reply(helpcmd.process());
1418
break;
15-
case "balance": case "bal": case "money":
19+
case "money":
1620
break;
17-
case "exchange": case "buy": case "sell":
21+
case "exchange":
1822
break;
1923
case "market":
2024
e.replyEmbeds(marketCmd.process(e.getUser()));
2125
break;
26+
case "giveaway":
27+
break;
2228
}
2329
}
2430
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package pl.minecon724.bitbot.commands;
2+
3+
import java.sql.Connection;
4+
import java.sql.DriverManager;
5+
import java.sql.ResultSet;
6+
import java.sql.SQLException;
7+
import java.sql.Statement;
8+
import java.util.List;
9+
10+
import pl.minecon724.bitbot.utils.Giveaway;
11+
12+
public class GiveawayCommand {
13+
String dbUrl;
14+
Connection con;
15+
List<Giveaway> queue;
16+
public GiveawayCommand(String dbUrl) throws ClassNotFoundException, SQLException {
17+
Class.forName("com.mysql.jdbc.Driver");
18+
con = DriverManager.getConnection(dbUrl);
19+
System.out.println("[Giveaway] Connected to database");
20+
}
21+
22+
public void end(Giveaway gw) {
23+
// TODO
24+
return;
25+
}
26+
27+
public void start(Giveaway gw) {
28+
// TODO
29+
return;
30+
}
31+
32+
public void reroll(Giveaway gw) {
33+
// TODO
34+
return;
35+
}
36+
37+
public void setupDatabase(Connection con, boolean reset) throws SQLException {
38+
Statement stt;
39+
if (reset) {
40+
stt = con.createStatement();
41+
stt.execute("drop table giveaways");
42+
stt.close();
43+
}
44+
stt = con.createStatement();
45+
stt.execute("create table giveaways (message int not null, prize text not null, ending int not null, winners int not null, ended tinyint(1) not null");
46+
stt.close();
47+
}
48+
49+
public class refresh implements Runnable {
50+
@Override
51+
public void run() {
52+
Statement stt;
53+
ResultSet rs;
54+
try {
55+
stt = con.createStatement();
56+
stt.execute("select * from giveaways");
57+
rs = stt.getResultSet();
58+
long time = System.currentTimeMillis() / 1000;
59+
while (rs.next()) {
60+
long ending = rs.getLong("ending");
61+
if (time+60 >= ending) {
62+
Giveaway gw = new Giveaway(rs.getInt("message"), rs.getString("prize"), ending, rs.getInt("winners"));
63+
queue.add(gw);
64+
}
65+
if (time >= ending) {
66+
Giveaway gw = new Giveaway(rs.getInt("message"), rs.getString("prize"), ending, rs.getInt("winners"));
67+
end(gw);
68+
}
69+
}
70+
rs.close();
71+
stt.close();
72+
} catch (SQLException e) {
73+
e.printStackTrace();
74+
}
75+
}
76+
}
77+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package pl.minecon724.bitbot.utils;
2+
3+
public class Giveaway {
4+
int message;
5+
String prize;
6+
long ending;
7+
int winners;
8+
boolean ended;
9+
public Giveaway(int message, String prize, long ending, int winners) {
10+
this.message = message;
11+
this.prize = prize;
12+
this.ending = ending;
13+
this.winners = winners;
14+
}
15+
public String getPrize() {
16+
return prize;
17+
}
18+
public void setPrize(String prize) {
19+
this.prize = prize;
20+
}
21+
public long getEnding() {
22+
return ending;
23+
}
24+
public void setEnding(long ending) {
25+
this.ending = ending;
26+
}
27+
public int getWinners() {
28+
return winners;
29+
}
30+
public void setWinners(int winners) {
31+
this.winners = winners;
32+
}
33+
public boolean isEnded() {
34+
return ended;
35+
}
36+
public void setEnded(boolean ended) {
37+
this.ended = ended;
38+
}
39+
}

0 commit comments

Comments
 (0)