Skip to content
forked from mewna/catnip

A fully reactive / async Discord API wrapper for the JVM, built on vert.x

Notifications You must be signed in to change notification settings

Shredder121-me/catnip

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

catnip

A Discord API wrapper in Java. Fully async / reactive, built on top of vert.x.

We have a Discord! https://discord.gg/kCsBCjK

Installation

Run mvn clean test install

If this is too hard for you and / or you use gradle, get it on Jitpack here: https://jitpack.io/#mewna/catnip

Basic usage

This is the simplest possible bot you can make right now:

final Catnip catnip = Catnip.catnip().token(System.getenv("TOKEN"));
catnip.eventBus().<Message>consumer(DiscordEvent.MESSAGE_CREATE, event -> {
    final Message msg = event.body();
    if(msg.content().equalsIgnoreCase("!ping")) {
        catnip.rest().channel().sendMessage(msg.channelId(), "pong!");
    }
});
catnip.startShards();

catnip returns CompletableFutures from all REST methods. For example, editing your ping message to include time it took to create the message:

final Catnip catnip = Catnip.catnip().token(System.getenv("TOKEN"));
catnip.eventBus().<Message>consumer(DiscordEvent.MESSAGE_CREATE, event -> {
    final Message msg = event.body();
    if(msg.content().equalsIgnoreCase("!ping")) {
        final long start = System.currentTimeMillis();
        catnip.rest().channel().sendMessage(msg.channelId(), "pong!")
                .thenAccept(ping -> {
                    final long end = System.currentTimeMillis();
                    catnip.rest().channel().editMessage(msg.channelId(), ping.id(),
                            "pong! (took " + (end - start) + "ms)");
                });
    }
});
catnip.startShards();

Features

  • Automatic sharding
  • Proper support for REST / ratelimits, RESUME, ...

TODO

  • Create entity classes for guilds, channels, ...
  • Finish handling all DISPATCH events (see DispatchEmitter)
  • Full REST API coverage (see Rest, #3)

About

A fully reactive / async Discord API wrapper for the JVM, built on vert.x

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%