0.16.3 • Published 6 months ago

detritus-client v0.16.3

Weekly downloads
53
License
BSD-2-Clause
Repository
github
Last release
6 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.73

6 months ago

0.17.0-beta.66

7 months ago

0.17.0-beta.67

7 months ago

0.17.0-beta.68

7 months ago

0.17.0-beta.69

7 months ago

0.17.0-beta.70

7 months ago

0.17.0-beta.71

7 months ago

0.17.0-beta.72

7 months ago

0.17.0-beta.65

7 months ago

0.17.0-beta.63

7 months ago

0.17.0-beta.64

7 months ago

0.17.0-beta.60

7 months ago

0.17.0-beta.61

7 months ago

0.17.0-beta.62

7 months ago

0.17.0-beta.57

8 months ago

0.17.0-beta.58

8 months ago

0.17.0-beta.59

8 months ago

0.17.0-beta.49

8 months ago

0.17.0-beta.48

8 months ago

0.17.0-beta.52

8 months ago

0.17.0-beta.53

8 months ago

0.17.0-beta.54

8 months ago

0.17.0-beta.55

8 months ago

0.17.0-beta.50

8 months ago

0.17.0-beta.51

8 months ago

0.17.0-beta.56

8 months ago

0.17.0-beta.45

8 months ago

0.17.0-beta.46

8 months ago

0.17.0-beta.47

8 months ago

0.17.0-beta.42

8 months ago

0.17.0-beta.43

8 months ago

0.17.0-beta.44

8 months ago

0.17.0-beta.41

9 months ago

0.17.0-beta.38

10 months ago

0.17.0-beta.39

10 months ago

0.17.0-beta.37

10 months ago

0.17.0-beta.40

10 months ago

0.17.0-beta.35

11 months ago

0.17.0-beta.36

11 months ago

0.17.0-beta.34

11 months ago

0.17.0-beta.31

12 months ago

0.17.0-beta.32

12 months ago

0.17.0-beta.33

12 months ago

0.17.0-beta.20

12 months ago

0.17.0-beta.21

12 months ago

0.17.0-beta.22

12 months ago

0.17.0-beta.27

12 months ago

0.17.0-beta.28

12 months ago

0.17.0-beta.29

12 months ago

0.17.0-beta.23

12 months ago

0.17.0-beta.24

12 months ago

0.17.0-beta.25

12 months ago

0.17.0-beta.26

12 months ago

0.17.0-beta.30

12 months ago

0.17.0-beta.19

2 years ago

0.17.0-beta.18

2 years ago

0.17.0-beta.11

3 years ago

0.17.0-beta.16

3 years ago

0.17.0-beta.12

3 years ago

0.17.0-beta.13

3 years ago

0.17.0-beta.14

3 years ago

0.17.0-beta.15

3 years ago

0.17.0-beta.2

3 years ago

0.17.0-beta.3

3 years ago

0.17.0-beta.4

3 years ago

0.17.0-beta.5

3 years ago

0.17.0-beta.6

3 years ago

0.17.0-beta.10

3 years ago

0.17.0-beta.7

3 years ago

0.17.0-beta.8

3 years ago

0.17.0-beta.9

3 years ago

0.17.0-beta.0

3 years ago

0.17.0-beta.1

3 years ago

0.16.4-beta.6

4 years ago

0.16.4-beta.5

4 years ago

0.16.4-beta.3

4 years ago

0.16.4-beta.2

4 years ago

0.16.4-beta.4

4 years ago

0.16.4-beta.1

4 years ago

0.16.4-beta.0

4 years ago

0.16.3-beta.13

4 years ago

0.16.3

4 years ago

0.16.3-beta.12

4 years ago

0.16.3-beta.11

4 years ago

0.16.3-beta.10

4 years ago

0.16.3-beta.9

4 years ago

0.16.3-beta.7

4 years ago

0.16.3-beta.8

4 years ago

0.16.3-beta.5

4 years ago

0.16.3-beta.6

4 years ago

0.16.3-beta.4

4 years ago

0.16.3-beta.3

4 years ago

0.16.3-beta.1

4 years ago

0.16.3-beta.2

4 years ago

0.16.3-beta.0

4 years ago

0.16.2

4 years ago

0.16.2-beta.6

4 years ago

0.16.2-beta.5

4 years ago

0.16.2-beta.4

4 years ago

0.16.2-beta.3

4 years ago

0.16.2-beta.2

4 years ago

0.16.2-beta.1

4 years ago

0.16.2-beta.0

4 years ago

0.16.0-beta.5

4 years ago

0.16.0

4 years ago

0.16.1

4 years ago

0.16.0-beta.3

4 years ago

0.16.0-beta.4

4 years ago

0.16.0-beta.2

4 years ago

0.16.0-beta.1

4 years ago

0.16.0-beta.0

4 years ago

0.15.3

4 years ago

0.15.3-beta.2

4 years ago

0.15.3-beta.1

4 years ago

0.15.3-beta.0

4 years ago

0.15.2

4 years ago

0.15.2-beta.4

4 years ago

0.15.2-beta.5

4 years ago

0.15.2-beta.3

4 years ago

0.15.2-beta.2

4 years ago

0.15.2-beta.1

4 years ago

0.15.2-beta.0

4 years ago

0.15.1

4 years ago

0.15.1-beta.21

4 years ago

0.15.1-beta.22

4 years ago

0.15.1-beta.18

4 years ago

0.15.1-beta.19

4 years ago

0.15.1-beta.20

4 years ago

0.15.1-beta.14

4 years ago

0.15.1-beta.16

4 years ago

0.15.1-beta.15

4 years ago

0.15.1-beta.17

4 years ago

0.15.1-beta.13

4 years ago

0.15.1-beta.12

4 years ago

0.15.1-beta.10

4 years ago

0.15.1-beta.11

4 years ago

0.15.1-beta.9

4 years ago

0.15.1-beta.8

4 years ago

0.15.1-beta.6

4 years ago

0.15.1-beta.7

4 years ago

0.15.1-beta.5

4 years ago

0.15.1-beta.4

4 years ago

0.15.1-beta.3

4 years ago

0.15.1-beta.2

4 years ago

0.15.1-beta.1

4 years ago

0.15.1-beta.0

4 years ago

0.15.0

4 years ago

0.15.0-beta.5

4 years ago

0.15.0-beta.4

4 years ago

0.15.0-beta.3

4 years ago

0.15.0-beta.2

4 years ago

0.15.0-beta.0

4 years ago

0.15.0-beta.1

4 years ago

0.14.4-beta.5

4 years ago

0.14.4-beta.1

4 years ago

0.14.4-beta.2

4 years ago

0.14.4-beta.3

4 years ago

0.14.4-beta.4

4 years ago

0.14.4-beta.0

4 years ago

0.14.2

4 years ago

0.14.3

4 years ago

0.14.0-beta.2

4 years ago

0.14.0

4 years ago

0.14.1

4 years ago

0.14.0-beta.0

4 years ago

0.14.0-beta.1

4 years ago

0.13.0

4 years ago

0.12.2

4 years ago

0.12.1

4 years ago

0.12.0

5 years ago

0.11.1

5 years ago

0.11.1-beta.13

5 years ago

0.11.1-beta.11

5 years ago

0.11.1-beta.12

5 years ago

0.11.1-beta.10

5 years ago

0.11.1-beta.9

5 years ago

0.11.1-beta.8

5 years ago

0.11.1-beta.7

5 years ago

0.11.1-beta.6

5 years ago

0.11.1-beta.5

5 years ago

0.11.1-beta.4

5 years ago

0.11.1-beta.3

5 years ago

0.11.1-beta.2

5 years ago

0.11.1-beta.1

5 years ago

0.11.0

5 years ago

0.11.0-beta.12

5 years ago

0.11.0-beta.11

5 years ago

0.11.0-beta.10

5 years ago

0.11.0-beta.9

5 years ago

0.11.0-beta.8

5 years ago

0.11.0-beta.6

5 years ago

0.11.0-beta.5

5 years ago

0.11.0-beta.4

5 years ago

0.11.0-beta.3

5 years ago

0.11.0-beta.2

5 years ago

0.11.0-beta.1

5 years ago

0.11.0-beta.0

5 years ago

0.10.6

5 years ago

0.10.5

5 years ago

0.10.4

5 years ago

0.10.3

5 years ago

0.10.2

5 years ago

0.10.1

5 years ago

0.10.0

5 years ago

0.9.44

5 years ago

0.9.41

5 years ago

0.9.42

5 years ago

0.9.43

5 years ago

0.9.40

5 years ago

0.9.39

5 years ago

0.9.38

6 years ago

0.9.36

6 years ago

0.9.37

6 years ago

0.9.35

6 years ago

0.9.34

6 years ago

0.9.33

6 years ago

0.9.32

6 years ago

0.9.31

6 years ago

0.9.30

6 years ago

0.9.29

6 years ago

0.9.28

6 years ago

0.9.27

6 years ago

0.9.26

6 years ago

0.9.25

6 years ago

0.9.24

6 years ago

0.9.23

6 years ago

0.9.22

6 years ago

0.9.21

6 years ago

0.9.20

6 years ago

0.9.19

6 years ago

0.9.18

6 years ago

0.9.17

6 years ago

0.9.16

6 years ago

0.9.15

6 years ago

0.9.14

6 years ago

0.9.13

6 years ago

0.9.12

6 years ago

0.9.11

6 years ago

0.9.10

6 years ago

0.9.9

6 years ago

0.9.8

6 years ago

0.9.7

6 years ago

0.9.6

6 years ago

0.9.5

6 years ago

0.9.4

6 years ago

0.9.3

6 years ago

0.9.2

6 years ago

0.9.1

6 years ago

0.9.0

6 years ago

0.8.15

6 years ago

0.8.14

6 years ago

0.8.13

6 years ago

0.8.12

6 years ago

0.8.11

6 years ago

0.8.10

6 years ago

0.8.9

6 years ago

0.8.8

6 years ago

0.8.7

6 years ago

0.8.6

6 years ago

0.8.5

6 years ago

0.8.4

6 years ago

0.8.3

6 years ago

0.8.2

6 years ago

0.8.1

6 years ago

0.8.0

6 years ago

0.7.23

6 years ago

0.7.22

6 years ago

0.7.21

6 years ago

0.7.20

6 years ago

0.7.19

6 years ago

0.7.18

6 years ago

0.7.17

6 years ago

0.7.16

6 years ago

0.7.15

6 years ago

0.7.14

6 years ago

0.7.13

6 years ago

0.7.12

6 years ago

0.7.11

6 years ago

0.7.10

6 years ago

0.7.9

6 years ago

0.7.8

6 years ago

0.7.7

6 years ago

0.7.6

6 years ago

0.7.5

6 years ago

0.7.4

6 years ago

0.7.3

6 years ago

0.7.2

6 years ago

0.7.1

6 years ago

0.7.0

6 years ago

0.6.24

6 years ago

0.6.23

6 years ago

0.6.22

6 years ago

0.6.21

6 years ago

0.6.20

6 years ago

0.6.19

6 years ago

0.6.18

6 years ago

0.6.17

6 years ago

0.6.16

6 years ago

0.6.15

6 years ago

0.6.14

6 years ago

0.6.13

6 years ago

0.6.12

6 years ago

0.6.11

6 years ago

0.6.10

6 years ago

0.6.9

6 years ago

0.6.8

6 years ago

0.6.7

6 years ago

0.6.6

6 years ago

0.6.5

6 years ago

0.6.4

6 years ago

0.6.3

6 years ago

0.6.2

6 years ago

0.6.1

6 years ago

0.6.0

6 years ago

0.5.32

6 years ago

0.5.31

6 years ago

0.5.30

6 years ago

0.5.29

6 years ago

0.5.28

6 years ago

0.5.27

6 years ago

0.5.26

6 years ago

0.5.25

6 years ago

0.5.24

6 years ago

0.5.23

6 years ago

0.5.22

6 years ago

0.5.21

6 years ago

0.5.20

6 years ago

0.5.19

6 years ago

0.5.18

6 years ago

0.5.17

6 years ago

0.5.16

6 years ago

0.5.15

6 years ago

0.5.14

6 years ago

0.5.13

6 years ago

0.5.12

6 years ago

0.5.11

6 years ago

0.5.10

6 years ago

0.5.9

6 years ago

0.5.8

6 years ago

0.5.7

6 years ago

0.5.6

6 years ago

0.5.5

6 years ago

0.5.4

6 years ago

0.5.3

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.25

6 years ago

0.4.24

6 years ago

0.4.23

6 years ago

0.4.22

6 years ago

0.4.21

6 years ago

0.4.20

6 years ago

0.4.19

6 years ago

0.4.18

6 years ago

0.4.17

6 years ago

0.4.16

6 years ago

0.4.15

6 years ago

0.4.14

6 years ago

0.4.13

6 years ago

0.4.12

6 years ago

0.4.11

6 years ago

0.4.10

6 years ago

0.4.9

6 years ago

0.4.8

6 years ago

0.4.7

6 years ago

0.4.6

6 years ago

0.4.5

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.3.23

6 years ago

0.3.22

6 years ago

0.3.21

6 years ago

0.3.20

6 years ago

0.3.19

6 years ago

0.3.18

6 years ago

0.3.17

6 years ago

0.3.16

6 years ago

0.3.15

6 years ago

0.3.14

6 years ago

0.3.13

6 years ago

0.3.12

6 years ago

0.3.11

6 years ago

0.3.10

6 years ago

0.3.9

6 years ago

0.3.8

6 years ago

0.3.7

6 years ago

0.3.6

6 years ago

0.3.5

6 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.11

6 years ago

0.2.10

6 years ago

0.2.9

6 years ago

0.2.8

6 years ago

0.2.7

6 years ago

0.2.6

6 years ago

0.2.5

6 years ago

0.2.4

6 years ago

0.2.3

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.6

7 years ago

0.0.5

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago