Compare commits
4 commits
89e8e3f4f6
...
72934c64e3
Author | SHA1 | Date | |
---|---|---|---|
72934c64e3 | |||
836a56fdbe | |||
e4de0998d3 | |||
5224dac00b |
20 changed files with 13 additions and 4689 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -41,6 +41,4 @@ build/
|
|||
**/resources/config*.json
|
||||
!**/resources/config.example.json
|
||||
!**/resources/config.schema.json
|
||||
|
||||
### why would this not be here already ###
|
||||
/logs/
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="doki_dev@100.101.88.31" uuid="7b6e6be7-b812-4b86-aab2-e991866cb0ad">
|
||||
<driver-ref>mariadb</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mariadb://100.101.88.31:3306/doki_dev</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JsonSchemaMappingsProjectConfiguration">
|
||||
<state>
|
||||
<map>
|
||||
<entry key="Doki Config">
|
||||
<value>
|
||||
<SchemaInfo>
|
||||
<option name="generatedName" value="New Schema" />
|
||||
<option name="name" value="Doki Config" />
|
||||
<option name="relativePathToSchema" value="src/main/resources/config.schema.json" />
|
||||
<option name="patterns">
|
||||
<list>
|
||||
<Item>
|
||||
<option name="path" value="src/main/resources/config.json" />
|
||||
</Item>
|
||||
</list>
|
||||
</option>
|
||||
</SchemaInfo>
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</state>
|
||||
</component>
|
||||
</project>
|
9
.idea/runConfigurations/Doki.xml
Normal file
9
.idea/runConfigurations/Doki.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Doki" type="Application" factoryName="Application">
|
||||
<option name="MAIN_CLASS_NAME" value="net.hypr.doki.Doki" />
|
||||
<module name="doki" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="PROJECT" dialect="MariaDB" />
|
||||
</component>
|
||||
</project>
|
160
logs/latest.log
160
logs/latest.log
|
@ -1,160 +0,0 @@
|
|||
00:05:09.171 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L39 DBUtils DEBUG Searching DB for (usr437970062922612737,srv:445821876183367680)
|
||||
00:06:54.132 JDA Gateway-Worker 1 n.d.j.i.requests.WebSocketClient #sendKeepAlive L737 WebSocketClient WARN Missed 2 heartbeats! Trying to reconnect...
|
||||
00:06:54.134 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L44 DBUtils DEBUG An SQL error occurred
|
||||
00:06:54.134 JDA MainWS-ReadThread n.h.doki.listeners.LevellingListener #onMessageReceived L56 LevellingListener INFO No record of user ID 437970062922612737 in server 445821876183367680, creating blank record
|
||||
00:06:54.135 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #createUserRecord L58 DBUtils INFO Creating record (usr:437970062922612737,srv:445821876183367680,unm:fwoppydwisk)
|
||||
00:06:54.135 JDA MainWS-ReadThread n.d.j.a.hooks.InterfacedEventManager #handle L102 JDA ERROR One of the EventListeners had an uncaught exception
|
||||
java.lang.RuntimeException: java.sql.SQLException: Cannot get a connection, general error
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:60)
|
||||
at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:456)
|
||||
at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:98)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:88)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:70)
|
||||
at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:169)
|
||||
at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:138)
|
||||
at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:39)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:1009)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:892)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:870)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:1048)
|
||||
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
|
||||
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
|
||||
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
|
||||
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
|
||||
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
|
||||
Caused by: java.sql.SQLException: Cannot get a connection, general error
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:151)
|
||||
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:714)
|
||||
at net.hypr.doki.utils.DBUtils.createUserRecord(DBUtils.java:60)
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:58)
|
||||
... 18 common frames omitted
|
||||
Caused by: java.lang.InterruptedException: null
|
||||
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1611)
|
||||
at org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:1324)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:313)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:233)
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:139)
|
||||
... 21 common frames omitted
|
||||
00:06:54.508 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L39 DBUtils DEBUG Searching DB for (usr437970062922612737,srv:445821876183367680)
|
||||
00:08:16.901 JDA Gateway-Worker 1 n.d.j.i.requests.WebSocketClient #sendKeepAlive L737 WebSocketClient WARN Missed 2 heartbeats! Trying to reconnect...
|
||||
00:08:16.902 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L44 DBUtils DEBUG An SQL error occurred
|
||||
00:08:16.903 JDA MainWS-ReadThread n.h.doki.listeners.LevellingListener #onMessageReceived L56 LevellingListener INFO No record of user ID 437970062922612737 in server 445821876183367680, creating blank record
|
||||
00:08:16.903 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #createUserRecord L58 DBUtils INFO Creating record (usr:437970062922612737,srv:445821876183367680,unm:fwoppydwisk)
|
||||
00:08:16.903 JDA MainWS-ReadThread n.d.j.a.hooks.InterfacedEventManager #handle L102 JDA ERROR One of the EventListeners had an uncaught exception
|
||||
java.lang.RuntimeException: java.sql.SQLException: Cannot get a connection, general error
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:60)
|
||||
at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:456)
|
||||
at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:98)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:88)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:70)
|
||||
at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:169)
|
||||
at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:138)
|
||||
at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:39)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:1009)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:892)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:870)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:1048)
|
||||
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
|
||||
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
|
||||
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
|
||||
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
|
||||
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
|
||||
Caused by: java.sql.SQLException: Cannot get a connection, general error
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:151)
|
||||
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:714)
|
||||
at net.hypr.doki.utils.DBUtils.createUserRecord(DBUtils.java:60)
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:58)
|
||||
... 18 common frames omitted
|
||||
Caused by: java.lang.InterruptedException: null
|
||||
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1611)
|
||||
at org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:1324)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:313)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:233)
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:139)
|
||||
... 21 common frames omitted
|
||||
00:08:19.543 JDA MainWS-ReadThread n.d.j.i.requests.WebSocketClient #handleReconnect L591 WebSocketClient WARN Got disconnected from WebSocket (Code 1000). Appending to reconnect queue
|
||||
00:08:21.804 JDA MainWS-ReadThread n.d.j.i.requests.WebSocketClient #onConnected L430 WebSocketClient INFO Connected to WebSocket
|
||||
00:08:22.179 JDA MainWS-ReadThread n.d.j.i.requests.WebSocketClient #ready L216 JDA INFO Finished (Re)Loading!
|
||||
00:10:31.426 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L39 DBUtils DEBUG Searching DB for (usr437970062922612737,srv:445821876183367680)
|
||||
00:12:29.320 JDA Gateway-Worker 1 n.d.j.i.requests.WebSocketClient #sendKeepAlive L737 WebSocketClient WARN Missed 2 heartbeats! Trying to reconnect...
|
||||
00:12:29.324 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L44 DBUtils DEBUG An SQL error occurred
|
||||
00:12:29.325 JDA MainWS-ReadThread n.h.doki.listeners.LevellingListener #onMessageReceived L56 LevellingListener INFO No record of user ID 437970062922612737 in server 445821876183367680, creating blank record
|
||||
00:12:29.326 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #createUserRecord L58 DBUtils INFO Creating record (usr:437970062922612737,srv:445821876183367680,unm:fwoppydwisk)
|
||||
00:12:29.326 JDA MainWS-ReadThread n.d.j.a.hooks.InterfacedEventManager #handle L102 JDA ERROR One of the EventListeners had an uncaught exception
|
||||
java.lang.RuntimeException: java.sql.SQLException: Cannot get a connection, general error
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:60)
|
||||
at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:456)
|
||||
at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:98)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:88)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:70)
|
||||
at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:169)
|
||||
at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:138)
|
||||
at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:39)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:1009)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:892)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:870)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:1048)
|
||||
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
|
||||
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
|
||||
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
|
||||
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
|
||||
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
|
||||
Caused by: java.sql.SQLException: Cannot get a connection, general error
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:151)
|
||||
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:714)
|
||||
at net.hypr.doki.utils.DBUtils.createUserRecord(DBUtils.java:60)
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:58)
|
||||
... 18 common frames omitted
|
||||
Caused by: java.lang.InterruptedException: null
|
||||
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1611)
|
||||
at org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:1324)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:313)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:233)
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:139)
|
||||
... 21 common frames omitted
|
||||
00:21:26.676 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L39 DBUtils DEBUG Searching DB for (usr419880181101232129,srv:445821876183367680)
|
||||
00:23:29.574 JDA Gateway-Worker 1 n.d.j.i.requests.WebSocketClient #sendKeepAlive L737 WebSocketClient WARN Missed 2 heartbeats! Trying to reconnect...
|
||||
00:23:29.576 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L44 DBUtils DEBUG An SQL error occurred
|
||||
00:23:29.576 JDA MainWS-ReadThread n.h.doki.listeners.LevellingListener #onMessageReceived L56 LevellingListener INFO No record of user ID 419880181101232129 in server 445821876183367680, creating blank record
|
||||
00:23:29.576 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #createUserRecord L58 DBUtils INFO Creating record (usr:419880181101232129,srv:445821876183367680,unm:notashelf)
|
||||
00:23:29.576 JDA MainWS-ReadThread n.d.j.a.hooks.InterfacedEventManager #handle L102 JDA ERROR One of the EventListeners had an uncaught exception
|
||||
java.lang.RuntimeException: java.sql.SQLException: Cannot get a connection, general error
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:60)
|
||||
at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:456)
|
||||
at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:98)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:88)
|
||||
at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:70)
|
||||
at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:169)
|
||||
at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:138)
|
||||
at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:39)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:1009)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:892)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:870)
|
||||
at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:1048)
|
||||
at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
|
||||
at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
|
||||
at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
|
||||
at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
|
||||
at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
|
||||
at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)
|
||||
Caused by: java.sql.SQLException: Cannot get a connection, general error
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:151)
|
||||
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:714)
|
||||
at net.hypr.doki.utils.DBUtils.createUserRecord(DBUtils.java:60)
|
||||
at net.hypr.doki.listeners.LevellingListener.onMessageReceived(LevellingListener.java:58)
|
||||
... 18 common frames omitted
|
||||
Caused by: java.lang.InterruptedException: null
|
||||
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1611)
|
||||
at org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:1324)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:313)
|
||||
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:233)
|
||||
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:139)
|
||||
... 21 common frames omitted
|
||||
00:23:29.950 JDA MainWS-ReadThread net.hypr.doki.utils.DBUtils #doesUserRecordExist L39 DBUtils DEBUG Searching DB for (usr419880181101232129,srv:445821876183367680)
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
21
pom.xml
21
pom.xml
|
@ -24,12 +24,6 @@
|
|||
<groupId>io.github.freya022</groupId>
|
||||
<artifactId>BotCommands</artifactId>
|
||||
<version>2.10.4</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
|
@ -41,20 +35,5 @@
|
|||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mariadb.jdbc</groupId>
|
||||
<artifactId>mariadb-java-client</artifactId>
|
||||
<version>2.1.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-dbcp2</artifactId>
|
||||
<version>2.12.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-dbutils</groupId>
|
||||
<artifactId>commons-dbutils</artifactId>
|
||||
<version>1.8.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
|
@ -6,7 +6,6 @@ import net.dv8tion.jda.api.JDA;
|
|||
import net.dv8tion.jda.api.JDABuilder;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import net.dv8tion.jda.api.requests.GatewayIntent;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -15,8 +14,6 @@ public class Doki {
|
|||
private static final Logger LOGGER = Logging.getLogger();
|
||||
private static JDA jda;
|
||||
private static Config config;
|
||||
private static String prefix;
|
||||
private static final BasicDataSource dataSource = new BasicDataSource();
|
||||
|
||||
private Doki(JDA jda, Config config) {
|
||||
Doki.jda = jda;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package net.hypr.doki.commands;
|
||||
|
||||
import com.freya02.botcommands.api.annotations.CommandMarker;
|
||||
import com.freya02.botcommands.api.prefixed.CommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.TextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Category;
|
||||
|
@ -12,11 +11,10 @@ import net.dv8tion.jda.api.entities.SelfUser;
|
|||
|
||||
import java.awt.*;
|
||||
|
||||
@CommandMarker
|
||||
@Category("Utils")
|
||||
@Category("Misc")
|
||||
@Description("Get about info")
|
||||
public class About extends TextCommand {
|
||||
@JDATextCommand(name = "about", aliases = {"doki"})
|
||||
@JDATextCommand(name = "about")
|
||||
public void execute(CommandEvent event) {
|
||||
JDA jda = event.getJDA();
|
||||
SelfUser selfUser = jda.getSelfUser();
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
package net.hypr.doki.commands;
|
||||
|
||||
import com.freya02.botcommands.api.annotations.CommandMarker;
|
||||
import com.freya02.botcommands.api.prefixed.CommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.TextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Category;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Description;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.JDATextCommand;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.hypr.doki.utils.DBUtils;
|
||||
import net.hypr.doki.utils.UserRecord;
|
||||
|
||||
import java.awt.*;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
|
||||
@CommandMarker
|
||||
@Category("Levelling")
|
||||
@Description("Get the global leaderboard")
|
||||
public class Leaderboard extends TextCommand {
|
||||
@JDATextCommand(name = "leaderboard", order = 1, aliases = { "lb" })
|
||||
public void execute(CommandEvent event) throws SQLException {
|
||||
List<UserRecord> userRecords = DBUtils.getAllUserRecords(event.getGuild().getIdLong());
|
||||
// Sort the leaderboard highest level first
|
||||
userRecords.sort((o1, o2) -> o2.totalXp - o1.totalXp);
|
||||
EmbedBuilder whoIsEmbed = buildLeaderboardEmbed(userRecords, event);
|
||||
event.reply(whoIsEmbed.build()).queue();
|
||||
}
|
||||
|
||||
private EmbedBuilder buildLeaderboardEmbed(List<UserRecord> userRecords , CommandEvent event) {
|
||||
StringBuilder leaderboard = new StringBuilder();
|
||||
int idx = 1;
|
||||
for (UserRecord record : userRecords) {
|
||||
leaderboard
|
||||
.append("**")
|
||||
.append(idx)
|
||||
.append(".** ")
|
||||
.append(record.username)
|
||||
.append(" - ")
|
||||
.append(record.level)
|
||||
.append(" (")
|
||||
.append(record.totalXp)
|
||||
.append(" Total XP)\n");
|
||||
idx += 1;
|
||||
if (idx > 10) break; // Break out after 10 records is reached
|
||||
}
|
||||
return new EmbedBuilder()
|
||||
.setTitle(event.getGuild().getName() + " Leaderboard")
|
||||
.setDescription(leaderboard)
|
||||
.setColor(new Color(210,138,39));
|
||||
}
|
||||
}
|
|
@ -1,14 +1,12 @@
|
|||
package net.hypr.doki.commands;
|
||||
|
||||
import com.freya02.botcommands.api.annotations.CommandMarker;
|
||||
import com.freya02.botcommands.api.prefixed.CommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.TextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Category;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Description;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.JDATextCommand;
|
||||
|
||||
@CommandMarker
|
||||
@Category("Utils")
|
||||
@Category("Misc")
|
||||
@Description("Pong!")
|
||||
public class Ping extends TextCommand {
|
||||
@JDATextCommand(name = "ping")
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
package net.hypr.doki.commands;
|
||||
|
||||
import com.freya02.botcommands.api.annotations.CommandMarker;
|
||||
import com.freya02.botcommands.api.prefixed.BaseCommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.CommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.TextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Category;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Description;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.JDATextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.TextOption;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.hypr.doki.utils.DBUtils;
|
||||
import net.hypr.doki.utils.UserRecord;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
@CommandMarker
|
||||
@Category("Levelling")
|
||||
@Description("Get a user's rank")
|
||||
public class Rank extends TextCommand {
|
||||
@JDATextCommand(name = "rank", order = 1)
|
||||
public void execute(BaseCommandEvent event, @TextOption Member member) throws SQLException {
|
||||
UserRecord userRecord = DBUtils.getUserRecord(member.getIdLong(), event.getGuild().getIdLong());
|
||||
EmbedBuilder rankEmbed = buildRankEmbed(member, userRecord);
|
||||
event.reply(rankEmbed.build()).queue();
|
||||
}
|
||||
|
||||
@JDATextCommand(name = "rank", order = 2)
|
||||
public void execute(CommandEvent event) throws SQLException {
|
||||
UserRecord userRecord = DBUtils.getUserRecord(event.getMember().getIdLong(), event.getGuild().getIdLong());
|
||||
EmbedBuilder whoIsEmbed = buildRankEmbed(event.getMember(), userRecord);
|
||||
event.reply(whoIsEmbed.build()).queue();
|
||||
}
|
||||
|
||||
private EmbedBuilder buildRankEmbed(Member user, UserRecord userRecord) {
|
||||
int xpToNextLevel = (((userRecord.level + 1) * 5) * 40) - userRecord.xp;
|
||||
return new EmbedBuilder()
|
||||
.setAuthor(user.getUser().getName(), null, user.getEffectiveAvatarUrl())
|
||||
.setThumbnail(user.getEffectiveAvatarUrl())
|
||||
.addField("Level", String.valueOf(userRecord.level), true)
|
||||
.addField("XP", String.valueOf(userRecord.xp), true)
|
||||
.addField("XP Until level " + (userRecord.level + 1), String.valueOf(xpToNextLevel), true)
|
||||
.setColor(user.getColor());
|
||||
}
|
||||
}
|
|
@ -1,63 +0,0 @@
|
|||
package net.hypr.doki.commands;
|
||||
|
||||
import com.freya02.botcommands.api.annotations.CommandMarker;
|
||||
import com.freya02.botcommands.api.prefixed.BaseCommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.CommandEvent;
|
||||
import com.freya02.botcommands.api.prefixed.TextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Category;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.Description;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.JDATextCommand;
|
||||
import com.freya02.botcommands.api.prefixed.annotations.TextOption;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@CommandMarker
|
||||
@Category("Utils")
|
||||
@Description("Get information about a user")
|
||||
public class WhoIs extends TextCommand {
|
||||
@JDATextCommand(name = "whois", order = 1)
|
||||
public void execute(BaseCommandEvent event, @TextOption(example = "<@437970062922612737>") Member user) {
|
||||
EmbedBuilder whoIsEmbed = buildUserEmbed(user, (CommandEvent) event);
|
||||
event.reply(whoIsEmbed.build()).queue();
|
||||
}
|
||||
|
||||
@JDATextCommand(name = "whois", order = 2)
|
||||
public void execute(BaseCommandEvent event, @TextOption(example = "<@437970062922612737>") User user) {
|
||||
EmbedBuilder whoIsEmbed = buildUserEmbed((Member) user, (CommandEvent) event);
|
||||
event.reply(whoIsEmbed.build()).queue();
|
||||
}
|
||||
|
||||
@JDATextCommand(name = "whois", order = 3)
|
||||
public void execute(CommandEvent event) {
|
||||
EmbedBuilder whoIsEmbed = buildUserEmbed(event.getMember(), event);
|
||||
event.reply(whoIsEmbed.build()).queue();
|
||||
}
|
||||
|
||||
private EmbedBuilder buildUserEmbed(Member user, CommandEvent event) {
|
||||
return new EmbedBuilder()
|
||||
.setAuthor(user.getUser().getName(), null, user.getEffectiveAvatarUrl())
|
||||
.setThumbnail(user.getEffectiveAvatarUrl())
|
||||
.addField("Information",
|
||||
"**Mention:** " + user.getAsMention() +
|
||||
"\n**ID:** " + user.getId(), true)
|
||||
.addField("Joined",
|
||||
"**Discord:** " +
|
||||
Duration.between(user.getTimeCreated(), OffsetDateTime.now()).toDays() + " days ago\n" +
|
||||
"**->** <t:" + user.getTimeCreated().toEpochSecond() + ":f>\n**Guild:** " +
|
||||
Duration.between(user.getTimeJoined(), OffsetDateTime.now()).toDays() + " days ago\n" +
|
||||
"**->** <t:" + user.getTimeJoined().toEpochSecond() + ":f>", true)
|
||||
.addField("Guild-Specific",
|
||||
"**Nickname:** " + user.getNickname() + "\n**Roles (" + ((long) user.getRoles().size() + 1) + "):** `@everyone`, " +
|
||||
user.getRoles().stream().map(Role::getAsMention)
|
||||
.collect(Collectors.joining(", ")) +
|
||||
"\n**Owner:**" + (user.isOwner() ? "Yes" : "No"), false)
|
||||
.addField("Guild", event.getGuild().getName(), false)
|
||||
.setColor(user.getColor());
|
||||
}
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
package net.hypr.doki.listeners;
|
||||
|
||||
import com.freya02.botcommands.api.Logging;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import net.hypr.doki.Doki;
|
||||
import net.hypr.doki.utils.DBUtils;
|
||||
import net.hypr.doki.utils.LevellingUtils;
|
||||
import net.hypr.doki.utils.UserRecord;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class LevellingListener extends ListenerAdapter {
|
||||
@Override
|
||||
public void onMessageReceived(MessageReceivedEvent event) {
|
||||
Logger log = Logging.getLogger();
|
||||
/* Ignore the message if one of the following conditions is met:
|
||||
- Message is from self user
|
||||
- Message is from bot
|
||||
- Message is command (starts with bot prefix)
|
||||
*/
|
||||
if (
|
||||
Doki.getJDA().getSelfUser().getId().equals(event.getAuthor().getId()) ||
|
||||
event.getAuthor().isBot() ||
|
||||
event.getMessage().getContentStripped().startsWith(Doki.getPrefix())
|
||||
) {
|
||||
log.debug("Ignoring self/bot message with ID " + event.getMessageId());
|
||||
return;
|
||||
}
|
||||
|
||||
User user = event.getAuthor();
|
||||
Guild guild = event.getGuild();
|
||||
boolean userIsInDb = DBUtils.doesUserRecordExist(user.getIdLong(), guild.getIdLong());
|
||||
if (userIsInDb) {
|
||||
try {
|
||||
UserRecord rec = DBUtils.getUserRecord(user.getIdLong(), guild.getIdLong());
|
||||
Duration timeSinceLastMessage = Duration.between(
|
||||
rec.lastMessage.toLocalDateTime(),
|
||||
LocalDateTime.now()
|
||||
);
|
||||
if (timeSinceLastMessage.compareTo(Duration.ofHours(1)) > 0) {
|
||||
// it has been over an hour since the user last sent a message that affected XP
|
||||
LevellingUtils.incrementXp(log, rec);
|
||||
} else {
|
||||
log.debug("Ignoring message ID " + event.getMessageId() + " as not enough time has passed");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} else {
|
||||
log.info("No record of user ID " + user.getId() + " in server " + guild.getId() + ", creating blank record");
|
||||
try {
|
||||
DBUtils.createUserRecord(user.getIdLong(), guild.getIdLong(), user.getName());
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,157 +0,0 @@
|
|||
package net.hypr.doki.utils;
|
||||
|
||||
import com.freya02.botcommands.api.Logging;
|
||||
import net.hypr.doki.Doki;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
import org.apache.commons.dbutils.QueryRunner;
|
||||
import org.apache.commons.dbutils.ResultSetHandler;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.sql.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class DBUtils {
|
||||
/**
|
||||
* Checks if the user record exists
|
||||
* @param user_id User ID to search for
|
||||
* @param server_id Server ID to search for
|
||||
* @return Whether the record exists or not
|
||||
*/
|
||||
public static boolean doesUserRecordExist(long user_id, long server_id) {
|
||||
Logger log = Logging.getLogger();
|
||||
BasicDataSource dataSource = Doki.getDataSource();
|
||||
QueryRunner qr = new QueryRunner(dataSource);
|
||||
ResultSetHandler<Set<BigInteger>> resultSetHandler = rs -> {
|
||||
Set<BigInteger> rows = new HashSet<>();
|
||||
while (rs.next()) {
|
||||
rows.add(BigInteger.valueOf(rs.getLong(1)));
|
||||
}
|
||||
return rows;
|
||||
};
|
||||
|
||||
// Find out if the user is already in the DB
|
||||
try {
|
||||
log.debug("Searching DB for (usr" + user_id + ",srv:" + server_id + ")");
|
||||
Set<BigInteger> foundIds = qr.query("SELECT user_id FROM users WHERE user_id = " + user_id + " AND server_id = " + server_id, resultSetHandler);
|
||||
log.debug("Matching records: " + foundIds.size());
|
||||
return !foundIds.isEmpty();
|
||||
} catch (SQLException ignored) {
|
||||
log.debug("An SQL error occurred");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new user record
|
||||
* @param user_id The users ID
|
||||
* @param server_id The server ID
|
||||
* @param username The users username
|
||||
* @throws SQLException A SQL exception
|
||||
*/
|
||||
public static void createUserRecord(long user_id, long server_id, String username) throws SQLException {
|
||||
Logger log = Logging.getLogger();
|
||||
log.info("Creating record (usr:" + user_id + ",srv:" + server_id + ",unm:" + username + ")");
|
||||
BasicDataSource dataSource = Doki.getDataSource();
|
||||
Connection conn = dataSource.getConnection();
|
||||
PreparedStatement stmt = conn.prepareStatement(
|
||||
"INSERT INTO users (user_id, server_id, username, last_message) VALUES (?, ?, ?, ?)"
|
||||
);
|
||||
stmt.setLong(1, user_id);
|
||||
stmt.setLong(2, server_id);
|
||||
stmt.setString(3, username);
|
||||
stmt.setTimestamp(4, Timestamp.valueOf(LocalDateTime.now()));
|
||||
stmt.execute();
|
||||
log.info("Record (usr:" + user_id + ",srv:" + server_id + ",unm:" + username + ") created!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a user record
|
||||
* @param user_id User ID of the record to update
|
||||
* @param server_id Server ID of the record to update
|
||||
* @param now The current time
|
||||
* @param xp The new XP count
|
||||
* @param totalXp The new total XP count
|
||||
* @param level The new level
|
||||
* @throws SQLException A SQL exception
|
||||
*/
|
||||
public static void updateUserRecord(long user_id, long server_id, Timestamp now, int xp, int totalXp, int level) throws SQLException {
|
||||
Logger log = Logging.getLogger();
|
||||
log.info("Updating record (usr:" + user_id + ",srv:" + server_id + ")");
|
||||
BasicDataSource dataSource = Doki.getDataSource();
|
||||
Connection conn = dataSource.getConnection();
|
||||
PreparedStatement stmt = conn.prepareStatement(
|
||||
"UPDATE users SET last_message = ?, xp = ?, total_xp = ?, level = ? WHERE user_id = ? AND server_id = ?"
|
||||
);
|
||||
stmt.setTimestamp(1, now);
|
||||
stmt.setInt(2, xp);
|
||||
stmt.setInt(3, totalXp);
|
||||
stmt.setInt(4, level);
|
||||
stmt.setLong(5, user_id);
|
||||
stmt.setLong(6, server_id);
|
||||
stmt.executeQuery();
|
||||
log.info("Updated record (usr:" + user_id + ",srv:" + server_id + ")!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a user record
|
||||
* @param user_id The User ID of the record to get
|
||||
* @param server_id The Server ID of the record to get
|
||||
* @return The found UserRecord
|
||||
* @throws SQLException A SQL exception
|
||||
*/
|
||||
public static UserRecord getUserRecord(long user_id, long server_id) throws SQLException {
|
||||
BasicDataSource dataSource = Doki.getDataSource();
|
||||
Connection conn = dataSource.getConnection();
|
||||
PreparedStatement stmt = conn.prepareStatement(
|
||||
"SELECT user_id, server_id, username, last_message, xp, total_xp, level FROM users WHERE user_id = ? AND server_id = ?"
|
||||
);
|
||||
stmt.setLong(1, user_id);
|
||||
stmt.setLong(2, server_id);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
rs.next();
|
||||
return new UserRecord(
|
||||
rs.getLong("user_id"),
|
||||
rs.getLong("server_id"),
|
||||
rs.getString("username"),
|
||||
rs.getTimestamp("last_message"),
|
||||
rs.getInt("xp"),
|
||||
rs.getInt("total_xp"),
|
||||
rs.getInt("level")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user records for a server
|
||||
* @param server_id The Server ID
|
||||
* @return A List of UserRecords
|
||||
* @throws SQLException A SQL exception
|
||||
*/
|
||||
public static List<UserRecord> getAllUserRecords(long server_id) throws SQLException {
|
||||
BasicDataSource dataSource = Doki.getDataSource();
|
||||
Connection conn = dataSource.getConnection();
|
||||
PreparedStatement stmt = conn.prepareStatement(
|
||||
"SELECT user_id, username, last_message, xp, total_xp, level FROM users WHERE server_id = ?"
|
||||
);
|
||||
stmt.setLong(1, server_id);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
List<UserRecord> userRecordList = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
userRecordList.add(new UserRecord(
|
||||
rs.getLong("user_id"),
|
||||
server_id,
|
||||
rs.getString("username"),
|
||||
rs.getTimestamp("last_message"),
|
||||
rs.getInt("xp"),
|
||||
rs.getInt("total_xp"),
|
||||
rs.getInt("level")
|
||||
));
|
||||
}
|
||||
return userRecordList;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
package net.hypr.doki.utils;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Random;
|
||||
|
||||
public class LevellingUtils {
|
||||
public static void incrementXp(Logger logger, UserRecord userRecord) throws SQLException {
|
||||
Random random = new Random();
|
||||
// Random increment between 15 and 25
|
||||
int xpInc = (random.nextInt(10) + 16) * 3;
|
||||
int xpNew = userRecord.xp + xpInc;
|
||||
int totalXp = userRecord.xp + xpInc;
|
||||
int levelNew = userRecord.level;
|
||||
if (xpNew >= ((userRecord.level + 1) * 5) * 40) {
|
||||
levelNew ++;
|
||||
xpNew = 0;
|
||||
}
|
||||
DBUtils.updateUserRecord(
|
||||
userRecord.user_id,
|
||||
userRecord.server_id,
|
||||
Timestamp.valueOf(LocalDateTime.now()),
|
||||
xpNew,
|
||||
totalXp,
|
||||
levelNew
|
||||
);
|
||||
logger.info("Incremented " + userRecord.username + "'s XP in " + userRecord.server_id + " (" + userRecord.xp + " -> " + xpNew + ")");
|
||||
if (levelNew > userRecord.level) {
|
||||
logger.info("Incremented " + userRecord.username + "'s level in " + userRecord.server_id + " (" + userRecord.level + " -> " + levelNew + ")");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
package net.hypr.doki.utils;
|
||||
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
public class UserRecord {
|
||||
public final long user_id;
|
||||
public final long server_id;
|
||||
public final String username;
|
||||
public final Timestamp lastMessage;
|
||||
public final int xp;
|
||||
public int totalXp;
|
||||
public final int level;
|
||||
|
||||
/**
|
||||
* Instantiates a new UserRecord
|
||||
* @param user_id The User ID
|
||||
* @param server_id The Server/Guild ID
|
||||
* @param username The Username
|
||||
*/
|
||||
public UserRecord (long user_id, long server_id, String username) {
|
||||
this.user_id = user_id;
|
||||
this.server_id = server_id;
|
||||
this.username = username;
|
||||
this.lastMessage = new Timestamp(0);
|
||||
this.xp = 0;
|
||||
this.level = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Instantiates a new UserRecord
|
||||
* @param user_id The User ID
|
||||
* @param server_id The Server/Guild ID
|
||||
* @param username The Username
|
||||
* @param lastMessage The timestamp of the user's last message
|
||||
* @param xp The user's XP
|
||||
* @param totalXp The user's total XP
|
||||
* @param level The user's level
|
||||
*/
|
||||
public UserRecord (long user_id, long server_id, String username, Timestamp lastMessage, int xp, int totalXp, int level) {
|
||||
this.user_id = user_id;
|
||||
this.server_id = server_id;
|
||||
this.username = username;
|
||||
this.lastMessage = lastMessage;
|
||||
this.xp = xp;
|
||||
this.totalXp = totalXp;
|
||||
this.level = level;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue