Easy-to-use library for posting stats on most available Discord Bot list.
The core module holds basic implementation and is necessary for discordbotlist-stats
to work properly.
The core module is the only dependency of each submodule, so you can just simply depend on the module that you need for the library you are using. All other dependencies, like the REST-Client, or a JSON library are used from the respective library. Why depend on them if they are already there?
Using with Catnip
<dependency>
<groupId>de.kaleidox</groupId>
<artifactId>discordbotslist-stats-catnip</artifactId>
<version>0.1.0</version>
</dependency>
dependencies {
implementation 'de.kaleidox:discordbotlist-stats-catnip:0.1.0'
}
With Catnip, using this library becomes easy-as-pie! You only need to do two additional steps:
- Build a
BotListSettings
object. - Load the
CatnipStatsExtension
in Catnip.
Catnip catnip = Catnip.catnip("token");
/* ... */
BotListSettings botListSettings = BotListSettings.builder()
/* define a file from which tokens will be scanned */
.tokenFile(new File("list_tokens.properties"))
/*
define a Supplier<Boolean> to tell the library when updating should be disabled
in this case, we check for the OS using another class
*/
.postStatsTester(OSValidator::isUnix)
.build();
// load the extension
catnip.loadExtension(new CatnipStatsExtension(botListSettings));
Using with Discord4J
<dependency>
<groupId>de.kaleidox</groupId>
<artifactId>discordbotslist-stats-discord4j</artifactId>
<version>0.1.3</version>
</dependency>
dependencies {
implementation 'de.kaleidox:discordbotlist-stats-discord4j:0.1.3'
}
Using with Javacord
<dependency>
<groupId>de.kaleidox</groupId>
<artifactId>discordbotslist-stats-javacord</artifactId>
<version>0.1.3</version>
</dependency>
dependencies {
implementation 'de.kaleidox:discordbotlist-stats-javacord:0.1.3'
}
You have two possible ways of using this library. In these examples, we will be using Javacord for demonstration purposes.
To create a single sharded stats connection, you must first define your Javacord DiscordApi
object, and then pass that to the JavacordStatsClient
constructor.
You will also need to create a BotListSettings
object, which will serve as your token carrier.
This object can be built using the included builder structure.
If you do not set a token for a bot list service in the builder, no stats will be posted to that service.
DiscordApi api = new DiscordApiBuilder()
.setToken(/* token */)
.login()
.join();
BotListSettings settings = BotListSettings.builder()
/* define all tokens that you want to use */
.setTop_gg_token(/* token */)
.setDivinediscordbots_com_token(/* token */)
.build();
StatsClient stats = new JavacordStatsClient(settings, API);
That's it already! The StatsClient
object does the rest for you.
In every library, it will register itself as a GuildJoin
and GuildLeave
listener,
and update the stats everytime the bot joins or leaves a guild.
Using with JDA
<dependency>
<groupId>de.kaleidox</groupId>
<artifactId>discordbotslist-stats-jda</artifactId>
<version>0.1.3</version>
</dependency>
dependencies {
implementation 'de.kaleidox:discordbotlist-stats-jda:0.1.3'
}