aqify.js
TypeScript icon, indicating that this package has built-in type declarations

2.5.0 • Public • Published

The Utility & Fun package that takes you to a whole new level.



Aqify.js

Aqify.js is an open-source utility package made for Discord bots, it has a lot of features and they are simplified at the maximum for everyone!

This package is not affiliated with Discord or/and discord.js.

Features

  • 100% written in TypeScript.
  • Full support for TypeScript and JavaScript.
  • Simple to use & Beginner friendly.
  • Open-source & free to use.
  • No credits required while using it!
  • All possible bugs are eliminated from the source-code.
  • Promise based.

Table of Contents

Install

Before installing the package, please make sure that you have the following requirements below:

If you meet the requirements above, you can install the package safely with no problems:

npm install aqify.js
yarn add aqify.js
pnpm add aqify.js

Other packages:

  • @tfagaming/discord.js-docs: Easy method to fetch discord.js docs.
  • @tfagaming/jsondb: Create a simple JSON database.
  • horizon-handler: A powerful commands & events handler for Discord bots.
  • wandbox-api.js: An unofficial wrapper for Wandbox API (API Compiler).

Import

Typescript:

import { } from 'aqify.js';

JavaScript (CommonJS):

const { } = require('aqify.js');

↑ Table of Contents

Docs

Visit the documentation website: Click here!

Examples

Dropdown paginator

import { EmbedBuilder, StringSelectMenuBuilder } from 'discord.js'; 
import { DropdownPaginatorBuilder, SendMethod } from 'aqify.js';

const paginator = new DropdownPaginatorBuilder(interaction, { time: 60000 });

paginator.addOptions(
    {
        component: {
            label: 'Option 1',
            description: 'Option 1 description'
        },
        message: {
            content: 'This is the option 1 message!'
        }
    },
    {
        component: {
            label: 'Option 2',
            emoji: '✌'
        },
        message: {
            content: 'This is the option 2 message!',
            embeds: [
                new EmbedBuilder()
                    .setDescription('Option 2 embed!')
            ]
        }
    }
);

await paginator.send(SendMethod.Reply,
    new StringSelectMenuBuilder()
        .setCustomId('your_epic_custom_id')
        .setPlaceHolder('Make a selection'), {
    home: {
        content: 'Select something from the menu below!'
    },
    onNotAuthor: async (i) => {
        await i.reply({
            content: 'You are not the author of this interaction.',
            ephemeral: true
        });
    },
    replyWithEphemeralMessage: true
});

↑ Table of Contents

Buttons paginator

import { ButtonStyle } from 'discord.js'; 
import { ButtonsPaginatorBuilder, ButtonPaginatorID, SendMethod } from 'aqify.js';

const paginator = new ButtonsPaginatorBuilder(interaction, {
    time: 60000
});

paginator.addButtons(
    { label: 'Previous',id: ButtonPaginatorID.Previous, type: ButtonStyle.Secondary },
    { label: 'Next', id: ButtonPaginatorID.Next, type: ButtonStyle.Secondary },
    { label: 'Delete', id: ButtonPaginatorID.Delete, type: ButtonStyle.Danger }
);

paginator.addPages(
    { content: 'Page 1' },
    { content: 'Page 2', embeds: [] },
    { content: 'Page 3' },
    { content: 'Page 4', files: [] },
    { content: 'Page 5' }
);

await paginator.send(SendMethod.Reply, {
    onNotAuthor: async (i) => {
        await i.reply({
            content: 'You are not the author of this interaction.',
            ephemeral: true
        });
    },
    disableButtonsOnLastAndFirstPage: true
});

↑ Table of Contents

Buttons confirm (Yes/No/Cancel)

import { ButtonBuilder, ButtonStyle } from 'discord.js'; 
import { ButtonsConfirmBuilder, ButtonConfirmID, SendMethod } from 'aqify.js';

const confirm = new ButtonsConfirmBuilder(interaction, {
    buttons: [
        new ButtonBuilder()
            .setCustomId(ButtonConfirmID.Yes)
            .setLabel('Yes')
            .setStyle(ButtonStyle.Primary),
        new ButtonBuilder()
            .setCustomId(ButtonConfirmID.No)
            .setLabel('No')
            .setStyle(ButtonStyle.Danger)
    ],
    on: {
        yes: async (i) => {
            await i.reply({ content: 'Yes button blocked!' });
        },
        no: async (i) => {
            await i.reply({ content: 'No button clicked!' });
        }
    },
    time: 30000
});

await confirm.send(SendMethod.Reply, {
    home: {
        content: 'Click on Yes or No below!'
    },
    onNotAuthor: async (i) => {
        await i.reply({
            content: 'You are not the author of this interaction.',
            ephemeral: true
        });
    },
    disableButtonsOnEnd: true
});

↑ Table of Contents

Dropdown roles

import { DropdownRolesBuilder } from 'aqify.js';
import { StringSelectMenuBuilder } from 'discord.js';

const menu = new DropdownRolesBuilder(client, [
    {
        roleId: '123456789012345',
        component: { label: 'Role 1' }
    },
    {
        roleId: '123456789012345',
        component: { label: 'Role 2' }
    }
], {
    on: {
        roleAdded: {
            content: (role) => `You have got the role **${role.name}**!`
        },
        roleRemoved: {
            content: (role) => `I have removed the role **${role.name}** from you!`
        }
    }
});

await menu.create(interaction.channelId,
    new StringSelectMenuBuilder()
        .setCustomId('your_epic_custom_id')
        .setPlaceholder('Select a role'),
    {
        message: {
            content: 'Select a role here by clicking on the menu below!'
        }
    }
);     

↑ Table of Contents

YouTube API Manager

Warning: This is a simple manager made for Discord bot commands such as YouTube video/channel statistics command, and not for advanced ones like playlists, watermarks... etc.

import { YouTubeAPIManager } from 'aqify.js';

const manager = new YouTubeAPIManager('Your YouTube API key');

await manager.searchVideos('How to make a Discord bot', { maxResults: 3 });
await manager.searchChannels('T.F.A 7524');

await manager.getVideo('A YouTube video ID');
await manager.getChannel('A YouTube channel ID');

↑ Table of Contents

Plugins

1st Note: It's recommended to use these plugins in the event ready from the client to make sure that the bot is on and ready to use.

<client>.on('ready', () => {
    new Plugin();
});

2nd Note: If you want to edit the messages from one of the plugins, go to node_modules/aqify.js/class/plugins.js, and then find the class which you want to edit.

import * as AqifyJS from 'aqify.js';

new AqifyJS.ModmailPlugin(client, {
    guild: 'Your server ID',
    parent: 'The mails category ID',
    managerRoles: ['Staff role ID']
});

new AqifyJS.TicketPlugin(client, {
    guild: 'Your server ID',
    parent: 'The tickets category ID',
    managerRoles: ['Staff role ID']
}).createPanel('The panel channel ID');

new AqifyJS.BoostDetectorPlugin(client)
    .on('boostCreate', (member) => console.log(member.user.tag + ' has boosted the server!'))
    .on('boostRemove', (member) => console.log(member.user.tag + ' has unboosted the server...'));

new AqifyJS.SuggestionPlugin(client, 'Suggestion channel ID', {
    message: {
        content: (message) => `<@${message.author.id}>`,
        embeds: (message) => [
            new EmbedBuilder()
                .setTitle('New suggestion!')
                .setAuthor({
                    name: message.author.tag,
                    iconURL: message.author.displayAvatarURL()
                })
                .setDescription(message.content)
                .setColor('Blurple')
        ]
    },
    reactions: ['👍', '👎']
});

↑ Table of Contents

Read the docs to get all the information about other classes/functions/variables! Click here

Developers

License

GPL-3.0; General Public License v3.0.

Join our Discord server if you need any help!

© 2023, Aqify.js

Package Sidebar

Install

npm i aqify.js

Weekly Downloads

58

Version

2.5.0

License

GPL-3.0

Unpacked Size

240 kB

Total Files

53

Last publish

Collaborators

  • tfagaming