0.0.5 • Published 2 years ago

@potoland/framework v0.0.5

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 years ago

@potoland/framework

A brand new bleeding edge non bloated Discord library

Install (for node18)

npm install @potoland/framework
yarn add @potoland/framework

for further reading join our Discord

Most importantly, @potoland/framework is:

  • A wrapper to interface the Discord API

@potoland/* is primarily inspired by biscuit

Why @potoland/*?:

  • Scalable

Example bot (TS/JS)

import Redis from "ioredis";

import { Potocuit /*, Command */ } from "@potoland/framework";
import { RedisAdapter } from "@potoland/cache";
import { type DiscordGetGatewayBot, Intents } from "@biscuitland/api-types";
import { DefaultRestAdapter } from "@biscuitland/rest";
import { ShardManager } from "@biscuitland/ws";

const TOKEN = "pxx.xotx.xxo";

const restAdapter = new DefaultRestAdapter({
  token: TOKEN,
});

const gwy = await restAdapter.get<DiscordGetGatewayBot>("/gateway/bot");

const shardManager = new ShardManager({
  gateway: gwy,
  config: {
    token: TOKEN,
    intents: Intents.GuildMembers |
      Intents.GuildEmojis |
      Intents.Guilds |
      Intents.GuildMessages |
      Intents.GuildPresences |
      Intents.GuildVoiceStates,
  },
  handleDiscordPayload(_shard, _payload) {
  },
});

const bot = new Potocuit({
  token: TOKEN,
  shardManager,
  restAdapter,
  cache: {
    adapter: new RedisAdapter({
      client: new Redis(),
      options: { namespace: "bot" },
    }),
    disabledEvents: [], //Can pass 'ALL'
  },
});

/*
//Without <ShardManager> instance

const bot = new Potocuit({
	token: TOKEN,
	intents: Intents.GuildMembers |
		Intents.GuildEmojis |
		Intents.Guilds |
		Intents.GuildMessages |
		Intents.GuildPresences |
		Intents.GuildVoiceStates,
	shardManagerOptions: { //<--- Must specify options
		gateway: gwy,
	},
	restAdapter,//<--- Not necessary, it is created automatically
	cache: {
		adapter: new RedisAdapter({
			client: new Redis(),
			options: { namespace: "bot" },
		}),
		disabledEvents: [],
	},
});
*/

bot.events.ready = ([id, num]) => {
  console.log(`[${id}] handling ${num} shards`);
};

// await bot.publishApplicationCommands(Command[])

await bot.start();

Links