0.16.3 • Published 4 months ago

detritus-client v0.16.3

Weekly downloads
53
License
BSD-2-Clause
Repository
github
Last release
4 months ago

Detritus

npm

A wheels-attached, pure-TypeScript library for the Discord API.

Installation

Detritus is distributed via npm. A high-level wrapper over the Discord API is provided in this package, detritus-client. Low-level wrappers over Discord's REST API and Gateway are provided through detritus-client-rest and detritus-client-socket.

  • $ npm i detritus-client
  • $ yarn add detritus-client

Usage

Detritus is operated through the Clients classes:

  • ShardClient provides a base client for connecting to the Discord API and receiving events.
  • CommandClient wraps over the ShardClient to provide support for bot commands.

More Examples are provided under the examples/ directory.

Command Client Sample

const { CommandClient } = require('detritus-client');

// Note: it is not advised to hard-code your bot token directly into the bot source.
//
// Tokens should be considered secrets and stored in a configuration file that is not
// part of your version control system, or an environment variable.
// By default, the CommandClient will use the ShardClient unless you use the ClusterManager to spawn processes
// The ShardClient/ClusterClient will be under CommandClient.client as soon as you create the object
const token = '';
const commandClient = new CommandClient(token, {
  // Prefix `..`, if you want multiple prefixes pass in `prefixes: ['..', '...']`
  prefix: '..',
});

// Simple ping/pong command
commandClient.add({
  // name describes the command trigger; in this case, ..ping
  name: 'ping',
  run: (context, args) => {
    // Commands should return a promise to ensure that errors are handled
    return context.reply('pong!');
  },
});

// Command demonstrating command pipelines
commandClient.add({
  name: 'owner',
  // onBefore should return a boolean to indicate whether or not the command should proceed
  onBefore: (context) => context.client.isOwner(context.userId),
  onCancel: (context) => context.reply('This command is only available to the bot owner.'),
  run: async (context) => {
    // Commands may also run asynchronously.
    await context.reply('You are the owner of the bot!');
  },
});

// Spawn the client in an async context
//
// Note: Due to how Node handles tasks, the script will block until the Detritus client
// is killed.
(async () => {
  const client = await commandClient.run();
  // client has received the READY payload, do stuff now
  console.log(`Client has loaded with a shard count of ${client.shardCount}`);
})();

Shard Client Sample

const { ShardClient } = require('detritus-client');

// Note: it is not advised to hard-code your bot token directly into the bot source.
//
// Tokens should be considered secrets and stored in a configuration file that is not
// part of your version control system, or an environment variable.
const token = '';
const client = new ShardClient(token, {
  gateway: {
    // This will tell our client to fill our Members cache on any of our guilds that are larger than the large threshold you pass in (default 250)
    loadAllMembers: true,
  },
});

// listen to our client's eventemitter
client.on('guildCreate', async ({fromUnavailable, guild}) => {
  if (fromUnavailable) {
    console.log(`Guild ${guild.name} has just came back from being unavailable`);
  } else {
    console.log(`Joined Guild ${guild.name}, bringing us up to ${client.guilds.length} guilds.`);
  }
});

// listen to our client's eventemitter
client.on('messageCreate', async ({message}) => {
  if (message.content === '!ping') {
    const reply = await message.reply('pong!, deleting message in 5 seconds...');
    setTimeout(async () => {
      await reply.delete();
    }, 5000);
  }
});

(async () => {
  await client.run();
  console.log('Successfully connected to Discord!');
  console.log(`Currently have ${client.guilds.length} guilds in cache.`);
  // set our presence, we can pass this into the client's options too under `gateway.presence`
  client.gateway.setPresence({
    activity: {
      // What comes after our activity type, x.
      name: 'with Detritus',
      // Type 0 sets our message to `Playing x`
      type: 0,
    },
    // do-not-disturb us
    status: 'dnd',
  });
})();

Cluster Client Sample

const { ClusterClient } = require('detritus-client');

// Note: it is not advised to hard-code your bot token directly into the bot source.
//
// Tokens should be considered secrets and stored in a configuration file that is not
// part of your version control system, or an environment variable.
const token = '';
const cluster = new ClusterClient(token, {
  gateway: {
    // Pass in a presence we will send with the identify payload
    presence: {
      activity: {
        // What comes after our activity type, x.
        name: 'with Detritus ClusterClient',
        // Type 0 sets our message to `Playing x`
        type: 0,
      },
      // do-not-disturb us
      status: 'dnd',
    },
  },
});

// listen to our client's eventemitter
// `shard` (which is the ShardClient the event originated from) is added onto EVERY event that you listen to on the cluster client
cluster.on('guildCreate', async ({fromUnavailable, guild, shard}) => {
  if (fromUnavailable) {
    console.log(`Shard #${shard.shardId}:`, `Guild ${guild.name} has just came back from being unavailable`);
  } else {
    console.log(`Shard #${shard.shardId}:`, `Joined Guild ${guild.name}, bringing us up to ${client.guilds.length} guilds.`);
  }
});

// listen to our client's eventemitter
// `shard` (which is the ShardClient the event originated from) is added onto EVERY event that you listen to on the cluster client
cluster.on('messageCreate', async ({message, shard}) => {
  if (message.content === '!ping') {
    const reply = await message.reply(`pong on shard #${shard.shardId}!, deleting message in 5 seconds...`);
    setTimeout(async () => {
      await reply.delete();
    }, 5000);
  }
});

(async () => {
  // shards are made after the cluster is ran, found in `ClusterClient.shards`.
  await cluster.run();
  console.log(`Successfully launched shards ${cluster.shardStart} to ${cluster.shardEnd} with a shardCount of ${cluster.shardCount}`);
})();

Contributing

Detritus is licensed under the BSD-2 license; see the LICENSE.

To contribute, please first open an issue describing your requested changes, and then open a pull request.

0.17.0-beta.19

4 months ago

0.17.0-beta.18

4 months ago

0.17.0-beta.11

2 years ago

0.17.0-beta.16

2 years ago

0.17.0-beta.12

2 years ago

0.17.0-beta.13

2 years ago

0.17.0-beta.14

2 years ago

0.17.0-beta.15

2 years ago

0.17.0-beta.2

2 years ago

0.17.0-beta.3

2 years ago

0.17.0-beta.4

2 years ago

0.17.0-beta.5

2 years ago

0.17.0-beta.6

2 years ago

0.17.0-beta.10

2 years ago

0.17.0-beta.7

2 years ago

0.17.0-beta.8

2 years ago

0.17.0-beta.9

2 years ago

0.17.0-beta.0

2 years ago

0.17.0-beta.1

2 years ago

0.16.4-beta.6

2 years ago

0.16.4-beta.5

3 years ago

0.16.4-beta.3

3 years ago

0.16.4-beta.2

3 years ago

0.16.4-beta.4

3 years ago

0.16.4-beta.1

3 years ago

0.16.4-beta.0

3 years ago

0.16.3-beta.13

3 years ago

0.16.3

3 years ago

0.16.3-beta.12

3 years ago

0.16.3-beta.11

3 years ago

0.16.3-beta.10

3 years ago

0.16.3-beta.9

3 years ago

0.16.3-beta.7

3 years ago

0.16.3-beta.8

3 years ago

0.16.3-beta.5

3 years ago

0.16.3-beta.6

3 years ago

0.16.3-beta.4

3 years ago

0.16.3-beta.3

3 years ago

0.16.3-beta.1

3 years ago

0.16.3-beta.2

3 years ago

0.16.3-beta.0

3 years ago

0.16.2

3 years ago

0.16.2-beta.6

3 years ago

0.16.2-beta.5

3 years ago

0.16.2-beta.4

3 years ago

0.16.2-beta.3

3 years ago

0.16.2-beta.2

3 years ago

0.16.2-beta.1

3 years ago

0.16.2-beta.0

3 years ago

0.16.0-beta.5

3 years ago

0.16.0

3 years ago

0.16.1

3 years ago

0.16.0-beta.3

3 years ago

0.16.0-beta.4

3 years ago

0.16.0-beta.2

3 years ago

0.16.0-beta.1

3 years ago

0.16.0-beta.0

3 years ago

0.15.3

3 years ago

0.15.3-beta.2

3 years ago

0.15.3-beta.1

3 years ago

0.15.3-beta.0

3 years ago

0.15.2

3 years ago

0.15.2-beta.4

3 years ago

0.15.2-beta.5

3 years ago

0.15.2-beta.3

3 years ago

0.15.2-beta.2

3 years ago

0.15.2-beta.1

3 years ago

0.15.2-beta.0

3 years ago

0.15.1

3 years ago

0.15.1-beta.21

3 years ago

0.15.1-beta.22

3 years ago

0.15.1-beta.18

3 years ago

0.15.1-beta.19

3 years ago

0.15.1-beta.20

3 years ago

0.15.1-beta.14

3 years ago

0.15.1-beta.16

3 years ago

0.15.1-beta.15

3 years ago

0.15.1-beta.17

3 years ago

0.15.1-beta.13

3 years ago

0.15.1-beta.12

3 years ago

0.15.1-beta.10

3 years ago

0.15.1-beta.11

3 years ago

0.15.1-beta.9

3 years ago

0.15.1-beta.8

3 years ago

0.15.1-beta.6

3 years ago

0.15.1-beta.7

3 years ago

0.15.1-beta.5

3 years ago

0.15.1-beta.4

3 years ago

0.15.1-beta.3

3 years ago

0.15.1-beta.2

3 years ago

0.15.1-beta.1

3 years ago

0.15.1-beta.0

3 years ago

0.15.0

3 years ago

0.15.0-beta.5

3 years ago

0.15.0-beta.4

3 years ago

0.15.0-beta.3

3 years ago

0.15.0-beta.2

3 years ago

0.15.0-beta.0

3 years ago

0.15.0-beta.1

3 years ago

0.14.4-beta.5

3 years ago

0.14.4-beta.1

3 years ago

0.14.4-beta.2

3 years ago

0.14.4-beta.3

3 years ago

0.14.4-beta.4

3 years ago

0.14.4-beta.0

3 years ago

0.14.2

3 years ago

0.14.3

3 years ago

0.14.0-beta.2

3 years ago

0.14.0

3 years ago

0.14.1

3 years ago

0.14.0-beta.0

3 years ago

0.14.0-beta.1

3 years ago

0.13.0

3 years ago

0.12.2

3 years ago

0.12.1

3 years ago

0.12.0

3 years ago

0.11.1

4 years ago

0.11.1-beta.13

4 years ago

0.11.1-beta.11

4 years ago

0.11.1-beta.12

4 years ago

0.11.1-beta.10

4 years ago

0.11.1-beta.9

4 years ago

0.11.1-beta.8

4 years ago

0.11.1-beta.7

4 years ago

0.11.1-beta.6

4 years ago

0.11.1-beta.5

4 years ago

0.11.1-beta.4

4 years ago

0.11.1-beta.3

4 years ago

0.11.1-beta.2

4 years ago

0.11.1-beta.1

4 years ago

0.11.0

4 years ago

0.11.0-beta.12

4 years ago

0.11.0-beta.11

4 years ago

0.11.0-beta.10

4 years ago

0.11.0-beta.9

4 years ago

0.11.0-beta.8

4 years ago

0.11.0-beta.6

4 years ago

0.11.0-beta.5

4 years ago

0.11.0-beta.4

4 years ago

0.11.0-beta.3

4 years ago

0.11.0-beta.2

4 years ago

0.11.0-beta.1

4 years ago

0.11.0-beta.0

4 years ago

0.10.6

4 years ago

0.10.5

4 years ago

0.10.4

4 years ago

0.10.3

4 years ago

0.10.2

4 years ago

0.10.1

4 years ago

0.10.0

4 years ago

0.9.44

4 years ago

0.9.41

4 years ago

0.9.42

4 years ago

0.9.43

4 years ago

0.9.40

4 years ago

0.9.39

4 years ago

0.9.38

4 years ago

0.9.36

4 years ago

0.9.37

4 years ago

0.9.35

4 years ago

0.9.34

5 years ago

0.9.33

5 years ago

0.9.32

5 years ago

0.9.31

5 years ago

0.9.30

5 years ago

0.9.29

5 years ago

0.9.28

5 years ago

0.9.27

5 years ago

0.9.26

5 years ago

0.9.25

5 years ago

0.9.24

5 years ago

0.9.23

5 years ago

0.9.22

5 years ago

0.9.21

5 years ago

0.9.20

5 years ago

0.9.19

5 years ago

0.9.18

5 years ago

0.9.17

5 years ago

0.9.16

5 years ago

0.9.15

5 years ago

0.9.14

5 years ago

0.9.13

5 years ago

0.9.12

5 years ago

0.9.11

5 years ago

0.9.10

5 years ago

0.9.9

5 years ago

0.9.8

5 years ago

0.9.7

5 years ago

0.9.6

5 years ago

0.9.5

5 years ago

0.9.4

5 years ago

0.9.3

5 years ago

0.9.2

5 years ago

0.9.1

5 years ago

0.9.0

5 years ago

0.8.15

5 years ago

0.8.14

5 years ago

0.8.13

5 years ago

0.8.12

5 years ago

0.8.11

5 years ago

0.8.10

5 years ago

0.8.9

5 years ago

0.8.8

5 years ago

0.8.7

5 years ago

0.8.6

5 years ago

0.8.5

5 years ago

0.8.4

5 years ago

0.8.3

5 years ago

0.8.2

5 years ago

0.8.1

5 years ago

0.8.0

5 years ago

0.7.23

5 years ago

0.7.22

5 years ago

0.7.21

5 years ago

0.7.20

5 years ago

0.7.19

5 years ago

0.7.18

5 years ago

0.7.17

5 years ago

0.7.16

5 years ago

0.7.15

5 years ago

0.7.14

5 years ago

0.7.13

5 years ago

0.7.12

5 years ago

0.7.11

5 years ago

0.7.10

5 years ago

0.7.9

5 years ago

0.7.8

5 years ago

0.7.7

5 years ago

0.7.6

5 years ago

0.7.5

5 years ago

0.7.4

5 years ago

0.7.3

5 years ago

0.7.2

5 years ago

0.7.1

5 years ago

0.7.0

5 years ago

0.6.24

5 years ago

0.6.23

5 years ago

0.6.22

5 years ago

0.6.21

5 years ago

0.6.20

5 years ago

0.6.19

5 years ago

0.6.18

5 years ago

0.6.17

5 years ago

0.6.16

5 years ago

0.6.15

5 years ago

0.6.14

5 years ago

0.6.13

5 years ago

0.6.12

5 years ago

0.6.11

5 years ago

0.6.10

5 years ago

0.6.9

5 years ago

0.6.8

5 years ago

0.6.7

5 years ago

0.6.6

5 years ago

0.6.5

5 years ago

0.6.4

5 years ago

0.6.3

5 years ago

0.6.2

5 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.5.32

5 years ago

0.5.31

5 years ago

0.5.30

5 years ago

0.5.29

5 years ago

0.5.28

5 years ago

0.5.27

5 years ago

0.5.26

5 years ago

0.5.25

5 years ago

0.5.24

5 years ago

0.5.23

5 years ago

0.5.22

5 years ago

0.5.21

5 years ago

0.5.20

5 years ago

0.5.19

5 years ago

0.5.18

5 years ago

0.5.17

5 years ago

0.5.16

5 years ago

0.5.15

5 years ago

0.5.14

5 years ago

0.5.13

5 years ago

0.5.12

5 years ago

0.5.11

5 years ago

0.5.10

5 years ago

0.5.9

5 years ago

0.5.8

5 years ago

0.5.7

5 years ago

0.5.6

5 years ago

0.5.5

5 years ago

0.5.4

5 years ago

0.5.3

5 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.25

5 years ago

0.4.24

5 years ago

0.4.23

5 years ago

0.4.22

5 years ago

0.4.21

5 years ago

0.4.20

5 years ago

0.4.19

5 years ago

0.4.18

5 years ago

0.4.17

5 years ago

0.4.16

5 years ago

0.4.15

5 years ago

0.4.14

5 years ago

0.4.13

5 years ago

0.4.12

5 years ago

0.4.11

5 years ago

0.4.10

5 years ago

0.4.9

5 years ago

0.4.8

5 years ago

0.4.7

5 years ago

0.4.6

5 years ago

0.4.5

5 years ago

0.4.4

5 years ago

0.4.3

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.23

5 years ago

0.3.22

5 years ago

0.3.21

5 years ago

0.3.20

5 years ago

0.3.19

5 years ago

0.3.18

5 years ago

0.3.17

5 years ago

0.3.16

5 years ago

0.3.15

5 years ago

0.3.14

5 years ago

0.3.13

5 years ago

0.3.12

5 years ago

0.3.11

5 years ago

0.3.10

5 years ago

0.3.9

5 years ago

0.3.8

5 years ago

0.3.7

5 years ago

0.3.6

5 years ago

0.3.5

5 years ago

0.3.4

5 years ago

0.3.3

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.11

5 years ago

0.2.10

5 years ago

0.2.9

5 years ago

0.2.8

5 years ago

0.2.7

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago