# @jcauman23/discordeco

> MongoDB Economy frameword for discord.js

Latest version **1.2.0** (published 2022-04-30) · ISC license · 0 weekly downloads

## Install

```sh
npm install @jcauman23/discordeco
pnpm add @jcauman23/discordeco
yarn add @jcauman23/discordeco
bun add @jcauman23/discordeco
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.0 |
| Published | 2022-04-30 |
| First published | 2021-08-30 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 12.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | DarkPheonix#1001 |
| Maintainers | jcauman23 |
| Keywords | MongoDB, discord.js, Economy |

## Links

- npm: https://www.npmjs.com/package/@jcauman23/discordeco
- npm.io page: https://npm.io/package/@jcauman23/discordeco

## Alternatives

- [angular-pipes](https://npm.io/package/angular-pipes.md) — 5.6K weekly downloads
- [@ng-web-apis/midi](https://npm.io/package/@ng-web-apis/midi.md) — 2.6K weekly downloads
- [happn-3](https://npm.io/package/happn-3.md) — 1.6K weekly downloads
- [@opensip-cli/lang-go](https://npm.io/package/@opensip-cli/lang-go.md) — 1.2K weekly downloads
- [mongoose-typescript](https://npm.io/package/mongoose-typescript.md) — 85 weekly downloads

## Recent versions

- 1.2.0 (latest) — 2022-04-30
- 1.1.0 — 2021-09-01
- 1.0.9-beta — 2021-08-31
- 1.0.8-beta — 2021-08-31
- 1.0.7-beta — 2021-08-31
- 1.0.6-beta — 2021-08-31
- 1.0.5-beta — 2021-08-30
- 1.0.4 — 2021-08-30
- 1.0.3 — 2021-08-30
- 1.0.2 — 2021-08-30
- 1.0.1 — 2021-08-30
- 1.0.0 — 2021-08-30

## README

[![NPM](https://nodei.co/npm/@jcauman23/discordeco.png)](https://www.npmjs.com/package/@jcauman23/discordeco/)

# DiscordEco
A easy npm package for making economy bots.

# Updates
Added support for MongoDB v6

# Installation
```npm i @jcauman23/discordnsfw```

# Starting
Start off by connecting DiscordEco to MongoDB.
```js
async function ecoInit(){
    const ecoDB = require('@jcauman23/discordeco');
    ecoDB.connect('mongodb+srv://example:example@example.mongodb.net/example');
    await console.log("Connected to the database!");
}
ecoInit()
```

# All Methods
##### createUser(userId, guildId)
Adds a user to the database.

##### deleteUser(userId, guildId)
Deletes a user from the database.

#####  deposit(userId, guildId, amount)
Deposits a certain amount in the database. (Has integrated checking for account, just throw the error and it should work!)

##### giveCoins(userId, guildId, amount)
Gives coins to a user. Adds the user to the database if the user is saved to the database.

##### deductCoins(userId, guildId, amount)
Deducts coins from a user.

##### findUser(userId, guildId)
Finds the user in the database.

##### giveBankSpace(userId, guildId, amount)
Gives bank space to a user.

##### generateLeaderboard(guildId, amount)
Generates a leaderboard. See examples for an example on how to use.

##### withdraw(userId, guildId, amount)
Withdraws a certain amount from the users bank(also has integrated checking.)

# Command Examples
##### Balance Command
```js
    const ecoDB = require('@jcauman23/discordeco');
    const { MessageEmbed } = require('discord.js');

    const member = message.mentions.members.first() || message.member;

    const user = await ecoDB.findUser(member.id, message.guild.id); // Get the user from the database.

    const embed = new MessageEmbed()
    .setTitle(`${member.user.username}'s Balance`)
    .setDescription(`Wallet: ${user.coinsInWallet}
    Bank: ${user.coinsInBank}/${user.bankSpace}
    Total: ${user.coinsInBank + user.coinsInWallet}`);
    
    message.channel.send(embed);
```

##### Beg Command
```js
    const ecoDB = require('@jcauman23/discordeco');

    const randomCoins = Math.floor(Math.random() * 99) + 1; // Random amount of coins.
    
    await ecoDB.giveCoins(message.member.id, message.guild.id, randomCoins);
```

##### Leaderboard Command
```js
    const ecoDB = require('@jcauman23/discordeco');
    const { MessageEmbed } = require('discord.js');
    
    const leaderboard = await ecoDB.generateLeaderboard(message.guild.id, 10);
    
    if (leaderboard.length < 1) return message.channel.send("Nobody's on the leaderboard.");
    
    const mappedLeaderboard = leaderboard.map(i => `${client.users.cache.get(i.userId).tag ? client.users.cache.get(i.userId).tag : "Nobody"} - ${i.coinsInWallet}`);
    
    const embed = new MessageEmbed()
    .setTitle(`${message.guild.name}\'s Leaderboard`)
    .setDescription(`${mappedLeaderboard.join('\n')}`);
    
    message.channel.send(embed);
```
# Coming Soon
 - Work
 - Rob
 - Gamble commands.

---
_Source: https://npm.io/package/@jcauman23/discordeco · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
