3.0.3 • Published 3 years ago

discord-money-mongoose v3.0.3

Weekly downloads
5
License
MIT
Repository
github
Last release
3 years ago

discord-money-mongoose

npm NPM npm

Money manager for discord.js bots

Updates!

  • 2.0.0, Updated to discord.js version v12
  • 3.0.0, Rewriten in Typescript .Now should be faster and more compatible, now it has more tools built into it

Important!

This module requires discord.js and mongoose preinstalled

Features!

  • Fetch multiple users
  • Leaderboard ready auto sort dmm.getLeaderboard()
  • get formated RichEmbed Leaderboard for simple use
  • Set user's money
  • Increase money of a user
  • Decrease money of a user
  • Delete user document
  • Delete multiple user documents
  • Use custom fields for money
  • Custom name for collection
  • Can put custom query resolver
  • Provide a custom model with custom resolver

to-do:

  • Suggest what to add next at github

Guides

Installation

$ npm install discord-money-mongoose

Example

  • Here's a example of using this module
const DiscordMoneyMongoose = require('discord-money-mongoose');
const { Client } = require('discord.js');
const { connect } = require('mongoose');

async function init() {

    await connect('MONGO URI', {
        useNewUrlParser: true,
        useUnifiedTopology: true
    });

    const bot = new Client({ disableEveryone: true });

    const money = new DiscordMoneyMongoose();

    bot.on('message', async msg => {
        if (msg.author.bot || !msg.content.startsWith('!')) return;
        if (msg.channel.type === "dm") return;
        const [command, ...args] = msg.content
            .slice('!'.length)
            .split(' ');

        switch (command.toLowerCase()) {
            case "money":
                msg.channel.send(`Money: ${await money.getMoney(msg.member)}`);
                break;
            case "increase":
                await money.increaseMoney(msg.member, args[0])
                msg.channel.send(`Increased by ${args[0]}`);
                break;
            case "decrease":
                money.decreaseMoney(msg.member, args[0]);
                msg.channel.send(`Decreased by ${args[0]}`);
                break;
            case "set":
                money.setMoney(msg.member, args[0]);
                msg.channel.send(`Set to ${args[0]}`);
                break;
            case "usermoney":
                msg.channel.send(`${msg.mentions.members.first()} has ${await money.getMoney(msg.mentions.members.first())} `);
                break;
            case "setusermoney":
                money.setMoney(msg.mentions.members.first(), args[1]);
                msg.channel.send(`Set ${msg.mentions.members.first()} 's money to ${args[1]}`);
                break;
            case "leaderboard":
                msg.channel.send(await money.formatLeaderboard(msg.guild));
                break;
        }
    });

    bot.login('BOT TOKEN');
}

init();

Syntax

Main

const DiscordMoneyMongoose = require('discord-money-mongoose');
const _DiscordMoneyMongoose = new DiscordMoneyMongoose(options); 

Options

Parametersinfo
modeNameCustom collection name
additionalSchemaAdd aditional values to the default schema
customModelSet to use a custom model

Options.customModel

  • Defaults to money field if nothing is provided
Parametersinforequired
modelCustom model to useYes
queryCustom query filter for finding the userRecommended
multipleQueryQuery for finding multiple membersNo
customGuildIdQueryQuery for finding members inside guildNeeded for leaderboard
interface {
    modelName?: string;
    additionalSchema?: SchemaDefinition;
    customModel?: {
        query?: (member: GuildMember) => MongooseFilterQuery<Pick<Document, "_id">>;
        model: Model<Document, {}>;
        multipleQuery?: (members: GuildMember[]) => MongooseFilterQuery<Pick<Document, "_id">>;
        customGuildIdQuery?: (guildID: string) => MongooseFilterQuery<Pick<Document, "_id">>;
    }
}

async getData(member: GuildMember)

  • Use await when calling function
ParametersFirst
InputGuildMember
TypeGuildMember
ReturnsType
Members collection documentPromise<Document | null>

async getRawData(member: GuildMember)

  • Use await when calling function
ParametersFirst
InputGuildMember
TypeGuildMember
ReturnsType
Members collection documentPromise<Pick<Document, "_id"> | null>

async getCustomField(member: GuildMember, field: string)

  • Use await when calling function
ParametersFirstSecond
InputGuildMemberCustom field
TypeGuildMemberString
ReturnsType
Members collection documentPromise<Promise<any | null>>

async getMoney(member: GuildMember, customField?: string)

  • Use await when calling function
ParametersFirstSecond
InputGuildMemberCustom field
TypeGuildMemberString
ReturnsType
User's current moneyPromise

async deleteMoney(member: GuildMember)

  • Use await when calling function
ParametersFirst
InputGuildMember
TypeGuildMember

async deleteMany(member: GuildMember)

  • Use await when calling function
ParametersFirst
InputArray of GuildMember
TypeGuildMember[]

async increaseMoney(member: GuildMember, increase: number, customField?: string)

ParametersFirstSecondThird
InputGuildMemberThe amount of money to increaseCustom field
TypeGuildMemberNumberstring

async decreaseMoney(member: GuildMember, decrease: number, customField?: string)

ParametersFirstSecondThird
InputA GuildMemberThe amount of money to decreaseCustom field
TypeGuildMemberNumberstring

async setMoney(GuildMember, increase)

ParametersFirstSecondThird
InputA GuildMemberThe amount to set user's moneyCustom field
TypeGuildMemberNumberstring

async increaseMultiple(members: GuildMember[], increase: number, customField?: string)

ParametersFirstSecondThird
InputAn array of GuildMembersThe amount of money to increase for usersCustom field
TypeArrayNumberstring

async decreaseMultiple(members: GuildMember[], decrease: number, customField?: string)

ParametersFirstSecondThird
InputAn array of GuildMembersThe amount of money to decrease for usersCustom field
TypeArrayNumberstring

async setMultiple(members: GuildMember[], amount: number, customField?: string)

ParametersFirstSecondThird
InputAn array of GuildMembersThe amount of money to set for usersCustom field
TypeArrayNumberstring

async getMultiple(members)

ParametersFirst
InputAn array of GuildMembers
TypeArray
ReturnsType
Array of member documentsArray

async getRawMultiple(members)

ParametersFirst
InputAn array of GuildMembers
TypeArray
ReturnsType
Array of member documentsArray<Document<Pick<"_id", {}>>>

async getLeaderboard(guild: Guild, limit: number, options?: { customField?: string, useFetch?: boolean })

ParametersFirstSecondThird
InputInput a GuildMax number of users returnedOptions
TypeGuildnumberObject

Options

ParametersCustom fieldUse Fetch
InputCustom fieldUse fetch functionallity in discord.js
Typestringboolean
ReturnsType
Array of members and moneyArray<{ member: GuildMember, money: number }>

async formatLeaderboard(guild: Guild, options?: { customField?: string, color?: ColorResolvable, pageSize?: number, page?: number, title?: string })

ParametersFirstSecond
InputInput a GuildOptions
TypeGuildObject
OptionscustomFieldpageSizetitle
InputCustom fieldMax membersTitle of the embed
Typestringnumber
ReturnsType
Returns a RichEmbed to be used in discord messageRichEmbed

#How to?

Finishing it later time

License

This project is licensed under the MIT License

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

3.0.0

3 years ago

2.0.0

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago