#topgg-api

1 messages · Page 27 of 1

arctic arch
#

and obviously can not happen

tough yoke
#

Oh yeah now i got it

arctic arch
#

and what just came to my mind is that eris-sharder might share tcp connections

#

but you'd get webhook events on all shards

idle haven
#

Best is to make a single service that handles the webhooks anyway. There is no reason to let every of your sharded instance handle it individually.

#

Costs more runtime and only causes headachses

tough yoke
#

the on api only shows daily votes and you need to use webhook for month vote?

calm torrent
#

yes, just use webhooks, what's so hard about it? GWcfcThonk

tough yoke
#

Webhooks sends if unvote?

median umbra
#

Can I get someone to take me out of the NFSW thing? I don't like NSFW at all

restive otter
#

why ask here?

median umbra
#

I just want to not see the NFSW channel

soft drum
#

do -nsfw

tough yoke
#

^

median umbra
#

Okay

#

-nfsw

#

,

restive otter
#

not here

frail meadow
restive otter
arctic arch
#

it works here

restive otter
#

doesn’t it work any channel Luca commands?

sleek sinew
tough yoke
#

Need an api ratelimit prevent like discord bot event ratelimit handler event. To dblapi.js and all wrappper or to api

inner venture
#

i think they got rid of it

little harbor
#

Yeah you can't set onlyids anymore

#

not that i know of at least

cobalt ruin
#

onlyids was deprecated

tough yoke
trim bluff
#

Should I continue to use my snekfetch implementation or use the library? I'm using Discord.JS.

snow fiber
#

IMO manually gives you more control

#

Are you doing vote stuff as well or just stat posting?

trim bluff
#

Just stat posting right now.

snow fiber
#

Then I'd stay with manual

restive otter
#

I'd just stay with the good ol snekfetch then

trim bluff
#

Okay, thanks.

snow fiber
#

IMO it's way easier to handle stats to other botlists

#

With my lib, aiohttp, you can just instance a session and connect to multiple botlists to post stats

#

Imagine every botlist having their own lib

trim bluff
cobalt ruin
#

good choice

sleek sinew
inner venture
#

@sleek sinew its v1.0 atm

#

but its a bit out of date tbh

#

i only realized that theyre updated some portions of the api without me really knowing

sleek sinew
#

Oh ok, thanks

lost summit
#
const DBL = require("dblapi.js");
const dbl = new DBL('Your discordbots.org token');

if(dbl.hasVoted("129908908096487424")){
    message.channel.send('you have upvoted')
}else {
    message.channel.send(you have not upvoted)
}
#

would that work

frail meadow
#

im assuming theres gonna be api endpoints for servers?

arctic arch
#

soon™

frail meadow
#

damn, still gotta get the go lib done for bots haha

edgy nexus
#

@lost summit no

#

message would never be defined

lost summit
#

ok

#

what would i do then @edgy nexus

edgy nexus
#

i would use a discord webhook

#

to post the message

lost summit
#

the message sends i just wanted to know if thats the proper way to check if someone has upvoted

#

because i haven't upvoted my bot and it sends the message saying i have

sleek sinew
#

I did ```java
DiscordBotListAPI api = new DiscordBotListAPI.Builder()
.token("token I got from discordbots.org")
.build();

    List<String> voterIds = api.getVoterIds("346353957029019648");```

and voterIds is just getting set to null without any exceptions being thrown. Is this supposed to happen?

inner venture
#

@sleek sinew yeah the voter ids endpoint got removed actually

sleek sinew
#

Oh, so now I can only do getVoters()?

inner venture
#

yeah for now atleast

sleek sinew
#

Okay, thanks

inner venture
#

i need to find a way to add support for the check endpoint

#

and by find a way i mean like

#

just do it

neat bolt
#
const dbl = new DBL(yourDBLTokenHere, { webhookPort: 5000, webhookAuth: 'password' });
dbl.webhook.on('ready', hook => {
  console.log(`Webhook running at http://${hook.hostname}:${hook.port}${hook.path}`);
});
dbl.webhook.on('vote', vote => {
  console.log(vote);
  // Do what you need to do
});``` 
Does this work right^?
plain timber
inner rune
#

Client is not passed

#

Or client is not available yet

plain timber
#

well before that i did client.user.setPresence and that worked

restive otter
plain timber
#

???

restive otter
#

Let me add it

vagrant kayak
#

Well for one, wrong channel, and for two I have no idea what you're doing

dreamy iris
edgy nexus
#

and this channel is only for the DBL API

restive otter
tough island
#

Hello, anyone know how long it takes to accept a Bot? Mine takes more than 14 hours without approval, have not accepted or rejected, but I want to know the reason for the delay

dense compass
#

Most of the time it can take around a day for a bot to be accepted however sometimes this can also be longer

#

Really depends on if the mods have time for it

tough island
#

All right, thanks man

tranquil rose
#

@stuck sluice please keep irrelevant messages out of this channel

#

this is strictly for discussion of the API

gray root
#

is there a query parameter i can add on the widgets to make em larger?

tranquil rose
#

@junior goblet ^^ mute this guy pls

#

<@&304313580025544704> spam

#

Please

#

Mute

#

Dude shut the fuck up

#

Whoever banned him thx

tardy crater
#

Np

proud sphinx
#

what is the java's lib latest version?

inner venture
#

v1.0

#

It's not up to date with the API though

proud sphinx
#

so what should I use?

arctic arch
#

@restive otter what version of dblapi.js are you on

restive otter
#
    "dblapi.js": "^1.1.1",```
arctic arch
#

update to 2.0.0

restive otter
#

okay

arctic arch
restive otter
#

Yeah

#

i know how to use it

#

@arctic arch thx :)

#

fixed

toxic acorn
#

i need to use this for the api tight? npm i dblapi.js

steady sundial
#

Yea

shut ibex
#

you dont necessarily need to use the module for the api

restive otter
#

u can just use request/snekfecth to post and get information

next mantle
#

What is that error supposed to mean ?

charred ocean
#

im about to add webhooks to my bot for vote checking but ive just noticed that sometimes the authorization header is blank. this isn't normal, right?

#

and i changed the authorization key a few times during my testing and noticed that sometimes the authorization header in the request is an old authorization key

edgy nexus
#

@next mantle share the full error

next mantle
#

That's the full response

#

That's what I don't get

#

The endpoint, the authorization token, the request body, everything is correct

edgy nexus
#

then most likely there's an issue with the server

sudden rampart
#

iirc that's a 5xx message

next mantle
#

Well so I can't do anything GWchadMEGATHINK

#

Seems to be fixed, I don't know how but...

inner rune
#

Whats the new cool way to get dbl votes now using the dblapi.js

inner rune
#

@arctic arch Any chance you can help me with your dblapi.js lib?

narrow charm
#

Just listen to webhooks @inner rune

inner rune
#

Thats actually what I am working on

narrow charm
#

👍

inner rune
#

right now its being an ass and refusing to use request.body

narrow charm
#

Yet again i would say york has some code related to webhooks sent in yhis channel

inner rune
#

Im not using express

#

so it might not work

narrow charm
#

Hmm I see

#

But you can get idea 😃

inner rune
#

@narrow charm whatts the data property of a http post request?

#

req.data?

#

frick frack patty wack

narrow charm
#

Preety much a yes (as far as i remember)

tough yoke
#

eris-sharding supports dbl wrapper webhook?

arctic arch
#

dblapi.js has webhooks built in

toxic acorn
#

Hey the api for the bot sats that my bot is on 4 servers but he is on 18 how to fix?

arctic arch
#

post the correct amount

restive otter
#

by posting the correct amount to the api

toxic acorn
#

wut

restive otter
#

The api isnt a replacement for discord api

proud sphinx
#

help server count always returns 0 I don't know what to do

#

nvm it's up finally

toxic acorn
#

i just put this in my bot

restive otter
toxic acorn
#

setInterval(() => {
dbl.postStats(client.guilds.size, client.shards.Id, client.shards.total);
}, 1800000);

arctic arch
#

if you're not getting errors, you have 4 servers

toxic acorn
restive otter
#

client.shards.total isnt a thing

arctic arch
#

is your bot even sharded

#

you can remove the shard parts

toxic acorn
#

kk

#

gonna remove t he shard thing

#

removed the shard parts and still showing 4

restive otter
#

then you have 4 guilds

toxic acorn
#

:/

#

it's in 18 u joined all of them lol

restive otter
#

what

#

eval client.guilds.size

toxic acorn
#

i don't have eval command

arctic arch
#

inb4 hard coded

restive otter
#

^ this tbh

toxic acorn
#
bot.on("message", async message => {
    if(message.author.bot) return;
    if(message.channel.type === "dm") return;
    
    setInterval(() => {
        dbl.postStats(client.guilds.size);
    }, 1800000);
    
#

i use this for the servers size

arctic arch
#

oh

#

nononononononononononononononononon

toxic acorn
#

:/

arctic arch
#

every message

#

you set a new interval

restive otter
#

LMFAO

toxic acorn
#

:/

#

so how i do dat

arctic arch
#

does your bot ever crash from being out of memory

#

anyway

#

remove that

toxic acorn
#

no

#

ok

arctic arch
#

and in the new DBL part

restive otter
#

that code wouldn't cause high memory usage just about 1 more request to the api every message

arctic arch
#

do you have client there

toxic acorn
#

const DBL = require("dblapi.js");
const dbl = new DBL(process.env.dblapi, client);

#

this?

arctic arch
#

yea

toxic acorn
#

so i delte this too and what i do

arctic arch
#

the module takes care of posting stats for you

#

no dont delete that one

toxic acorn
#

kk

arctic arch
#

the only code you need for stat posting is that

toxic acorn
#

😮

#

like this ?https://github.com/OdarGM/OdarBot/blob/master/bot.js

arctic arch
#

👍🏻

toxic acorn
#

-,-

arctic arch
#

got any errors?

toxic acorn
#

lemmie check

arctic arch
#

I bet you have reached the ratelimit so you have to wait

toxic acorn
#

no errors

#

xd

#

if doesnt fix the net 2-3 hours i wil ltry to remove it

#

¯_(ツ)_/¯

arctic arch
#

remove what

toxic acorn
#

the thing showing the servers

#

hmm how can i add moving background for my bot?

#

if it's possible

restive otter
#

that isnt api related

toxic acorn
#

oh wring channel

#

sry

toxic acorn
#

Ok i know why it's showing 4 servers but idk how to fix:/ when i tried the api for first time i tried it on my test bot dat is in 4 servers but now it's showing his info on my main bot page

#

:/

restive otter
#

why isn’t it showing

tardy crater
#

did u change the token

toxic acorn
#

how to get new token

tardy crater
#

someone did that yesterday with their test bot

restive otter
#

add console.log(client.guilds.size) somewhere if it says 4 then its on 4 servers if it says otherwise something is wrong at a larger scale

#

I mean i did that but it was only to test

toxic acorn
#

the test bot is on 4 the main is on 18

tardy crater
toxic acorn
#

i am trying to regenrate toekn but is not working

#

it keeps giving me the same

restive otter
#

trust me it isn’t

toxic acorn
#

:/

arctic arch
#

if you're comparing the beginning, the beginning is always the same

toxic acorn
#

:/

#

GWfroggyBlobThonk how to fix

restive otter
#

how to get token GWpingKanyeLUL

toxic acorn
#

but it keeps givig me the same

arctic arch
#

are you sure

restive otter
#

does it tho

toxic acorn
#

ye i tried 2 times

arctic arch
#

compare the ending on the token instead

toxic acorn
#

kk

#

ok 2 times was the same and on the third it gave me diffrent toekn

#

now about how much time it will take to sync?

restive otter
#

18000 milliseconds isn’t it?

toxic acorn
#

😮

restive otter
#

or an extra 0?

toxic acorn
#

¯_(ツ)_/¯

arctic arch
#

it posts on ready and every 30 minutes

toxic acorn
#

😮 so i wait 30 mins

#

kk

toxic acorn
#

still didn't change

restive otter
#

How to send a DM whoever votes for your bot.

elfin solstice
#

you dont

#

but if you really want that use the webhook

restive otter
#

What do we need write in URL field?

#

and the authorization field?

clever viper
#

url to ur webserver

#

authorization to be a "password" to identify if its dbl who used the url

zealous vapor
#

my bot are not listen

calm torrent
restive otter
#

Any example of webhooks.

#

?

calm torrent
#

make a webserver

#

or just use tonkuu's wrapprr

#

if ur js

arctic arch
#

webhook example for js is pinned

tough yoke
#

Anyone can post example the output webhook

arctic arch
restive otter
#

Thanks

clever rock
#
    msg.channel.send(`Commencing manual status update as per your request ufu~`);
         async function csize () { dbl.postStats(client.guilds.size);}
         setTimeout(() => {csize}, 3000);
    msg.channel.send(`Updated with **${client.guilds.size} Servers** Teitoku ufu~`);

it doesnt errors but it didnt update the server count on my bot page its still N/A

clever rock
#

nvm got it fixed

humble bison
#

so eh, can someone give me a little example on how to use the webhooks for votes?
i wanna send a message to my servers discussion channel when someone votes, like
hey {user that voted}, thanks for voting for Givaway today! make sure to vote again in 24 hours at {bot link}!
but yeah, not that good with webhooks

arctic arch
#

what language do you use?

humble bison
#

discord.js

#

oh wait thats lib.. nodejs

arctic arch
#

alright

#

you can use the dblapi.js module

#

there's an example to get you started in pins of this channel

humble bison
#

alright

#

thanks

clever rock
#

just a question, if you want to use the vote feature of the api with a sharded bot, how can you avoid the memory leaks?

arctic arch
#

the webhooks? Run the webhooks on a different process

restive otter
#

or just run it on shard 0

clever rock
#

we'll look into that thanks

#

@restive otter what you mean by shard 0 is the script where sharding manager is started?

restive otter
#

no. like if (client.shard.id === 0) startWebhook()

#

in the ready event or something

clever rock
#

so we would put that on the bot script itself not on the sharding script?

restive otter
#

actually

#

@clever rock is ur bot even sharded?

clever rock
#

im just gonna ready for it

#

its growing fast

restive otter
#

putting it in the sharding manager isnt a bad idea as long as you dont need access to client

clever rock
#

so sharding manager has no access to client but I can put it on the bot script also to make it simpler?

restive otter
#

I mean,
If you need access to client put it in the ready event checking if the shard id is 0 if so start
if you dont need access to client put it in the sharding manager file

clever rock
#

I see thanks for that big enlightment
dblCertified

restive otter
#

good for you

severe mist
#

@restive otter look up

slim path
#

Damn it Seth.

restive otter
#

thanks

slim path
severe mist
#

np

slim path
#

He's an idiot.

autumn valve
#

What

slim path
#

Bye Seth.

restive otter
#

Keep your weeb stuff out of this chat

#

Thanks

autumn valve
#

Ok

slim path
#

I got dragged into this, pls help me

autumn valve
#

Is there a wee.b chat

restive otter
#

yes

lost summit
#

on the dblapi.js the dbl.hasVoted does it only work for the first 100 votes still?

#

ping me with your reply

umbral sable
#
const dbl = require("dblposter"),
dblPoster = new dbl("token", client)
//On event "ready":
dblPoster.bind();
restive otter
#

.bind(client)?

umbral sable
#

ok

#

thnx

toxic acorn
#

[dblapi.js autopost] Failed to post stats: {"error":"Unauthorized"}

#

how to fix this

restive otter
#

Do you set the api token?

arctic arch
#

your token's wrong

toxic acorn
#

how my token is wrong :/

arctic arch
#

it just is

toxic acorn
#

k regenrated new toekn

#

again the sam wtih the new token

arctic arch
#

wait a while

restive otter
#

Look at the end of the token not the start

toxic acorn
#

i mean it gives me the same error

#

should i try dblposter it may work there

arctic arch
#

we dont offer support for dblposter

toxic acorn
#

oh kk

arctic arch
#

your old authentication might still be cached

toxic acorn
#

:/

#

about how much time it will take so it workis with the new toekn

#

token*

cunning forum
#

Are you using your dbl or discord token

toxic acorn
#

dbl

#

it keeps giving me "[dblapi.js autopost] Failed to post stats: {"error":"Unauthorized"}"

tidal burrow
#

could it be that you are trying to post to the wrong bot id?

toxic acorn
#

no i have only 1 bot on the site

tidal burrow
#

but still, maybe you hardcoded the id but accidentally copied the wrong id

toxic acorn
#

nope it's the right id

#

hmm is there any way to remove this then ?

restive otter
#

by using css

toxic acorn
#

what do you mean

restive otter
tardy crater
#

by fixing your api

#

thats how

#

make sure its the right bot token etc in the file

toxic acorn
#

i can send you the code it's just telling me that my token is wrong

tardy crater
#

then put the right one

toxic acorn
#

it is the right one

#

from here right?

tardy crater
#

try regenerating it and posting it

#

not posting it here

#

but ye know in ur code

toxic acorn
#

i did it like 10 times today

tardy crater
#

wat lib are u using

toxic acorn
#

discord js

azure pollen
#

are you using the provided module or doing it yourself?

toxic acorn
#

using the xample in the site

#

example*

azure pollen
#

so what's the problem exactly?

toxic acorn
#

[dblapi.js autopost] Failed to post stats: {"error":"Unauthorized"}

azure pollen
#

@arctic arch

toxic acorn
#

or if there is any way to make it to don't show my servers amount in the site?

restive otter
#
const Discord = require("discord.js");
const client = new Discord.Client();
const snekfetch = require('snekfetch')
const token = 'dbl token';


client.on('ready', () => {

  setTimeout(() => {
  snekfetch.post(`https://discordbots.org/api/bots/stats`)
  .set('Authorization', token)
  .send({"server_count": client.guilds.size})
  .then(() => console.log('Updated discordbots.org stats.'))
  .catch(err => console.error(`Whoops something went wrong: ${err.body.error}`));
}, 3000);


});

client.login("ur bot token")```
if it says "Updated discordbots.org stats." just close the terminal/console
tell me if it works
toxic acorn
#

kk lemmie try

#

[dblapi.js autopost] Failed to post stats: {"error":"Unauthorized"}
and
Whoops something went wrong: Unauthorized

restive otter
#

welp cant help

toxic acorn
#

is there any way so i can remove the server count from my bot profile?

restive otter
#

i think u can but idk how

#

ask Tonkku

toxic acorn
#

Tonkku how to remove the server count from my bot profile?

cunning forum
#

question

restive otter
#

that’s not api

#

help

cunning forum
#

have you tried posting to /api/bots/:botid/stats ?

#

I've had the same issue

narrow charm
#

why do you need to remove server count @toxic acorn ??

cunning forum
#

and posting with the botid included

#

solved my issue

toxic acorn
#

it shows the count for my test bot not the main bot

restive otter
#

lmao

narrow charm
#

Then simply post with main bot.

toxic acorn
#

ye i am doign ti

#

it *

#

but now it gives me wrong token wor smth liek dat

#

so i want to remove it

tardy crater
#

ur obviously not posting it right if it just keeps showing an error

toxic acorn
#
const Discord = require("discord.js");
const bot = new Discord.Client({disableEveryone: true});
const DBL = require("dblapi.js");
const dbl = new DBL("token here", bot);

bot.on("ready", async () => {

setInterval(() => {
    dbl.postStats(bot.guilds.size);
}, 1800000);
restive otter
#

u are missing a }

toxic acorn
#

i know at the end

#

but still not working

restive otter
#

error?

toxic acorn
#

[dblapi.js autopost] Failed to post stats: {"error":"Unauthorized"}

restive otter
#

ur token might be missing some letters or it is cached

toxic acorn
#

what to do if it's chached

restive otter
#

idk

toxic acorn
#

or is there any way to remove the count from my bot profile?

restive otter
#

dont think so

#

by html and css

toxic acorn
#

how show me

restive otter
#

idk

#

and i don’t think you can unless you’re certified

proud sphinx
#

post server_count 0

#

it works

snow fiber
#

Put this in your bot desc

<style>
.is-flex .btns {display: none !important;}
</style>
``` @restive otter
#

I think that should work

#

Although I strongly recommend just fixing your stat posting

#

@toxic acorn sorry I'm sleepy

vital elbow
#

Is ir possible to make server count +10 servers
Instant of adding showing 12 servers

toxic acorn
#

that didn't working

restive otter
#

@vital elbow what do u mean?

vital elbow
#

Like my bot is in 13 servers and have 10500 memvers
Servers: +10
Members: +10k

#

Those are examples

restive otter
#

it has to be a number

vital elbow
#

Can I like
"Fake" server counts and make it less..

#

Not more

#

If 13 :
Server count: 10
If 26 :
Server count: 20

snow fiber
#

@toxic acorn

<style>
.servers {display: none !important;}
</style>
``` that should work
toxic acorn
#

yes thx

restive otter
#

@toxic acorn remove setInterval

#

const Discord = require("discord.js");
const bot = new Discord.Client({disableEveryone: true});
const DBL = require("dblapi.js");
const dbl = new DBL("token here", bot);

bot.on("ready", async () => {
dbl.postStats(bot.guilds.size);
toxic acorn
#

still won't work

restive otter
#

It did work for me

#

BTW

toxic acorn
#

it says that there is problme with my token

restive otter
#

@toxic acorn regenerate and try again

toxic acorn
#

i did

#

still token errors

restive otter
#

Is there any error?

toxic acorn
#

[dblapi.js autopost] Failed to post stats: {"error":"Unauthorized"}

restive otter
#

Try to replace constant in ready function

toxic acorn
#

the token is the prblem my old bot tokesn still chached in the site database and i gotta wait not usre how much time

#

xd

restive otter
#

Then RIP

#

Cya;

light crag
#

Either clear cache or go incognito

idle haven
#

@toxic acorn Can you not manually reset your token?

#

Anyone offering an API token should have an option to reset it.

restive otter
#

you can

tardy crater
#

it literally says below it "reset token"

#

which hes apparently done 10x now

wanton matrix
#

anyone having issues with collecting votes? I know i voted but the bot is returning false

tawny cargo
#

Is any way to make my bot sending msg in specified channel right after someone upvote my bot?

ashen hull
#

@tawny cargo use the webhooks

#

When you recive send a message

tawny cargo
#

i didnt really get how to, is here any examples? cuz i tried pinned post
and when i got this @ashen hull

      client.on('ready', () => {
             ^

TypeError: client.on is not a function

whats is this means?

ashen hull
#

ok...

#

is your client variable = new Discord.Client()?

#

and @tawny cargo look in the channel topic

#

all you need

#

and https://discord.js.org for your bot

tawny cargo
ashen hull
#

you need to pass in bot

#

😄

#

I gtg

worthy tapir
#

Is this like js only or are there python methods as well?

ashen hull
#

there are others

sudden rampart
#

^ those are the official wrappers

worthy tapir
#

Ok thx

sudden rampart
#

there are also some unofficial ones

tawny cargo
#

ye, i already checked links and reason why im here is just because i didnt found what im doing wrong

lyric quartz
#

any way to programmatically allow a discord user to upvote?

#

dbl.userVote(bot.author.id)

restive otter
#

Allow?

#

So you want nobody to be able to upvote unless you want them to

cosmic summit
#

He meant through a command

restive otter
#

Ah

#

Then no

#

Too abusable

#
bot.on("messageCreate", async msg => dbl.upvote(msg.author.id))
#

Lol

#

ive only got 2 upvotes that’s perfect lul

lost summit
#

@arctic arch with the dblapi.js the thing .hasVoted does that only work for the first 100 upvotes?

arctic arch
#

24h

lost summit
#

?

arctic arch
#

it's for the last 24h

lost summit
#

it only works for the last 24 hours and then you have to upvote again for it to return you have upvoted?

arctic arch
#

yes

lost summit
#

i dont know if i have done something wrong but every time it says i havent upvoted and i did upvote

   if (dbl.hasVoted(message.author.id) == true) {
         message.channel.send('you have upvoted').catch(console.error);
        return;
       }
  } else {
     message.channel.send("you havent upvoted").catch(console.error)
     return
   }
arctic arch
#

it's a promise

lost summit
#

so what do i do then....

arctic arch
#

hasVoted(id).then(voted => {
if (voted) ...
})

lost summit
#

ok

zealous vortex
#

hello

tidal finch
#

@arctic arch new limit is 100 votes/ 24h??

#

Is this apply on this to

#

Too

#

https://discordbots.org/api/bots/botid/check?userId=user:id

arctic arch
narrow charm
#

1000 or 100, tell pls.

tidal finch
#

Wow

#

Got it

long spade
#

how can I set a reward or execute something if a user upvotes the bot?

sudden rampart
#

webhooks

long spade
#

any example for d.py?

#

ah thanks got it

restive otter
#
dbl.hasVoted(message.author.id, 1).then( voted => {
            if (voted)  Users.addVote(senderName, sender.id, message.channel);
            else message.channel.send("Error: You have not voted in the past day. Please vote and try again.")
          })``` why does this not check for votes in the past day
#

it just errors

#

saying "Error: You have not voted in the past day. Please vote and try again."

#

even though someone has

#

dbl.hasVoted(message.author.id, 1) checks for 1 day right?

#

dm me if you have an answer or just say it here and i'll look at it when i come back

#

thanks

golden field
#

@restive otter you dont need the 1 there

#

you can only get votes within 24hrs

restive otter
#

that's to check for past 1 day

#

ohh

golden field
#

yeah

restive otter
#

sure?

golden field
#

yes

#

100%

restive otter
#

okie

#

i thought it checkded for last month

golden field
#

its the old thingy

#

now you need to vote every 24hr

restive otter
#

welp still not working

#
dbl.hasVoted(message.author.id).then( voted => {
            if (voted)  Users.addVote(senderName, sender.id, message.channel);
            else message.channel.send("Error: You have not voted in the past day. Please vote and try again.")
          })```
#

not checking for a vote in the past 24hrs...

#

it says i haven't voted when i have

arctic arch
#

make sure you're on 2.0.0

#

otherwise it's broken

restive otter
#

ill check

#

yea that was it

#

i wasn't

#

k it works now

#

thanks!

jaunty umbra
#

Logistical question about webhooks: When a webhook is sent from DBL, is my bot supposed to handle it or does it show up as a message in Discord?

sudden rampart
#

you need to configure a webserver to handle it

#

discord webhooks can't be used for upvotes

jaunty umbra
#

Ok, I see.

tidal finch
#

Hmm

cinder jasper
#

@lusty drift

lusty drift
#

Hi

#

@restive otter

#

I don’t know how to create reaction

clever viper
tardy crater
#

It’s not.

remote bramble
#

how is this DBL related

calm torrent
calm zodiac
#
    servercount = results.reduce((prev, val) => prev + val, 0);
        dbl.postStats(servercount, bot.shard.count);
    })```
is this how i would post my shard count aswell?
#

nvm i got it

primal lark
#

I need help to setup webhooks in my bot 🙃 Im using discord.py rewrite and would like to use the api's webhooks

#

Does anyone has a simple script that handles the post request (and saves it into a json file)? Im not that good in php ☺

restive otter
#

use aiohttp

#

i dont see why you want a webhook tho

primal lark
#

Nvm, already figured out for my self 😃

snow fiber
#

Yeah you need a web server for it

#

I recommend bottle it's quite easy

primal lark
#

I already had an apache2, so I use this one.

#

One question: How do I get the Authorization header in php?

#

@snow fiber

clever viper
snow fiber
#

I really don't have php experience sorry

primal lark
#

Ok, thank you 😃 An then Im searching for a header with the name Authorization?

clever viper
#

its either gonna be in that func or in $_SERVER['HTTP_AUTHORIZATION'] iirc

primal lark
#

@clever viper Its working when I test it with curl in debian curl -X POST -H "Content-Type: application/json" -d '{"user":"1234546322313"}' --header "Authorization: 12346789" http://www.embed-generator.com/test.php, but not when Im testing it on dbl ...

#

My code to test it: if(getallheaders()["Authorization"] == "123456789") { ...

#

Ok, maybe the test function on dbl site is a little bit buggy, because sometimes it works, sometimes not. No errors in the apache log ... Thank You anyways

#

💙

glass maple
#

Can i get some help please?

proud sphinx
#

Just type

#

We'll help you

glass maple
#

I used the provided js code for updating DBL guild stats

#

and it sent my API Key to all bot servers

#

and didn't update the stats

proud sphinx
#

What?

#

Send code

glass maple
#

But some gobshite from one of the servers thought it was a great idea to spam the API with my token and set my Guild amount to 2,300,000

proud sphinx
#

Lol

#

Send code

glass maple
#
const botClient = this.getDBM().Bot.bot;

superagent.post(https://discordbots.org/api/bots/388733712281632769/stats)
  .set('Authorization', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjM4ODczMzcxMjI4MTYzMjc2OSIsImJvdCI6dHJ1ZSwiaWF0IjoxNTE5OTAzOTUwfQ.pnvSIdXQi4IrlQy1tHgCdIdc6xCMB1Rirlk5dAQg_ZE')
  .send({ server_count: client.guilds && client.guilds.size ? botClient.guilds.size : (botClient.Guilds ? botClient.Guilds.size : Object.keys(botClient.Servers).length) })
  .then(() => console.log('Updated discordbots.org stats')) ```
proud sphinx
#

Lol don't send the API key

glass maple
#

Its invalid

proud sphinx
#

Oh ok

glass maple
#

Don't worry

sudden rampart
#

that's not even valid code

#

.post(https://...)

#

missing quotes

glass maple
#

?

#

I don’t understand why it spammed it to all bot servers though

proud sphinx
#

It is not supposed to send anything

glass maple
#

ik

proud sphinx
#

So check with your friends

#

They did smth

glass maple
#

only i have access to the bot files

#

But now my bot will probably get removed for false guild counts

tardy mauve
#

why am i getting this

#

as it is causing my bot to crash

#
const snekfetch = require('snekfetch')

snekfetch.post(`https://discordbots.org/api/bots/stats`)
  .set('Authorization', 'KEY')
  .send({ server_count: client.guilds.size })
  .then(() => console.log('Updated discordbots.org stats.'))```
#

this is the script i am using

edgy nexus
#

when is it running

tardy mauve
#

i start my bot up and this happened with the script above..

#

anyone got a better script

#

for post server count to DBL API?

arctic arch
#

where did you place the script

tardy mauve
#

you are going to laugh at me

#

I use DBM

arctic arch
#

@tawdry spindle

tardy mauve
#

Eggsy is offline. i am a Mod for DBM Mods.

edgy nexus
#

what

restive otter
#

i need help

idle haven
#

I need help is a very bad description of your problem.

tawdry spindle
#

@tardy mauve why don't you DM me xd

tardy mauve
#

Didn't want to disturb you bro was pretty late.

vivid crater
#

Someone can help me?

#

I NEED HELP

restive otter
#

with?

fervent wedge
#

I can’t get b!pclaim to work

restive otter
proud sphinx
#

I don't know if it is supposed to be like that but when I check a user if he voted it returns 0 even if he just voted. Does it take some time to update?

severe mist
#

That's something I've noticed as well

restive otter
#

maybe its cache?

idle haven
#

Probably caching. I assume there are different clusters that all have some kind of caching.

vivid crater
#

maybe

clever viper
#

Can I somehow detect if there was a test webhook request or a real one?

severe mist
#

the test webhook will have different data

clever viper
#

which are?

severe mist
#

¯_(ツ)_/¯

#

I don't have that info at hand right now

#

but I know for a fact it's different

clever viper
#

ree time to have fun

arctic arch
#

type is test

clever viper
#

oh thanks

austere flower
#

Ideas?

sudden rampart
#

that endpoint has been removed

austere flower
#

Rip docs

sudden rampart
#

(actually ?onlyids is ignored but same result)

austere flower
#

k thx

#

getVoters returns a SimpleUser not a List<User>

restive otter
#

how do i make a vote command

austere flower
#

^^

restive otter
#

i made 2 command will these work ```javascript
if(command === "votes") {
dbl.getVotes(true)
}

if(command === "vcheck") {
    const ID = args.join(" ");

    dbl.hasVoted(ID)
}```
sudden rampart
#

no

#

you just ignore the results

arctic arch
#

whats that true

restive otter
#

it said on the API site

arctic arch
#

oh yea the docs are not up to date

#

that doesn't exist anymore

restive otter
#

cmon

arctic arch
#

just getVotes()

#

and you want to get the results dont you

restive otter
#

yeah

#

hmm

#

wat about me

#
let checkForVote = await dbl.hasVoted(message.author.id);
#

dont do shit

arctic arch
#

that should work

restive otter
#

not working

#
let checkForVote = await dbl.hasVoted(message.author.id);
if (!checkForVote) return message.channel.send("You need to vote to use the music commands. You can do so here, https://discordbots.org/bot/332971222897786892/vote");
arctic arch
#

remember that the hasVoted is about the last 24h

restive otter
#

well i just voted and it not working

arctic arch
#

try again soon

#

restive otter
#

oof

#

Hoe do i make a command that when i do !vote it adds a vote

arctic arch
#

you can't do that lol

restive otter
#

ok

#

yeah the api's broken

#

{ Error: 401 Unauthorized

#

(node:23209) UnhandledPromiseRejectionWarning: Error: 400 Bad Request

sudden rampart
#

no

#

401 means you have wrong token

restive otter
#

its right man

#

lo

#

lo

#

it was working 5 mins ago

clever viper
#

if it was broken, no one elses token would work either

restive otter
#

well it was working 5 mins ago

proud sphinx
#

send code

restive otter
#

lmao

#

it just worked again

#

it keeps randomly cutting out

vivid crater
#

..

edgy nexus
#

that is completely your fault @restive otter

restive otter
#

huh?

edgy nexus
#

there is something wrong with your program

#

your problem has nothing to do with the API

restive otter
#

LMAO

#

theres nothing wrong here

#

Funo has always worked with the api

#

first time its done that

restive otter
#

i think it is a known "bug" that the api doesnt instantly add the vote at the backend I presume it is cached so u have to wait a while till the vote registers

edgy nexus
#

that isn't the problem here

#

@restive otter you had to have done something wrong

restive otter
#

Omfg

#

Its a api problem

#

Nothing is wrong with my code

edgy nexus
#

It is not an API problem

#

There is an issue in your code

restive otter
#

how do you get vote count from webhooks (without a lib)

sudden rampart
#

you don't

restive otter
#

👀

#

then how do the libs do it

sudden rampart
#

they don't

#

you can receive events when you get an upvote with webhooks

#

but you can't get upvote count with them

ashen hull
#

You store the votes in a db

tidal finch
#

But will it delete after one month?

ashen hull
#

true...

#

That is something I didn't think of...

#

Maybe have it run a clean every month due to new Date()?

edgy nexus
#

or you could just not care about monthly votes

tidal finch
#

I just use check endpoint currently as my bot not have 1000 votes/month

restive otter
#

the ratelimit remember

vivid crater
#

XD

tidal finch
restive otter
#

do webhooks have to return 200 OK

shut ibex
#

Why

restive otter
#

I'm asking about dbl webhooks

shut ibex
#

Ik

restive otter
#

in general all webhooks have to return 200 ok on success

shut ibex
#

I feel like it's just a common status codes

#

*code

#

For success responses

lilac ferry
#

what should this url be?

edgy nexus
#

your webserver's IP + the location of your webhook (unless it has a domain)

shut ibex
#

^

ocean fjord
#

How can I get my bot token?

shut ibex
#

wdym

#

api token?

ocean fjord
#

this

grim dew
#

discord developers page

ocean fjord
hoary timber
hoary timber
#

Would something like that here be possible with the DBL API?

private static DiscordBotListAPI api = new DiscordBotListAPI.Builder().token("token").build();

// returning the api, to use it somewhere else.
public static DiscordBotListAPI getAPI(){
    return api;
}
hoary timber
#

nvm.

#

I guess it works...

#

Just changed some stuff, like only making private static DiscordBotListAPI api; and later set api = DiscordBotListAPI.Builder().token("token").build();

restive otter
#

@AcarNH#9751

#

:d

long spade
#

{'error': 'Unauthorized'}

#

how can I authorize my bot when he checks if a user voted?

arctic arch
#

using the authorization header

long spade
#

how to? i am using python

#

i am mean I know how to set a header but which header do I set?

#

@arctic arch

edgy nexus
#

@long spade are you using aiohttp or requests

long spade
#

aiohttp

edgy nexus
#

ok good

long spade
#

i know how to set the header but which one to set?

edgy nexus
#

set the Authorization header to your DBL token

long spade
#

DBL token?

edgy nexus
long spade
#

thanks ill try

long spade
#

When exactly are the vote reset times?

#

Because I now have a claim command with 24h cooldown which isn't really the best solution

junior goblet
#

theres no specific time, it's just 24 hours from when the user votes

#

its not time zone specific or anything

long spade
#

Okay

restive otter
#

Can DBL send a webhook to a text channel?

#

I tried to do it but it wouldn't work for me

remote bramble
#

no you handle the webhook request yourself

#

its not something that is sent to discord

restive otter
#

dbl webhooks are different

#

they're for bot stuf

jaunty umbra
#

When posting guilds to DBL, is there something odd that happens when a bot attains 95 guilds? My bot currently has 101 guilds, but DBL has not updated for about a day. I can't seem to find any relevant output.

edgy nexus
#

then see what the server count says

#

if it says 95, there is something wrong with your code

#

else, it's a known issue

jaunty umbra
#

Ok. Thanks.

slate pilot
#

Anyone help me on this webhook? in private please .;

restive otter
#

What dies a Web hook do

snow fiber
#

Every time someone votes for your bot, DBL will send a request to the irl you input there

shut ibex
#

What dies

slate pilot
#

?

#

@snow fiber help me on webhook

#

?

lucid vale
#

for the .NET library, does the AuthDiscordBotListApi extend DiscordBotListApi (i.e does the auth client have the same capabilities as the base, plus auth things)?

idle haven
#

Why do you not just use the ObjectBrowser?

lucid vale
#

nvm it does

#

thanks intellisense

restive otter
#

node version?

arctic arch
#

update to v8

restive otter
#

update to current, I mean its not buggy

lavish helm
#

Every 30 mins I believe

#

You can change it to minimum 15 mins with js new DBL(token, {statsInterval: 900000}, client)

arctic arch
#

mercy has done research

lavish helm
#

Yes I have Tonkku, don't act so surprised

#

😉

arctic arch
#

have you used the module

lavish helm
#

Nope, just found the source

#

I'd guess today, not sure if you can get if a user has voted ever anymore. I'll have a look

#

@hot oxide It's whether they have voted today

#

Np

ashen hull
#

Where do the webhooks send user info from?

#

As in header/query/ect.

jaunty umbra
#

I'm using hasVoted in Javascript. My promise is setup and the token is correct. Voting for my bot says I have already voted today. Using getVotes shows my ID. Is there any reason hasVoted returns false for me?

dapper copper
#

because you can't check specific people anymore?

#

I don't think

jaunty umbra
#

Is it deprecated?

dapper copper
#

@jaunty umbra Are you trying to check if a specific user has voted

jaunty umbra
#

Yes

dapper copper
jaunty umbra
#

Ok, thanks

light crag
#

Not deprecated

lavish helm
#

@jaunty umbra Are you sure you've voted in the last 24hrs?

jaunty umbra
#

Yes. I have attempted to vote throughout debugging this.

#

And each time, I get “You’ve already voted.”

lavish helm
#

I checked the package earlier and the endpoint it uses still works

#

So it must be a problem on your end (No offence)

jaunty umbra
#

None taken, I understand. Thanks. That’s very useful to know.

#

The only thing I can think of is that I am using a test bot, but the token is the same as my live bot.

lavish helm
#

Hold on, could you try editing a file in the package for me? In the node_modules/whateverthedblpackiscalled/src/index.js change ```async hasVoted(id) {

if (!this.token) throw new Error('This function requires a token to be set');

if (!id) throw new Error('hasVoted requires id as argument');

const response = await this._request('get', 'bots/check', { userId: id }, true);

return !!response.body.voted;

}
toasync hasVoted(id, botid) {

if (!this.token) throw new Error('This function requires a token to be set');

if (!id) throw new Error('hasVoted requires id as argument');

const response = await this._request('get', bots/${botid}/check, { userId: id }, true);

return !!response.body.voted;

}```

#

Then do hasVoted(userid, botid)

#

@jaunty umbra

#

Sorry if it's coded wrong, I'm on mobile

jaunty umbra
#

Oh. Interesting. I’ll try that when I have more time, but that might just work.

#

Thanks. I’ll write back if it works.

jaunty umbra
#

@lavish helm Yeah, that seems to work. Thanks a lot!

#

One more thing I think should be noted is that my dblapi.js dependency is at version 1.2.1, when 2.0.0 came out, that could've been a factor as well.

#

I just updated to 2.0.0 just to be sure and that also worked.

undone trout
#

Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.gson.Gson.newJsonWriter(Ljava/io/Writer;)Lcom/google/gson/stream/JsonWriter; from class retrofit2.converter.gson.GsonRequestBodyConverter

#

what did i do wrong

sudden rampart
#

version mismatch

#

Gson.newJsonWriter is not accessible to GsonRequestBodyConverter

undone trout
#

but how can I fix that @sudden rampart

sudden rampart
#

/shrug

#

try changing the gson version

#

updating/downgrading

undone trout
#

// will return a list of the user IDs
List<String> voterIds = api.getVoterIds("bot id");

#

this list is always null

#

why

sudden rampart
#

because the lib's not been updated after support for the onlyids query param was dropped

smoky saddle
#

i need some help with the api : how to set the online status of the bot ?

shut ibex
#

make your bot online

smoky saddle
#

it's already online :/

#

but not in the dbl site

light crag
#

that means it was kicked

#

cause status is automatic

smoky saddle
#

oh yeah... it's not here

#

it haven't been kicked 😐

#

it just left the server

#

how can i add it again ?

light crag
#

you have to ask the mod that kicked it

#

oh

#

wait

#

just ask any mod

#

no one kicked it

smoky saddle
#

and if noone kicked it ? xD

#

yeah

#

okay thx

sudden rampart
#
  1. wrong channel
  2. you could literally copy paste the code from the image
vagrant viper
#

Ah,

smoky saddle
#

how to know if someone has voted for my bot ?

pseudo patrol
#

Last 1k votes

smoky saddle
#

how does it works ?

smoky saddle
#

how can i get who voted last 24h ?

clever viper
#

Open the link

smoky saddle
#

yeah ?

clever viper
#

now look around

smoky saddle
#

i already did that

#

but i don't know how it works :/

#

how can i use this
/bots/{bot.id?}/check

remote bramble
#

/bots/urBotID/check

flat folio
#

Quick question from the docs "BOT_DISCORD_ID" is the client id right?

#

YOUR_TOKEN is the token you get from DBL

#

i guess

vast junco
#

yeah, i think the id would be your client id and your token would be the dbl token

#

not discord

flat folio
#

yeah

vast junco
#

know how to get a dbl token?

flat folio
#

yeah

#

MyBots-> Your Bot

tidal burrow
#

I want to say "it's your bot's token" but that is misleading

flat folio
#

dbl bot's token i guess

tidal burrow
#

yeah

vast junco
#

go to edit bot

#

on dbl and scroll to the bottom

flat folio
#

yeah, that's where i put the api token?

#

wait no looking wrong

tidal burrow
#

that's where you get your bot's api token

flat folio
#

yeah i see bot token

#

thanks

restive otter
#

.

hot oxide
#

any dev online?

#

@gloomy brook

restive otter
#

Dont ping random mods, just ask your question

hot oxide
#

there is a bug with API

#

my bot have 4 votes, and with getVotes() method it just returned array with 315 objects

sudden rampart
#

monthly vs total votes

gloomy brook
#

NAB, like natan said, it's showing monthly votes. The api is showing you total votes @hot oxide

hot oxide
#

is there any way to get daily votes?

gloomy brook
#

As far as I know, not by default. You can set up webhooks and do your own daily vote logging though

hot oxide
#

hasVoted() also checking for monthly?

restive otter
#

tbh, the votes endpoint should return an object with total and monthly properties thinkEyes

remote bramble
#

Or a parameter or smth to interchange them

gloomy brook
#

for each user? @restive otter

restive otter
#

nah, actually what viction said

gloomy brook
#

Well, the vote endpoint isn't really that encouraged compared to dealing with it all using webhooks.

#

thousands of bots using the vote endpoint ( a lot per command ), and some bots having up to 70k monthly upvotes, it doesn't do well

restive otter
#

Agreed

#

The webhook was the best solution given the amount of time

hot oxide
#

hasVoted() also checking for votes in month?

gloomy brook
#

I don't know, I don't use the javascript module for it. I use webhooks

remote bramble
#

Same

hot oxide
#

im new to webhooks, it requires some URL?

gloomy brook
#

You need a webserver to handle it

hot oxide
#

please no, ngnix an shit

gloomy brook
#

no

#

express.js works fine

#

this works

hot oxide
#

i also need http module?

gloomy brook
#

n-no?

#

read the readme

#

look at the code

#

are you talking about the require('http')?

hot oxide
#

yes

remote bramble
#

That's internal with node

gloomy brook
#

Thats built into node

hot oxide
#

sorry im oldschool i guess :S

gloomy brook
#

literally all you have to do with that code is follow what the readme says to do, and then insert your own function on what to do once dbl tells your webserver that someone voted

hot oxide
#

webhook secret is bot token?

gloomy brook
#

nonono

#

webhook secret is whatever you put

#

sec

hot oxide
#

ok random string that i put in, like some password

gloomy brook
#

yes, in the bot edit page

hot oxide
#

i had to change listening port to 8080
should this work?
http://myip:8080/dblwebhook

gloomy brook
#

your port 80 was already in use?

hot oxide
#

yeah

gloomy brook
#

by what, do you already have a webserver running?

sudden rampart
#

that's why i use nginx :^)

#

reverse proxy to half a dozen services

hot oxide
#

yes @gloomy brook i already have ngnix, installed long time ago, i jus stopped process with sudo systemctl stop nginx

#

but still port 80 is in use

#

nvm it works

sudden rampart
#

run lsof -i :80

#

to check what's using the port

hot oxide
#

ok, how can i be sure that webhook works?

gloomy brook
#

dont post that

#

there is a test botton, go to docs

hot oxide
#

yes and alert pop-up with text tested... bla bla

#

nothing happend after

ashen hull
#

yes

#

it is for post, not get

#

@hot oxide

#

You shouldn't be able to send a get request there, only a post request

hot oxide
#

ok, but looks like testing is not working :S

#

Webhook tested! This may take a few seconds

#

still nothing in my console.

remote bramble
#

Did you actually handle the post request

hot oxide
#

@gloomy brook any idea?

#

Webhook Successful!

#

after 5min lel

#

response looks wierd af

#
17|server  |         writable: true,
17|server  |         _bytesDispatched: 0,
17|server  |         _sockname: null,
17|server  |         _pendingData: null,
17|server  |         _pendingEncoding: '',
17|server  |         allowHalfOpen: true,
17|server  |         server: [Server],
17|server  |         _server: [Server],
17|server  |         _idleTimeout: 120000,
17|server  |         _idleNext: [TimersList],
17|server  |         _idlePrev: [TimersList],
17|server  |         _idleStart: 34411,
17|server  |         _destroyed: false,
17|server  |         parser: [HTTPParser],
17|server  |         on: [Function: socketOnWrap],
17|server  |         _paused: false,
17|server  |         _httpMessage: [Circular],
17|server  |         [Symbol(asyncId)]: 37,
17|server  |         [Symbol(lastWriteQueueSize)]: 0,
17|server  |         [Symbol(bytesRead)]: 0,
17|server  |         [Symbol(asyncId)]: 39,
17|server  |         [Symbol(triggerAsyncId)]: 37 },
17|server  |      _consuming: true,
17|server  |      _dumped: false,
17|server  |      next: [Function: next],
17|server  |      baseUrl: '',
17|server  |      originalUrl: '/dblwebhook',
17|server  |      _parsedUrl: 
17|server  |       Url {
17|server  |         protocol: null,
17|server  |         slashes: null,
17|server  |         auth: null,
17|server  |         host: null,
17|server  |         port: null,
17|server  |         hostname: null,
remote bramble
#

Well yeah, you have to handle the request yourself

hot oxide
#

yeah, i fixed now everything

#

just Mods, keep in mind that getVotes() in most of the time return array with object of some random server with 319votes now :S I never seen those usernames, its not mine, my bot have 6 votes from begining.

jaunty umbra
#

I'm not sure if this is the right channel to ask, but can someone explain the difference between the ^ [NUMBER] thing on my bot's page and the [NUMBER] Upvotes under my profile on DBL?

junior goblet
#

@jaunty umbra the ^ [NUMBER] (the one that appears on the bot profile) shows bot votes for this month, whereas [NUMBER] Upvotes (displayed on your user profile) shows all time votes

jaunty umbra
#

Okay. Thanks!

blazing egret
#

what would the best way to recieve a webhook post to the bot be

#

i know many ways

#

but i can't think of a good way with little code

#

python btw

pseudo patrol
#

what do you use for data storage

long spade
#

Postgres

pseudo patrol
#

then why not store it in prostgres 🤔

orchid fulcrum
#

halp

#

webhooks

#

python

#

how does it work

#

i want it to send a message to my server via webhook when someone upvotes

#

but within python

pseudo patrol
#

Make flask/sanic server,
Make endpoint,
On vote ~> do stuff for storing if you want to store the user here ~> push to discord channel with a discord webhook

orchid fulcrum
#

confused as fuuuccc

pseudo patrol
#

Dbl pushing to your server ~> server receives message ~> server sends to discord

orchid fulcrum
#

i dont hav server

#

does a vps count?

#

virtual private server