1.3.1 • Published 3 years ago
tshandler v1.3.1
tshandler
Credit to Nobu#1122 on Discord for creating the original handler this is based off of
A command handler for Discord.JS made from Typescript.
npm install tshandlerTo start using the handler, make your main bot file and import from Discord.JS and TSHandler (I will show a Typescript example but you should be able to use Javascript as well)
// ./index.ts
import { config } from "dotenv";
import { resolve } from "path";
config({ path: resolve(__dirname, "..", ".env") });
import { CommandClient, MongoClient } from 'tshandler'
import { Client } from 'discord.js'
import mongoose from './mongoose'
import categories from './commands'
const djsClient = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMembers,
    ]
})
const mongoClient = new MongoClient({
    uri: process.env.MONGOURI
})
const client = new CommandClient({
    djsClient,
    clientToken: process.env.TOKEN,
    localGuildId: "961227373649461248",
    ownerUserIds: ["544646066579046401"],
    noPermissionMsg: "Haha you don't have enough permissions loser!", // Default: "You do not have the required permissions to use this command."
    mongoClient
})
const schema = mongoClient.createSchema("users", new mongoose.Schema({
    name: String,
    age: Number
}))
(async() => {
    await client.registerCategories(categories);
    await client.run();
    await mongoClient.registerSchemas([
        schema
    ])
    await mongoClient.initialize();
})()
// ./commands/index.ts
import utility from './utility'
export default [
    utility
]
// ./commands/utility/index.ts
import { CommandCategory } from 'tshandler'
import ping from './ping'
import test from './test'
const utility = new CommandCategory({
    name: "Utility",
    description: "Utility Commands",
});
utility
    .addCommand(ping)
    .addCommand(test)
export default utility
// ./commands/utility/ping.ts
import { createCommand } from 'tshandler'
import { SlashCommandBuilder } from 'discord.js'
const meta = new SlashCommandBuilder()
    .setName('ping')
    .setDescription('Replies with Pong!')
export default createCommand(meta, ({ interaction, client }) => {
    interaction.reply({ content: `Pong!` })
})
// ./commands/utility/test.ts
import { createCommand } from 'tshandler'
import { SlashCommandBuilder } from 'discord.js'
const meta = new SlashCommandBuilder()
    .setName('test')
    .setDescription('Responds if it works or not.')
export default createCommand(meta, ({ interaction, client }) => {
    interaction.reply({ content: `It works!` })
}, ["Administrator"])