blwebhooks
Version:
Webhook Vote Reciever For Lists Such As top.gg, InfinityBotList and Many More To Come!
388 lines (288 loc) • 11.2 kB
Markdown
[](https://snyk.io/test/github/Strider-Bot/BLWebhooks)
[](https://badge.fury.io/js/blwebhooks)
[](https://david-dm.org/Strider-Bot/BLWebhooks)
[](https://packagephobia.com/result?p=blwebhooks)
[](https://www.jsdelivr.com/package/npm/blwebhooks)
[](https://deepscan.io/dashboard#view=project&tid=12955&pid=15994&bid=330623)
[](https://snyk.io/advisor/npm-package/blwebhooks)

[](https://nodei.co/npm/blwebhooks/)
# BLWebhooks, The Next Gen Vote Hooks!
# Table of Contents
- [Installation](#installation)
- [Contributing](#contributing)
- [Supported Libraries](#supported-libraries)
- [Support Lists](#supported-lists)
- [Usage](#usage)
- [Vote Hooks](#vote-hooks)
- [Events](#events)
- [Vote Database](#vote-database)
- [Other Projects](#our-projects)
# Installation
Need Any Help Setting It Up? Join Our [Support Server](https://discord.gg/u2kKBbtkTy).
It's intended to be used with discord.js v14.
BLWebhooks fully supports external and discord.js internal sharding, make sure to enable the Sharded Client Option.
BLWebhooks is maintained and supported by the [JMServices Team](https://jmservices.pro).
## NPM (recommended)
```js
# Stable
npm i --save blwebhooks
# Nightly Builds
npm i --save blwebhooks
```
## Yarn
```js
# Stable
yarn add blwebhooks
# Nightly Builds
yarn add blwebhooks
```
# Supported Libraries
| Name | Features |
| ------------------------------------------------------ | ------------------------------------------ |
| [discord.js](https://www.npmjs.com/package/discord.js) | `DATABASE`, `EXPRESS`, `HOOKS`, `SECURITY` |
| [Eris](https://www.npmjs.com/package/eris) | `EXPRESS`, `HOOKS`, `SECURITY` |
# Supported Lists
| Name | Features | UserID | BotID | userName | Event Name |
| --------------- | ------------------- | ------ | ----- | -------- | ----------- |
| top.gg | `DATABASE`, `HOOKS` | true | true | false | topgg-voted |
| InfinityBotList | `DATABASE`, `HOOKS` | true | true | false | IBL-voted |
| VoidBots | `DATABASE`, `HOOKS` | true | true | false | VB-voted |
| DiscordLabs | `DATABASE`, `HOOKS` | true | true | false | DL-voted |
| Blist | `DATABASE`, `HOOKS` | true | true | false | BLT-voted |
| DiscordBots.co | `DATABASE`, `HOOKS` | true | true | false | DBC-voted |
| ParadiseBotList | `DATABASE`, `HOOKS` | true | true | true | PBL-voted |
# Future Lists
| Name | Features | ETA |
| ------ | ------------------- | --- |
| Botrix | `DATABASE`, `HOOKS` | N/A |
# Usage
### Import the lib via ES6 or commonJS modules
```js
// ES6
import * as blwebhooks from "blwebhooks";
// or commonJS
const blwebhooks = require("blwebhooks");
```
### With discord.js
```js
const { Client } = require("discord.js");
const client = new Client({
intents: []
});
const { WebhooksManager } = require("blwebhooks");
const voteClient = new WebhooksManager(client, 80, {
database: "none", // mongoose or sqlite3
protocol: "discordjs", // Define the discord client
string: "mongodb://", // Only Use This If The Database Is Set To Mongoose
extra: {
extraLogging: false, // This will enable extraLogging {Debugging}
extraProtection: true, // Leave Enabled Unless Using Small Amount Of RAM
proxyTrust: false, // Enable this if your behind a proxy, Heroku.
},
});
// Attach to client
client.voteManager = voteClient;
```
### With Eris
```js
const Eris = require("eris");
var bot = new Eris("BOT_TOKEN");
// Replace BOT_TOKEN with your bot account's token
bot.on("ready", () => {
// When the bot is ready
console.log("Ready!"); // Log "Ready!"
});
const { WebhooksManager } = require("blwebhooks");
const voteClient = new WebhooksManager(bot, 80, {
database: "none", // mongoose or sqlite3
protocol: "eris", // Define the discord client
string: "mongodb://", // Only Use This If The Database Is Set To Mongoose
extra: {
extraLogging: false, // This will enable extraLogging {Debugging}
extraProtection: true, // Leave Enabled Unless Using Small Amount Of RAM
proxyTrust: false, // Enable this if your behind a proxy, Heroku.
},
});
// Attach to client
bot.voteManager = voteClient;
bot.connect(); // Get the bot to connect to Discord
```
### Vote Storage
```js
// Set the vote storage in the voteClient
const voteClient = new WebhooksManager(client, 80, {
database: "mongoose", // mongoose or sqlite
string: "mongooseDB-URL",
extra: {
extraLogging: false,
extraProtection: true,
proxyTrust: false,
},
});
```
For usage on pulling data see the [Database Vote](#database-vote) Section.
### Extended Security
```js
// You can enable this via the voteClient
const voteClient = new WebhooksManager(client, 80, {
database: "mongoose",
string: "mongooseDB-URL",
extra: {
extraLogging: false,
extraProtection: true, // Enable this here
proxyTrust: false,
},
});
```
### Proxy Trust
```js
// Enable this in the voteClient
const voteClient = new WebhooksManager(client, 80, {
database: "mongoose",
string: "mongooseDB-URL",
extra: {
extraLogging: false,
extraProtection: true,
proxyTrust: true, // Enable it here
},
});
```
### Test Events
```js
// Emit a test event to test your Voted Event
voteClient.testVote(userID, botID);
```
# Vote Hooks
**TopGG Vote Hooks:**
```js
// This will listen to votes from top.gg, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.topggVoteHook(url, auth, true);
// This code will run after a new vote was received from top.gg
client.on("topgg-voted", async function (userID, botID, type) {
console.log(userID);
});
```
**InfinityBotList Vote Hooks:**
```js
// This will listen to votes from InfinityBotList, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.IBLVoteHook(url, auth, true);
// This code will run after a new vote was received from InfinityBotList
client.on("IBL-voted", async function (userID, botID, type) {
console.log(userID);
});
```
**VoidBots Vote Hooks:**
```js
// This will listen to votes from VoidBots, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.VoidBotsVoteHook(url, auth, true);
// This code will run after a new vote was received from VoidBots
client.on("VB-voted", async function (userID, botID) {
console.log(userID + " Voted For " + botID);
});
```
**DiscordLabs Vote Hooks:**
```js
// This will listen to votes from DiscordLabs, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.DiscordLabsVoteHook(url, auth, true);
// This code will run after a new vote was received from DiscordLabs
client.on("DL-voted", async function (userID, botID, wasTest) {
console.log(`${userID} Voted For ${botID}. Was Test: ${wasTest}`);
});
```
**Botrix Vote Hooks:**
```js
// This will listen to votes from Botrix, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.BotrixVoteHook(url, auth, true);
// This code will run after a new vote was received from Botrix
client.on("BTR-voted", async function (userID, botID) {
console.log(`${userID} Voted For ${botID}.`);
});
```
**BList Vote Hooks:**
```js
// This will listen to votes from BList, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.BListVoteHook(url, auth, true);
// This code will run after a new vote was received from BList
client.on("BLT-voted", async function (userID, botID) {
console.log(`${userID} Voted.`);
});
```
**DiscordBots.co Vote Hooks:**
```js
// This will listen to votes from BList, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.DBCVoteHook(url, auth, true);
// This code will run after a new vote was received from BList
client.on("DBC-voted", async function (userID, botID) {
console.log(`${userID} Voted.`);
});
```
**ParadiseBotList Vote Hooks:**
```js
// This will listen to votes from BList, the url is the end not
// including the / and auth is the webhook auth. You can enable and
// disable using true or false at the end
client.voteManager.PBLVoteHook(url, auth, true);
// This code will run after a new vote was received from BList
client.on("PBL-voted", async function (userID, botID, userName) {
console.log(`${userName} (${userID}) Voted For <#${botID}>`);
});
```
# Events
**Global Voted Event**
```js
// This will run after any vote has been received, use this if you don't want seprate events for each list
client.on("vote", async function (userID, botID, List) {
console.log(`${userID} Voted For ${botID} on ${List}`);
});
```
**Vote Expired Event**
```js
// This will run after the vote expires, this will be different for each list
client.on("vote-expired", async function (userID, botID, List) {
console.log(userID);
});
```
**Error Event**
```js
// This code will run in the event of a error, normally it will just console.log the error but you can add custom error events here
client.on("webhookError", async function (error) {
console.log(userID);
});
```
# Vote Database
The vote Database feature will save the total votes a User had made for your bot / server, it will add all the vote in a database and the methods below show you how to set it up and pull data.
**discord.js example**
```js
// The DB can be set to either mongo, sqlite
// Only set the string if using the mongoose db
voteClient.setStroage(DB, String);
// MongooseDB Example (recommended)
voteClient.setStroage("mongoose", "mongodb://localhost/my_database");
// SQLITE Example
voteClient.setStroage("sqlite3");
```
**Pulling User Votes**
```js
voteClient.getVotes(userID, option);
```
_Options:_<br>
- `daily` - Get Daily Votes<br>
- `weekly` - Get Weekly Votes<br>
- `monthly` - Get Monthly Votes<br>
# Our Projects
- [DPost](h) (This Is A Work In Progress, Beta Out Now!)