discordxp-sql
Version:
Simple Discord XP system using a SQLite database
116 lines (93 loc) • 2.37 kB
Markdown
## 🔨 Installation
```
npm i discordxp-sql
```
### Setup
```
const { GatewayIntentBits, Client, Collection, ActivityType, Partials } = require('discord.js');
const BotClient = new Client({ // Create our discord bot client
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers, // IMPORTANT
],
partials: [
Partials.User,
Partials.Channel,
Partials.Message,
Partials.GuildMember
],
});
var Leveler = require('discordxp-sql');
var leveler = new Leveler({
client: BotClient, // Set the value to your discord bot client
path: 'path/to/database.db' // Set this to where you want your database to be
});
```
### Usage
```
// Below where we defined the leveler
BotClient.on('messageCreate', async (message) => {
leveler.handleLevel(message, 3.7).then(async (lvl) => {
if (lvl) {
leveler.setLevelUpMessage('{user} reached level {level}!')
await leveler.levelUp(lvl, message);
var roles = [
{
level: 12,
roleId: '1004211232850575411',
sticky: true // Sticky roles are permanent
},
{
level: 14,
roleId: '997355373784727562',
sticky: false // Non sticky roles are removed at next role level
},
];
await leveler.handleRoles(lvl, message, roles);
}
});
});
```
### Get a user
```
var userId = '1234567890';
var guildId = '3456789012';
var user = await leveler.getUser(userId, guildId);
```
### View leaderboard
```
var guildId = '3456789012';
var lb = await leveler.leaderboard(guildId); // Fetches top 10
lb = await leveler.leaderboard(guildId, 2); // Fetches next 10
```
### Set level
```
await leveler.setLevel({
level: 1
userId: '1234567890',
guildId: '3456789012'
});
```
### Add XP
```
await leveler.addXp({
amount: 200
userId: '1234567890',
guildId: '3456789012'
});
```
### Subtract XP
```
await leveler.subXp({
amount: 200
userId: '1234567890',
guildId: '3456789012'
});
```
### Delete a guild
```
var guildId = '3456789012';
await leveler.deleteGuild(guildId);
```