Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/botblock/javabotblockapi

Java Wrapper for the BotBlock API [Java - maintained by @Andre601]
https://github.com/botblock/javabotblockapi

botblock discord discord-api hacktoberfest java

Last synced: 2 months ago
JSON representation

Java Wrapper for the BotBlock API [Java - maintained by @Andre601]

Awesome Lists containing this project

README

        

[BotBlock]: https://botblock.org
[API]: https://botblock.org/api/docs
[list]: https://botblock.org/api/docs#count

[BotBlock4J]: https://github.com/spide-r/BotBlock4J

[wiki]: https://jbba.dev/docs

[CodeMCBadge]: https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fci.codemc.io%2Fjob%2Fbotblock%2Fjob%2FJavaBotBlockAPI%2F&label=Dev%20Builds&style=plastic
[CodeMC]: https://ci.codemc.io/job/botblock/job/JavaBotBlockAPI/

[DownloadBadge]: https://img.shields.io/nexus/maven-public/org.botblock/javabotblockapi-core?label=Release&server=https%3A%2F%2Frepo.codemc.io&style=plastic
[Download]: https://ci.codemc.io/job/botblock/job/JavaBotBlockAPI/lastSuccessfulBuild

[JDA]: https://github.com/DV8FromTheWorld/JDA
[Javacord]: https://github.com/javacord/Javacord

[OkHttp]: https://github.com/square/okhttp/
[JSON]: https://github.com/stleary/JSON-java
[Caffeine]: https://github.com/ben-manes/caffeine

[contributors.md]: https://github.com/botblock/JavaBotBlockAPI/blob/master/contributors.md

[Javadoc]: https://docs.botblock.org/JavaBotBlockAPI
[image]: https://docs.botblock.org/JavaBotBlockAPI/assets/img/JavaBotBlockAPI.png
[site]: https://docs.botblock.org/JavaBotBlockAPI/core/org/botblock/javabotblockapi/core/Site.html

![image]

JavaBotBlockAPI is a continued and updated Java Wrapper for [BotBlock], a website that makes it possible to update guild counts on multiple lists with one API.
This wrapper is a fork of [BotBlock4J] and was updated and improved to make it as userfriendly as possible.

# Installation
[![DownloadBadge]][Download] [![CodeMCBadge]][CodeMC]

You can install JavaBotBlockAPI through the following methods.
Make sure to replace `{version}` with the above shown version.

## Gradle
To download the different modules will you need to add the following snippets to your `build.gradle`:

```groovy
repositories{
maven{ url = 'https://repo.codemc.io/repository/maven-public' }
}

dependencies{
// Core Module. Always needed
compile group: 'org.botblock', name: 'javabotblockapi-core', version: '{version}'

// Request Module. Depends on Core
compile group: 'org.botblock', name: 'javabotblockapi-request', version: '{version}'

// JDA Module. Depends on Core and Request
compile group: 'org.botblock', name: 'javabotblockapi-jda', version: '{version}'

// Javacord Module. Depends on Core and Request
compile group: 'org.botblock', name: 'javabotblockapi-javacord', version: '{version}'
}
```

## Maven
To download the different modules will you need to add the following snippets to your `pom.xml`:

```xml


codemc
https://repo.codemc.io/repository/maven-public



org.botblock
javabotblockapi-core
{version}



org.botblock
javabotblockapi-request
{version}



org.botblock
javabotblockapi-jda
{version}



org.botblock
javabotblockapi-javacord
{version}

```

# Usage Examples
Below will you find a few examples on how JavaBotBlockAPI can/should be used.
Please make sure to also take a look at the [Javadoc] for any additional information.

## BotBlockAPI
> **Required Modules**:
> - `core`

If you want to POST guild counts to the various bot lists should you first create a BotBlockAPI instance.
The BotBlockAPI class contains a nested Builder class which allows a more streamlined creation of a BotBlockAPI instance.

**Example**:
```java
BotBlockAPI api = new BotBlockAPI.Builder()
.addAuthToken("discordextremelist.xyz", "my_s3cr3t_t0k3n")
.addAuthToken(Site.DISCORDLIST_SPACE, "my_53cret_tok3n")
.build();
```

As you can see can you provide either a String with the id you can find [here][list] or use one of the many static [Site] instances that are offered.
The Builder has some extra methods that can be used to further customize specific behaviours. Take a look on the [Javadoc] for those.

Next would you need to choose, which type of PostAction you want to use. Depending on your selection will you need to have the right module(s) downloaded.

## Default PostAction
> **Required Modules**:
> - `request`
>
> *In the following examples will `botId` and `guilds` be used. Those are placeholders for your bot's ID and Guild count respectively.*

```java
// Create PostAction instance
PostAction postAction = new PostAction("botId");

// Post manually
postAction.postGuilds("botId", guilds, api);

// Post automatically
postAction.enableAutoPost("botId", guilds, api);

// Disable automatic posting
postAction.disableAutoPost(); // Disable with no delay
postAction.disableAutoPost(api); // Disable with BotBlockAPI#getUpdateDelay() delay
postAction.disableAutoPost(1, TimeUnit.MINUTES); // Disable with 1 Minute delay.
```

## JDA PostAction
> **Required Modules**:
> - `request`
> - `jda`

```java
/*
* Get your JDA instance.
* This can also be a ShardManager instance
* for sharded Bots.
*/
JDA jda = getJDA();

// Create PostAction instance
PostAction postAction = new PostAction(jda);

// Post manually
postAction.postGuilds(jda, api);

// Post automatically
postAction.enableAutoPost(jda, api);

// Disable automatic posting
postAction.disableAutoPost(); // Disable with no delay
postAction.disableAutoPost(api); // Disable with BotBlockAPI#getUpdateDelay() delay
postAction.disableAutoPost(1, TimeUnit.MINUTES); // Disable with 1 Minute delay.
```

## Javacord PostAction
> **Required Modules**:
> - `request`
> - `javacord`

```java
/*
* Get your DiscordApi instances.
*/
DiscordApi[] discordApis = getDiscordApis();

// Create PostAction instance
PostAction postAction = new PostAction(discordApis[0]);

// Post manually
postAction.postGuilds(api, discordApis);

// Post automatically
postAction.enableAutoPost(api, discordApis);

// Disable automatic posting
postAction.disableAutoPost(); // Disable with no delay
postAction.disableAutoPost(api); // Disable with BotBlockAPI#getUpdateDelay() delay
postAction.disableAutoPost(1, TimeUnit.MINUTES); // Disable with 1 Minute delay.
```

----
## Get Bot Information
> **Required Modules**:
> - `core`
> - `request`

You can use the GetBotAction class to retrieve information about a bot on the different Bot lists.
The class offers options for either getting the full information as JSONObject, or to retrieve specific information such as the authors of the bot.

Due to the huge amount of methods offered by this class are we not showing any examples here.
A look into the [Javadoc] is highly recommendet.

----
## Get List Information
> **Required Modules**:
> - `core`
> - `request`

Similar to [Getting Bot Information](#get-bot-information) can you also retrieve information known by BotBlock about either all or specific bot lists.
The GetListAction allows the retrieval of all Bot Lists and their information as a JSONObject, or a specific info such as the URL used for seeing a Bot's list entry for a specific bot list.

Due to the huge amount of methods offered by this class are we not showing any examples here.
A look into the [Javadoc] is highly recommendet.

# Libraries/Dependencies
JavaBotBlockAPI utilizes different APIs to provide the functionality it offers right now.
We have a list of those libraries listed here.

- **Javacord Module**
- [Javacord] - Java Wrapper for making Discord Bots.
- **JDA Module**
- [JDA] - Java library used for creating bots.
- **Request Module**
- [OkHttp] - Library for creating and managing http requests.
- [JSON] - Used for JSON management.
- [Caffeine] - Library used for caching.

# Links
Here are some useful links:
- [BotBlock.org][BotBlock] Site for which this wrapper was made.
- [API] API documentation.
- [Javadoc] Java documentation of the Wrapper.
- [CodeMC] CI server for dev builds. Those jar files may differ from the ones on bintray.
- [BotBlock4J] Original Wrapper from which this one originates.

# Contributors
We appreciate any contribution from others towards this project.
All contributors are listed on the [contributors.md] file.