UNPKG

new-dblapi

Version:
117 lines (96 loc) 6.12 kB
# Simple, Easy, discordbots.org API wrapper. ``` npm i new-dblapi ``` ```javascript const DBL = require('new-dblapi') const dbl = new DBL(token[, options[, client]]) ``` #### -OR- ```javascript const DBL = require('new-dblapi') const dbl = new DBL(token[, client]) ``` *** # First steps It is very important you actually have a discordbots.org token for your bot to use this. In matter of fact, it doesn't work without it! Head to https://discordbots.org/api/docs#mybots, make sure your signed in. Nothing appearing? Make sure you have the right account and your bot is since verified! I suggest you make this a variable on your client so you can access it anywhere, it's just like setting up any other variable, but instead of `const var_name = 123` it'd be `clent.varname = 123` this would make it a variable on the client. ```javascript const DBL = require('new-dblapi') client.dbl = new DBL(token[, options[, client]]) ``` #### -OR- ```javascript const DBL = require('new-dblapi') client.dbl = new DBL(token[, client]) ``` # Then... After you have a **discord.js or eris** bot (if you don't I don't even know why your here) and a dbl token you call the constructor, it'll look something like: ```javascript const DBL = require('new-dblapi') const dbl = new DBL(token[, options[, client]]) ``` #### -OR- ```javascript const DBL = require('new-dblapi') const dbl = new DBL(token[, client]) ``` Look familiar? It should, it's just above this. # But what is options? Options is an object consisting of 4 main things: delay (posting stats), port, auth and path. All 3, port, auth and path are for the webhook. **If you provide a port, you must provide an auth, but path is optional**. So what does it look like? ```javascript const DBL = require('new-dblapi') const dbl = new DBL('your-dbl-token', {delay: 5000000, port: 5555, auth: "Auth", path: "dblhook"}, client) ``` *** # Webhook Stuff So you want a webhook to receive your votes? This is very easy to do and is all done in the *optional* options. That's right you don't even need them, but if you want a webhook, you do. Theres only two required parameters to get webhooks working all good, that's a port for the server to run on and your webhook's authorization. You can also provide a cool custom path too! ```javascript const DBL = require('new-dblapi') const dbl = new DBL(token, {port: 5000, auth: "Auth", path:"voteswebhook"}) dbl.on('vote', (vote) => { // Your code }) ``` **The default path is /vote/**, notice the `/` at the end, this is important, make sure it has that ending slash for any path you choose in your dbl webhook options on your edit page. So what does `vote` return? Vote returns exactly what the original dblapi does. This means you get a user by doing `vote.user`. *** # Vote embed option So you want to send vote embeds? This makes that very easy. **Inside** of your options object, add a voteEmbed object, so it'd look like this `const dbl = new DBL('your-dbl-token', {delay: 6000000, port: 5555, auth: "auth", path: "votes", voteEmbed:{}}, client)` Inside of the vote embed, theres only 1 required parameter: a webhook URL called `url`. Apart from this, there are fields (an array of objects), title, color (a hex string, no '#' so green would be '00ff00') and thumbnail (a url). It'd look something like this: ```javascript const DBL = require('new-dblapi') const dbl = new DBL(token, {port: 5000, auth: "Auth", path:"votes", voteEmbed:{url:"webhook url",fields:[{name:"name", value:"value"}],color:"00ff00"}}, client) ``` **This does require a client. Fields must have a name and value.** You can use {user} or {id} in fields to replace it with the username or their id. You can now also have a voteLock feature that will store votes for a certain amount of time. This is in the `voteLock` object in options. It has "on" and "timeOut". On is a boolean that defines if it's on or not and timeOut defines the time (in milliseconds) a vote will last for. ```javascript const DBL = require('new-dblapi') const dbl = new DBL('your-dbl-token', {delay: 5000000, port: 5555, auth: "Auth", path: "dblhook", voteLock:{on:true,timeOut:50000}}, client) ``` You can check votes by doing ```javascript let votes = await dbl.db votes.includes(id) // true or false ``` `dbl.db` will return a promise array of id's of people who have voted within your timeOut time. **Timeouts will not be exact, it will check the database every 5 minutes and delete ones past the voteLock.timeOut time** # Other cool stuff What else can I do with this package? Theres some cool stuff you can do with this package, well bascially everything the original one can do. How do I post stats? This one's easy, just provide a client (**discord.js or eris client**). If you dont provide a delay in `options`, it will automatically be 30 minutes, the minimum is 15 minutes (0 to disable). What about other methods? There are 8 whole methods. `getUser(id)`, `getBot([id[, votes]])` (votes is false by default, add true to get last 1000 votes), `getBots([query])`, `checkVote(id)`, `getStats([id])`, `getWidget([id[, options])`, `postStats([client])` *** `getUser(id)` Returns a user from the discordbots api `getBot([id[, votes]])` or `getBot([votes])` Gets a bot from the discordbots api. It will get your bot by default and if you put votes to true, it will return an array of the last 1000 votes. `getBots([query])` Gets multiple bots. Query options are limit, offset, search, sort and fields. `checkVote(id)` Checks a users vote. Returns true or false. `getStats([id])` Gets a **bots** stats if it's listed on discordbots.org. It will return the full bot object. `getWidget([id[, options])` or `getWidget([options])` Gets a bots widget, has 7 options (object): topcolor, middlecolor, usernamecolor, certifiedcolor, datacolor, labelcolor and highlightcolor. `postStats([client])` Posts your bot's stats. Requires that you had a client when calling the constructor OR you provided a client when calling. *** This project may stay updated when I get time. Will I add requests from the github? Yes. Do I use new-dblapi? Yes, I made it, so I'll use it.