#topgg-api

1 messages · Page 117 of 1

restive otter
#

im trying to get my bots infomation

#

i tried to add Authorized header but i still get 401

vocal ledge
#

U juss showed ur token

#

@restive otter

restive otter
#

@vocal ledge its not a full token

#

¯_(ツ)_/¯

vocal ledge
#

Still

tiny heart
#

how to console.log() the persons id who voted?

vast plinth
#

i want to start collecting vote information so i can give users stuff, yada yada.
how do i go about it?

loud jewel
#

How do u get the server count to work?

restive otter
#

@loud jewel you send data to top.gg about your server count, either use a wrapper or make your own

restive otter
#

Moving to development

#

How do ik that I get denied

#

For my bot

#

And do i need a website for it

vast plinth
#

how do i know what url i want the webhook sent to?

restive otter
#

what are you trying to do

vast plinth
restive otter
#

oh idk man

#

I am just trying to get my bot uploaded

#

rn

#

how long does it usually take

#

so i need a website for it???

vast plinth
#

so when it asks:

the URL you want the webhook to be sent to

#

how do ik what that is...

#

does the api have to use webhooks?

tiny heart
#
const dbl = new DBL(process.env.TOPGG, { webhookPort: 5000, webhookAuth: 'password' });```

What to write in password?
restive otter
#

The password you choosed in your bots edit page

subtle hare
pine heart
pine heart
#

also you have to do port forwarding of the port you use

subtle hare
pine heart
#

I think you have to put /dblwebhook

#

at the end

#

but yeah rest is right

#

delete that picture pls

#

real quick

#

thx

#

it shows like the whole token from top.gg!!

#

you can't show this to anyone!

#

best is to put it in a config file

#

anyways

#

that password... u have to create it yourself

tribal sky
#

hi

pine heart
#

hi

#

go to your bot, edit, webhooks and set a password there @subtle hare

tribal sky
#

so im making this topgg cog in python and i wanted to check if vote rewards works but dont wanna wait for 12 hrs so i can use on_dbl_test for this?also how do i do that

subtle hare
#

thx

tribal sky
#

here how do i test the webhook system?

rain heart
#

through setting your webhook url on your bot page and saving it

#

pressing "Test" should then send a test request to your webhook

tribal sky
#

oh ok

rain heart
#

Remember that you'll need to actually save the webhook by pressing the save button, otherwise testing it wouldn't work

hazy kestrel
tribal sky
#

what exactly shud i give in the data parameter

hazy kestrel
dense compass
#

Why

hazy kestrel
dense compass
#

Let's not spam emojis thanks

tribal sky
#

...?

hazy kestrel
#

I was finna say smd

#

But

rain heart
hazy kestrel
#

I see u a fat discord mod

rain heart
#

Under "Data format"

dense compass
#

What a lovely way to talk about others. I see you're quite the mature individual

rain heart
hazy kestrel
#

K

tribal sky
#

uh im a bit confused so how shud the final request data look like

rain heart
#

Let data print out like in the examples and screenshot what you're getting in response

#

Just in json data

tribal sky
#

@rain heart it didnt print anything

#

i tested the webhook rn

rain heart
#

can you dm me the webhook url? I'll test it through a request client

chilly pewter
#

do I need to specify a webhook and authorization? (to use the python library)

rain heart
#

If you wish to use webhooks, then yes

#

if not, then not

#

remember that webhooks are most likely important when you get more than 1000 votes

chilly pewter
#

ok

#
    @commands.Cog.listener()
    async def on_dbl_vote(self, data):
        print(data)
        print(data.user)

```   is this right like that?
rain heart
#

I suggest trying it and see

chilly pewter
#

nothing happens

rain heart
#

remember that you have to save the webhook on the bot page settings first before testing it

chilly pewter
#

i am doing it without webhook or is it needed for on_vote?

rain heart
#

Oh i forgot you need the on_dbl_test one iirc

#

for being able to test

chilly pewter
#

iirc? 😅

rain heart
#

if i recall correctly

chilly pewter
#

ok

rain heart
#

You can also speak german in this channel if you prefer, i'm able to help through german too

chilly pewter
#

nah it is ok

#

or do you speak german?

rain heart
#

yes i do, that's why i ask

chilly pewter
#

sag das doch gleich xD

#

also braucht man für on_dbl_vote unbedingt ein webhook?

rain heart
#

Also wie gesagt: Soweit ich weiß brauchst du den on_dbl_test fürs testen mit dem Test Knopf

pine heart
#

moin moin

chilly pewter
#

servus

pine heart
rain heart
chilly pewter
#

da ist was dran 😅

#

ich hab so null ahnung von webhooks

rain heart
#

Webhooks sind einfach sowas wie als ob du eine Webseite besuchst und die Webseite eine Anfrage bekommt

#

Bloß das die top.gg API bei einem Vote diese Anfrage übernimmt und dazu noch Daten zu dem Vote sendet

chilly pewter
#

aber braucht man dafür nicht von irgendeiner anderen seite einen webhook?

pine heart
#

du musst ihn nur empfangen

rain heart
#

Ne ne, den Webhook erstellst du von deinem Bot, auf diesen Webhook wirst du dann die Anfragen erhalten wenn ein Vote kommt

#

Kurzgesagt was Togira gesagt hat

chilly pewter
#

wo bzw wie erstelle ich den?

pine heart
#

deine public ip von deinem host + port

#

das musst du bei dem webhook feld angeben

chilly pewter
#

kk

#

einen moment

pine heart
#

also http ://ip:port/dblwebhook

rain heart
#

Du kannst auch erstmal generell mit Webhooks üben, um mit dem Konzept besser vertraut zu werden

chilly pewter
#

ist public id und server id das selbe?

rain heart
#

ip* ja

chilly pewter
#

k

pine heart
#

also wenn du mit der ip auf den server zugreifen kannst dann ja

chilly pewter
#

k

#

der sagt jetzt das ein Fehler beim speichern war 🤔

pine heart
#

der letzte schritt wäre dann noch port forwarding, also du musst sozusagen den port öffnen

#

öhh

#

schick mal einen screenshot dm

chilly pewter
#

jo

wide ginkgo
#

With your API, does it autopost or do I have to manually post so often.

rain heart
#

Autoposting in regards of stats like servercount/shardcount, yes has to be done by your end

wide ginkgo
#

Thanks 👍

#

Is there a way to see the stats posted to the site?

rain heart
#

yes through your bot page ofc

wide ginkgo
#

I'm dumb, thanks 😂

rain heart
restive otter
#

you didn't define DBL

#

case sensitive

#

ight

wanton saffron
#

benutzt du java?

rain heart
#

sollte einfach zu verstehen sein T_worryNod

chilly pewter
wanton saffron
chilly pewter
vast plinth
#

Why does this link not work

rain heart
#

what link?

gilded vine
#

Is it possible to get comments from API?

rain heart
#

The reviews? Nope

terse prism
#

What I put here: Authorization
You can use this value to verify the requests are coming from us.

jaunty plank
#

Authorization is whatever you want it to be.

#

It needs to be the same in the webhook section and the code to work.

knotty cosmos
#

how to use webhookes

paper grotto
#

Hey, i have a problem with the api, I have the message in the console with this code js dbl.webhook.on('ready', hook => { console.log(`Connection à la l'API DBL réussi.`); }); but i have this code and when a member vote for my bot, there don't are the message User with ID ${vote.user} just voted! help me please: ```js
//new vote on dbl
dbl.webhook.on('vote', async vote => {
console.log(User with ID ${vote.user} just voted!);
client.commands.get('new_vote_dbl').execute(client, vote);
});

jaunty plank
#

Did you fill in the url and auth on the website.

paper grotto
#

me ?

terse prism
#

const dbl = new DBL(yourDBLTokenHere, { webhookPort: 5000, webhookAuth: 'password' });??

#

help-me please

jaunty plank
#

Yes @paper grotto

paper grotto
#

@jaunty plank

jaunty plank
#

Yeah

knotty cosmos
#

how to use webhooks

jaunty plank
terse prism
#

where do i put the api key?

jaunty plank
#

in the yourDBLTokenHere

terse prism
#

okay

terse prism
jaunty plank
#

its called a token, or a key.

#

both terms mean the same thing

terse prism
#

{ webhookPort: 5000, webhookAuth: 'What do I put here?' });

terse prism
jaunty plank
#

auth you set yourself

#

can be anything text, as long as its secure, and its the same in the webhook section and in your code.

paper grotto
#

@jaunty plank hook.hostname is the ip of our vps ?

jaunty plank
#

youll want to use your proper ip in the url you put in the webhook url on the site.

rain heart
#

0.0.0.0 pretty much indicates that you can connect to it from anywhere

#

such as localhost, internal ip (192.168.2.123 for example), through your servers ip or a domain like example.com for example

velvet pond
#

Hi -- The postStats method under the JS library notes that a server count argument with the description "The server count of your bot." I'd suggest updating this to note that the count is the count of that current shard (if sharding), not the server count for the whole bot. Was a bit confusing.

outer summit
#

Where can I put server count function in js, in start event or in index? hm

rain heart
#

in start

rancid mist
#

how i can active this

#

for my bot

rain heart
#

read pins

rancid mist
#

where?

rain heart
#

wait not pins sorry

#

read the channel topic

rancid mist
#

this?

rain heart
#

yes

#

read it

rancid mist
#

I already read it, then I went to the site, what do I do now?

#

Press here?

rain heart
#

read the documentation

#

if you do not understand it, then you're not ready to use the api yet and should learn how to understand documentations

rancid mist
#

Wait, is that documentation?

rain heart
#

is the documentation

rain heart
#

what language are you using for coding your bot?

rancid mist
rain heart
#

yes

#

go to the section for your programming language

#

in the tools section

rancid mist
#

JS

vocal ledge
#

click on javacript under Tools

rancid mist
#

Do I program this into my bot files?

rain heart
#

yes

#

into your bot

rancid mist
#

I understand now, after programming directly, the number of servers will be shown on the bot page, correct?

willow spindle
#

Yes

#

You should post server count to top.gg API

rancid mist
#

How do I know the number of servers?

rain heart
#

through your bots code

rancid mist
#

where?

#

how?

rain heart
rancid mist
#

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
console.log(Logged in as ${client.user.tag}!);
});

client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong');
}
});

client.login('token');

#

--

#

This?

rain heart
#

read the discordjs documentation about getting the guild count

bitter iris
#

445345 is not defined

#

says my token is undefined

#

const DBL = require('dblapi.js');
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(User with ID ${vote.user} just voted!);
});

is whati have in my code rn

#

so do i have to change anything in the {hook.hostname}:${hook.port}${hook.path} part

restive otter
#

Did you replace the yourDBLTokenHere with your DBL token?

bitter iris
#

yes

mild sparrow
#

@rancid mist I recommend going to the discord.js discord server as that is purpose built for discord.js

bitter iris
#

@restive otter i did yes

#

oh i think it was the lack of ' ' on hte token

#

i didn't have my token inside the ' ' first tiem around

restive otter
merry zodiac
#

Which language are you coding your bot in

restive otter
#

python

merry zodiac
#

oh then you can use the dblpy library

restive otter
#

ight thanks

merry zodiac
#
pip install dblpy
#

this is documentation

stone geyser
#

How can I post the shard count of a bot with dblpy?
I'm currently using

class TopGG(commands.Cog):
    """Handles interactions with the top.gg API"""

    def __init__(self, bot):
        self.bot = bot
        self.token = os.getenv("TOPGGtoken")  # set this to your DBL token
        self.dblpy = dbl.DBLClient(self.bot, self.token,
                                   autopost=True, webhook_path='/webhook', webhook_auth='1234567890')  # Autopost will post your guild count every 30 minutes

    @commands.Cog.listener()
    async def on_dbl_vote(self, data):
        print(data)

But how can I also post shard count?

dull thicket
#

How do we get out dbl token

rain heart
#

you cant yet

#

you need your bot to be approved

chilly pewter
#

Is there a tutorial which tells you how to use the API in python?

rain heart
#

Python section under tools

pastel widget
#

What is the reason why my bot is attached to a server with 10K users but shows 3000 in the statistics command?

rain heart
viral solar
#

"Error: 429 Too Many Requests"
have anything I can do to fix it?

#

this error is happening in the dbl api

rain heart
#

You got ratelimited

viral solar
#

what do I do to fix?

rain heart
#

go through your code and see what requests causes you to get ratelimited

viral solar
#

but it's been a few days that this is happening

rain heart
#

you somehow did more than 60 requests per minute

#

It's your codes fault

#

don't make more than 60 requests per minute

#

including posting stats, getting stats etc

viral solar
#

ok, thanks

#

you helped me a lot, thanks

viral solar
rain heart
#

Just wait for one hour, optimize your code in the meantime

#

you should get request data when you hit the limit that indicates when you can retry

viral solar
rain heart
#

You got ratelimited again

viral solar
#

even with the tidy code?

rain heart
#

You are most likely sending more than 60 requests in one minute with any of your code

viral solar
#

the problem in my code was that I was sending a lot of statistics because I didn't know the limit

#

but now i'm sending it every 2 hours

#

this was the only reason to block

quartz obsidian
rain heart
#

You're missing your dbl token most likely

quartz obsidian
#

I added the token in the .env

pine heart
#

password?

quartz obsidian
#

I added a random password

pine heart
#

yeah u did that also in your bot's code?

#

did you enter it somewhere

quartz obsidian
#

Yeah, just trying to see if I entered something wrong

#

Yeah still doesn't work

worldly saddle
#

hey

#

what is token?

#
const DBL = require('top.gg');
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(User with ID ${vote.user} just voted!);
});```
#

at the webhookauth:

plucky lance
#

The token you need to generate on top.gg and a password you can set as well

#

(bot edit page)

golden gulch
#

Hey, I've got a question. What would I set as the webhook URL if I want to get my bot's server count widget? I'm using Discord.js on a Node.js server.

plucky lance
#

I don’t get what you mean.
You don’t need a webhook service to use the widget provided by top.gg

golden gulch
#

Huh, but under the bot webhook section, it says:

"You will need a token to perform certain actions with the API such as posting your bot's server count and checking who has upvoted your bot."

plucky lance
#

You can copy the widget URL and use it wherever you want even without providing your server count.
But if the server count in the widget is important for you, you need to report your server count in the first place for example using the dblapi

golden gulch
plucky lance
#

Yeah you can implement the lib into your bot or just run a second instance with your bot as client and the imported lib.

plucky lance
#

👍

restive otter
#

I am having trouble posting the guild count using the dblapi, I can't find what the problem is.

golden gulch
#

You need to implement the dblapi into your bot.

restive otter
#

I mean, all the other APIs for other bot lists are currently working.

golden gulch
viral solar
fathom narwhal
#

discord.ext.commands.errors.ExtensionFailed: Extension 'dbl' raised an error: AttributeError: module 'dbl' has no attribute 'DBLClient'
dpy dblpy installed
giving me error

jaunty plank
#

Did you name any of your folders/files dbl - totally not copy pasted from shiv

fathom narwhal
#

PROBABLY NOT.... MAYBE....

mortal herald
#

https://github.com/top-gg/DBL-dotnet-Library

AuthDiscordBotListApi DblApi = new AuthDiscordBotListApi(BOT_DISCORD_ID, YOUR_TOKEN);

Is the BOT_DISCORD_ID just the long number that you get when mentioning the bot and escaping it with \?

#

Or is it something else?

hearty lintel
#

yeah it is

#

it's the bot's ID

keen sleet
#

What exactly is the webhookAuth parameter? Nvm! I scrolled up and realized someone asked this exact same question! Thanks, all!

pine heart
#

u set your password yourself

#

;)

keen sleet
#

Awesome! I'm going to go off of the prior answer. Thanks for your help, Togira!

pine heart
rain heart
#

Anything that interacts with dbls api in your code, counts to the ratelimit

#

If you have for example a !checkvote Command that checks if that particular user voted, that also counts to the ratelimit

#

Users could spam it and ratelimit your bot

chilly pewter
sullen nymph
#

Oh dear God I'm tempted to literally suppress that error

#

@wurmi_#4964 feel free to ignore that error

#

I hate this

sullen nymph
plush parcel
rain heart
chilly pewter
sullen nymph
#

Well since you got that error, I can assume you got a request sent to you

sullen nymph
#

Did you specify URL and Authorization on top.gg and press Test?

chilly pewter
#

yes

sullen nymph
#

Do you have an on_dbl_test event?

chilly pewter
#

yes

#

i can send you an screenshot if you want 🙂

sullen nymph
#

Feel free to via DMs :p

chilly pewter
#

ok

rain heart
#

i saw that

haughty rune
#

with const dbl = new DBL(yourDBLTokenHere, { webhookPort: 5000, webhookAuth: 'password' });

#

what do i do for password

rain heart
#

you can't use the api/webhooks yet

#

you'll have to wait for your bot to be approved

haughty rune
#

my bot has been approved

#

im just not the owner

#

im a developer for it

rain heart
#

oh, then

#

password is the authorization that identifies your webhook requests

haughty rune
#

how do i get this password

rain heart
#

so that for example other people cannot make a request to your webhook

#

that's something you define yourself

haughty rune
#

so i can choose it?

rain heart
#

it has to be the same as in your bot page and code

#

yup

haughty rune
#

oh epic

#

ty for the help

rain heart
haughty rune
#

hold on

#

hmm

#

how do i set the password on the bot page?

rain heart
#

this has to be the same as your password in your code

haughty rune
#

ah

#

do i have to set a URL?

#

if so, what would that be

rain heart
#

most likely yourserverip:port/dblwebhook

#

in your case maybe http://example.com:5000/dblwebhook

#

replacing example.com with your server's public ip address or domain

haughty rune
#

is it not a dbl webhook

#

wait do i have to put the ip of my bot host

#

like my VPS

rain heart
#

Yup

haughty rune
#

probably sounds stupid, but what would that be for heroku

restive otter
#

No

rain heart
#

no clue

#

most likely your project url iirc

snow ridge
#

how do i use the top.gg token and make it log the user who voted, and log it in the console? I'm on discord.js

rain heart
#

you have to do that through webhooks

jaunty plank
snow ridge
jaunty plank
#

the url to your webhook receiver.

snow ridge
jaunty plank
#

the http server that receives the webhook post requests(or if using one of the libraries, that.)

snow ridge
#

im confused, what is that, im new to this requests thingies

snow ridge
#

im self hosting, so i'd need to put my ip there i guess

jaunty plank
#

pretty much, it will be http://ip:port/path ip port and path need to be filled in with the relevant information

limber walrus
#

@wild lantern

jaunty plank
#

if you are using a library its probably dblwebhook

fathom narwhal
#

HELP! i ran the server count on my test bot and i cant get it to update

#

how can i set the guild count to a specific amount

#

(main bots guild count)

#

just temp

rain heart
#

through the api ofc, or what do you mean?

#

you can just make another request to the api

fathom narwhal
#

there we go

#

alr

#

ty

thorny parrot
#

what does the api reply if it accepted my bots/stats post request?

rain heart
#

just a 200 response

thorny parrot
#

anything in the body?

rain heart
#

doesn't seem like it

#

according to the docs

thorny parrot
#

I'm getting {"shards":[]} and don't know if that's good

#

will look at status code

rain heart
#

the only endpoints that return something are pretty much the ones with the get method

thorny parrot
#

hmm, looks like I am getting a 200, will wait for cloudflare caching to subside I guess

wise onyx
#

are there any plans/ways to test a webhook without changing it for the bot while it's live?

rain heart
#

using a request client like postman

#

and some test data

wise onyx
#

that's what I've been doing, is there any way to know exactly what the request will look like so I won't end up missing a newline or something and dropping votes for a bunch of people?

rain heart
#

say no more

#

Section "Data Format"

#

that's the data (in json) a webhook request contains

wise onyx
#

thank you!

rain heart
#

Also, if you're using Authorization, the section "Verifying the request" above it is important too

wise onyx
#

to test that out with postman, what kind of token would I use? would it be a bearer token I'd test it with?

rain heart
#

Just a normal token, best is to just include it in the header section instead of the built-in way of postman

wise onyx
#

oh really, thank you

#

my bot's just been using security through obscurity since I didn't imagine it would grow to the point I'd have to worry about this or anything, so I'll definitely need to work on that soon

dull thicket
#

where do we get our dbl token

sullen nymph
thorny agate
#

hello, i am trying to use the webhook for votes, i am receiving the post request and the auth header, but the post data is empty i am using php
print_r($_POST) => []

sullen nymph
#

Interesting

thorny agate
#

testing with this code

<?php
    include("config.php");

    $verification = getallheaders()["Authorization"];
    if ($verification === DBL_AUTH_VALUE) {
        $fp = fopen(__DIR__ . '/../votes.txt', 'a');
        fwrite($fp, json_encode($_POST) . "\n");
        fclose($fp);
        echo "thank you dbl.";
    };
?>

DBL_AUTH_VALUE is set inside the include("config.php");
this creates a votes.txt file with all $_POST data but i am getting [] when i press the Test button
any help ?

frank leaf
#

hi

wise onyx
#

@thorny agate something I ran into when I was testing my webhook was I just pressed test without pressing save before it, make sure you save after putting your webhook in

thorny agate
wise onyx
#

I had to use file_get_contents('php://input') for mine

thorny agate
#

@wise onyx it works thank you.

wise onyx
#

😄

keen sleet
#

For webhooks, does anything actually come in the body when the little "test" option is executed?

#

Do I need to actually execute a vote in order to get a test event?

#

I see the thread above with the php://input

#
    this.dbl.webhook.on('vote', (vote) => {
      console.log(`User with ID ${vote.user} just voted!`);
    });

Yields nothing

#
  addVoteListener() {
    this.dbl = new DBL(TopGG.key, { webhookPort: Bot.port, webhookAuth: TopGG.auth });
    this.dbl.webhook.on('ready', (hook) => {
      console.log(`Webhook running at http://${hook.hostname}:${hook.port}${hook.path}`);
    });
    this.dbl.webhook.on('vote', (vote) => {
      console.log(`User with ID ${vote.authorization} just voted!`);
    });
    this.dbl.webhook.on('error', (err) => console.log(err));
  }
#

'ready' works - just not vote

keen sleet
haughty rune
#

what is the preset port?

keen sleet
#

process.env.PORT

haughty rune
#

ok

keen sleet
#

They set it as an environment variable

#

Jake, do you use NodeJS?

#

@haughty rune 🤔

haughty rune
#

i do

#

and i got it, ty

#

i got the port

keen sleet
#

Were you able to get the webhook running on your local machine?

haughty rune
#

nope

keen sleet
#

For some reason, this does nothing in my local environment.

haughty rune
#

same

#

but it works on heroku

keen sleet
#

Do you mind sharing your snippet?

#

It's fine if not

haughty rune
#

i can't sorry

keen sleet
#

No worries

haughty rune
#

but it works on my vps

#

because its sending the webhook posts to the VPS

keen sleet
#

I mean, is the process above the same?

haughty rune
#

your local machine won't understand them

keen sleet
#

I'm using another service that portforwards a DNS name to my local terminal

#

I am able to establish a connection from DBL -> my local

#

I just don't receive anything

#

ngrok is the service name

haughty rune
#

idk

keen sleet
#

If anyone has a second, I would love an answer. It's probably something so dumb / miniscule.

#

Do I really need to initiate a vote for my bot 😬

#

Yeah, someone just voted on my bot and I received nothing. That's interesting. I must be doing something wrong 🙄

#

Nvm - figured it out.

#

Thanks!

#

I forgot that it defaults a path to dblwebhook 👍

restive otter
mortal onyx
#

The api is displaying my bot's status as streaming but it is idle.

#

How do I force the change?

outer summit
#

Where can I put the Servers update, in ready event or in main file?

mortal onyx
zealous vapor
#

I just started using the API so I'm probably gonna ask something really dumb, but for some reason my bot isnt console logging that it has posted the server amount

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

client.once("ready", async message => {    
    setInterval(() => {
        dbl.postStats(client.guilds.cache.size);
        console.log("posted")
    }, 1800000);
});```
rain heart
#

doesn't the Interval execute after the time you entered or from the start?

sullen nymph
zealous vapor
#

For some reason it does work when I use node . on my pc but not on my vps

#

solved it by using the correct bot token and running it on pc

keen sleet
sullen nymph
#

:grin:

solar quartz
#

hn

restive otter
#
token:
        Your bot's top.gg API Token

Where would one grab this or is this just my bot token or client id?

#

nvm found it

keen sleet
#

Does the test event actually send isWeekend - or is that a mimicked value?

zinc acorn
#

Does the DBL JS library check the client ID if you put in the client parameter? I'm asking this because I also have a test bot that runs the same code because I don't want to be posting the incorrect server count.

lone willow
#

idk if it does but one thing you could do is if you are using javascript, in the message event do thisjs client.user.username = "<main bot id>";

#

then it should work

#

theoretically

keen sleet
#

Has anyone actually got heroku to work with the dblwebhook?

sullen nymph
#

I believe it's easy to do and there's no reason why it wouldn't work

#

It's just that people kind of struggle with that a lot

vale moon
#

I swear I don't understand how to do it, everything gives me an error ...
Someone could pass me a template in "repl.it" so I can do it :c

restive otter
#

hey there

#

I need help about webhooks

rain heart
#

Hey hey, what exactly does not work with your webhooks?

restive otter
#

hook.hostname = 0.0.0.0

#

I get this problem

rain heart
#

0.0.0.0 is a universal-like ip, you wont be able to use it in your webhook setting in your bot page

#

0.0.0.0 means like "being able to connect to it from anywhere", like for example localhost, your servers ip or a domain like example.com

#

If you're hosting your bot on a vps, you should be able to use your servers ip in the webhook url

#

if repl.it, it should be your project url iirc

restive otter
#

I use vps.

rain heart
#

yup, then your vps ip

restive otter
#

are you busy btw?

#

I want to show you this...

#

@rain heart where will i put my vps ip?

rain heart
#

you wont need it inside your code, you should use it in your webhook url

so for example, my vps runs on the ip 98.11.211.49 (not real ofc) and i want to use the webhook.
You should then be able to use http://98.11.211.49:port/dblwebhook inside your bot page

#

port being the port you entered ofc

restive otter
#

yeah I've already done it actually

rain heart
#

can you dm me the url? I'll test if it's reachable through a request client

restive otter
#

@rain heart can you send me a friend request?

rain heart
#

I unfortunately do not accept friend requests

restive otter
#

:/

tiny heart
#
const dbl = new DBL(process.env.TOPGG, { webhookPort: 5000, webhookAuth: 'password' });```

What to write in password?
dense basalt
#

Anything you want really, make sure no one else knows it so your data is secure

dense basalt
#

A string

#

"akJDkJadakdjaidu98==_" for example

tiny heart
dense basalt
#

In the Authorization in your top.gg webhook settings

tiny heart
#

thanks 😄

pine heart
spare sleet
#

does the api update at a certain time or? cuz like it says on the img i have 10 upvotes but i have 20 on the site,

final bone
#

How to use the top.gg api on my bot?

rain heart
final bone
#

How to get webhook of my bot?

rain heart
rain heart
spare sleet
#

eh

#

well its not

final bone
rain heart
#

can you tell me the bot id you're referring to Nova?

spare sleet
#

it says on the img, 10 upvotes but on site 20

#

ye 1s

rain heart
#

and what vote count does the api tell you?

spare sleet
#

its been like that all day :/

rain heart
spare sleet
#

hmm

#

lemme try now

#

idk

rain heart
#

are you maybe storing that image instead of refeching it? (caching?)

spare sleet
#

ill check 1s

#

see

#

thats what im doing

#

https://top.gg/api/widget/778344753795170374.png

#

in a embed field

rain heart
spare sleet
#

when i tried to store json it pulled the whole png file's source

#

oh yea

#

wtf

#

idk

spare sleet
#

kk

rain heart
#

yeah most likely caching

#

i suggest interacting with the api instead of getting the widget image

spare sleet
#

hm ok ill just leave it

#

hmm ok

#

ill check docs

#

ty

rain heart
sullen nymph
#

You can use query parameters to avoid caching

rain heart
#

Ohhh you're right, i've been using ////////// instead KEKW

sullen nymph
fringe cove
#

if i search dblapi.js it doesnt bring it up

#

and when it tries to install automatically

#

it still doesnt work

#

any fixes?

fringe cove
#

can anyone please help me

#

@rain heart

restive otter
#

Use shell to install npm packages

fringe cove
#

how do we do that?

restive otter
#

Press Ctrl + Shift + S and type the npm command to install

fringe cove
#

okay ty

crystal glade
#

selamın aleyküm

storm crater
#

aleyküm selam

worn vine
#

this channel is only for suggestion/help/bugs

meager harness
#

Whats the endpoint to get all the reviews of a bot. Ping me

rain heart
#

There's currently none yet

meager harness
#

Ahh!

#

Okay!

#

Adding this could be great so that we can show our bot reviews in bot's official website as a testimonial or something

viral tinsel
#

How Can I make a vote checker also if a people vote my bot then the bot send me a message

pale fulcrum
#

most people save to cache or db when someone last voted so they can get it immediately but there is an endpoint to check if someone voted recently

viral tinsel
#

can you send me the code

#

?

pale fulcrum
#
  1. idk the language you use
  2. I am not going to spoonfeed
  3. you should learn how to use api/db
restive otter
viral tinsel
pale fulcrum
#

well an easy way would be to make an array and add the user id to the array, and remove it after 12 hours

#

but you need to have the webhook on

viral tinsel
#

how can I create a webhook ?

pale fulcrum
#

Woo you can walk him through this

jaunty plank
#

That video looks like its for discord webhooks, not top.gg webhooks

#

Which are not the same.

viral tinsel
#

yea

#

i wise

jaunty plank
#

There won't likly be a video on it.

#

specifically, for the vote webhook, using this(youll need to fill in your relevant information)

const DBL = require('dblapi.js');
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(`User with ID ${vote.user} just voted!`);
});


#

with the library installed

npm install dblapi.js
stray pelican
#

como usa esse server

pale fulcrum
#

what do you mean?

obsidian tide
#

whats the difference between parseInt() and parseFloat() besides the demicals cutting out on parseInt() are they both basically the same?

jaunty plank
#

practically, yes.

restive otter
#

Hello how we do to see the stats for server stats ?

pale fulcrum
#

that is the difference tho since integers have no decimals

thorny parrot
#
            d, err := json.Marshal(BotDataPost{
                ServerCount: len(s.State.Guilds),
            })
            if err != nil {
                log.Print("Error marshalling struct: " + err.Error())
                continue
            }
            
            req, err := http.NewRequest("POST", "https://top.gg/api/bots/777612933643108392/stats", bytes.NewBuffer(d))

this is how I'm posting, but I get a 400 Bad Request in response. data I post: {"server_count":32}

#

Do I need content type as the header? docs are very vague

hearty lintel
#

on post yes

#

was gonna say that but didn't know if the language accounted for it

thorny parrot
#

no, it doesn't read the buffer :)

hearty lintel
#

ye i see that

#

yeah just a Content-Type = 'application/json' should work

hearty lintel
#

Did you just post?

restive otter
#

No I would like to know how to have the stats

hearty lintel
#

Oh what language do you use?

restive otter
#

Java script

hearty lintel
thorny parrot
#

thanks, that worked!

hearty lintel
#

np

restive otter
#

Thanks

rain heart
#

This channel is dedicated to top.gg's api

restive otter
#

I need help

#

Error: listen EACCES: permission denied

#

someone halp

#

pls

hearty lintel
#

@restive otter can u give some code?

restive otter
#

yeap

hearty lintel
#

scroll down, there's an example for how to attach the webhook middleware

restive otter
#

thank you

willow spindle
#

@hearty lintel is that official

hearty lintel
#

yes

#

not announced yet but it's the new official package

willow spindle
#

pog you have a lib dev role

hearty lintel
#

ye

willow spindle
#

btw why there is another module for autoposting Thonk

hearty lintel
#

top.gg is making an effort to separate itself from Discord only related things, the new package is just an sdk for interaction with the api. The package topgg-autoposter, is owned by me and is officially recommended™️ lmao

willow spindle
#

separate itself from Discord only things. Hmm ablobthinking

hearty lintel
#

for example not handling discord posting from the client

#

there's still the functional method but it doesnt take a djs client for example and autoposts

#

instead the sdk is looking to create building blocks for other packages, like the topgg-autoposter

willow spindle
#

anyways, nice work!

hearty lintel
#

ty

dull thicket
#

How do I get my dbl token

upbeat imp
dull thicket
#

For the website so I can see voting

upbeat imp
#

It’ll tell you which install to use

hearty lintel
rough lion
#

is it possible to give your discord bot a custom emoji on its status

haughty rune
rough lion
#

how do i do it

dull thicket
#

How do I make a event for voting, like when someone votes for my bot on top.gg

hearty lintel
#

which language?

dull thicket
#

python

hearty lintel
#

the second code block has an example

dull thicket
#

@hearty lintel how do I make a test vote

hearty lintel
#

via the webhook tab under your edit bot

dull thicket
#

what do I do there?

hearty lintel
#

click the edit under your bot

#

and press webhooks

dull thicket
#

yeah

#

im there

#

@hearty lintel now what?

hearty lintel
#

set up your code with your port and path and put your webserver info into those

#

do you know how web servers work?

dull thicket
#

not at all

hearty lintel
#

well, do some research on that first

dull thicket
#

can I have my friend vote for it as a test

#

will this work

hearty lintel
#

you have to have the other stuff that creates the http server

#

please learn how http servers work first i can't help you with that

dull thicket
#

yeah its there

#

that right?

hearty lintel
#

then you put your server ip and /dblwebhook into the webhook url and the auth as ur authorization

dull thicket
#

wheres my server IP

hearty lintel
#

how're you hosting?

dull thicket
#

local rn to test

#

I have a service

hearty lintel
#

well you need to open the port and put your home ip

dull thicket
#

do I get my IP?

hearty lintel
#

yea

restive otter
#

hey

#

I need help

#

I need help about the webhooks again..

#

can someone join my channel?

sharp vigil
#

@dull thicket cmd -> ipconfig -> ipv4

#

And dont share that number

wide herald
#

it shows lan ip only

#

not wan ip

heady birch
#

Hey can anyone link me to emojify Api

restive otter
rain heart
#

I saw a ghostping that pinged veld

#

@crimson crescent peepoCringe

crimson crescent
#

I wanted to test something ...

glossy depot
#

Hi guys, do anyone have the http(s) request template for the api please? (to post server count)

rain heart
floral orchid
#

What am I going to get in here?
Am I going to enter the webhook url?

rain heart
#

Yes

floral orchid
# rain heart Yes

I've done everything but when someone votes, the bot doesn't write. What could be the reason?

rain heart
#

Your webhook isn't working then

pine heart
#

yeah

#

try to log something in the console when someone votes, then hit the test button on top.gg... if nothing is logged it means the webhook isn't working

dull thicket
#

How can I see when someone votes for my bot? Using python

willow spindle
#

Use webhooks

dull thicket
#
class TopGG(commands.Cog):
    """
    This example uses dblpy's webhook system.
    In order to run the webhook, at least webhook_port must be specified (number between 1024 and 49151).
    """

    def __init__(self, bot):
        self.bot = bot
        self.token = ''  # set this to your DBL token
        self.dblpy = dbl.DBLClient(self.bot, self.token, webhook_path='/dblwebhook', webhook_auth='password', webhook_port=5000)

    @commands.Cog.listener()
    async def on_dbl_vote(self, data):
        """An event that is called whenever someone votes for the bot on top.gg."""
        print("Received an upvote:", "\n", data, sep="")

    @commands.Cog.listener()
    async def on_dbl_test(self, data):
        """An event that is called whenever someone tests the webhook system for your bot on top.gg."""
        print("Received a test upvote:", "\n", data, sep="")


def setup(bot):
    bot.add_cog(TopGG(bot))```
#

@willow spindle Like this?

willow spindle
#

I don't know py

#

Also your dbl token is leaked 👀

dull thicket
#

I regenerated it

#

How do I test this

restive otter
#

I tryed the pinned code
and i added

and send a message to console```

But when someone vote it's not giving anything (error resault or ...)
Nothing
hearty lintel
#

learn how webservers work. i asked you yesterday

#

@restive otter use votepayload.type

restive otter
#

Can you give more info?

hearty lintel
#

it's a json body

#

not headers

restive otter
#

Can you give me a example ? Im not good with api

hearty lintel
#

if you're using express you should use the webhook middleware

#

last example shows how to

restive otter
#

wait

#

Im using this

hearty lintel
#

if you don't know what you're doing you should use the library

restive otter
#

DBL?

tiny heart
#
const DBL = require("dblapi.js");
const dbl = new DBL(process.env.TOPGG, { webhookPort: 5000, webhookAuth: process.env.WEBHOOKAUTH });


dbl.webhook.on('ready', hook => {
  console.log(`Webhook running at http://${hook.hostname}:${hook.port}${hook.path}`);
});

dbl.webhook.on('vote', vote => {
  console.log(`User with ID ${vote.user} just voted!`);

  client.users.cache.get(vote.user).send(
    new Discord.MessageEmbed()
    .setColor('#00ff00')
    .setDescription(`Thank You for voting me!!!`)
    .setTimestamp()
  )
});```

This thing is not working!
Please help!

In `console.log()` it comes below thing when someone votes but bot is not sending messgae to the voter!
```js
{
  bot: 'bot id',
  user: 'voter id',
  type: 'upvote',
  query: '',
  isWeekend: true
}```

Please Help!
restive otter
#

can someone make a code to when someone vote for my bot it sends a message?
please

restive otter
#

And your direct messages
must be on

#

To bot send you dm

dull thicket
#

Why dosnt this work?

from discord.ext import commands

import dbl


class TopGG(commands.Cog):
    """
    This example uses dblpy's webhook system.
    In order to run the webhook, at least webhook_port must be specified (number between 1024 and 49151).
    """

    def __init__(self, bot):
        self.bot = bot
        self.token = 'I hide this right?'  # set this to your DBL token
        self.dblpy = dbl.DBLClient(self.bot, self.token, webhook_path='/dblwebhook', webhook_auth='password', webhook_port=5000)

    @commands.Cog.listener()
    async def on_dbl_vote(self, data):
        """An event that is called whenever someone votes for the bot on top.gg."""
        print("Received an upvote:", "\n", data, sep="")

    @commands.Cog.listener()
    async def on_dbl_test(self, data):
        """An event that is called whenever someone tests the webhook system for your bot on top.gg."""
        print("Received a test upvote:", "\n", data, sep="")


def setup(bot):
    bot.add_cog(TopGG(bot))```
tiny heart
tiny heart
restive otter
#

Umm

#

Is your dms open?

tiny heart
restive otter
#

then i don't know why
Let me recheck your code

#

Try to find problem with console.log

tiny heart
hearty lintel
#

its vote.user is the id

#

@dull thicket one last time. learn webserver, you have to create a webserver, and then set it as your top.gg webhook. if you don't understand it, either learn it, or drop it.

#

you have to have atleast a basic understanding of how backend http servers work

dull thicket
#

How do I make a web server

hearty lintel
cloud hull
#

Is this the endpoint for the weekend multiplier?

rain heart
#

no

cloud hull
#

What is it then?

rain heart
cloud hull
#

It says /weekend

#

Right?

rain heart
#

where does it say that?

#

you're missing the /api/

cloud hull
#

Oh

#

Ty

rain heart
cloud hull
#

Thanks

dusk hound
#

If I were to include the object for the webhook inside of my client constructor.

const dblClient = new DBL(token, { webhookPort: PORT, webhookAuth: AUTH });
```would I just pass in the client as-well?
hearty lintel
#

the webhook and client are separate

restive otter
#

Will reviews ever be added to the webhook?

dusk hound
#

Okay, thank you!

restive otter
#

Would be nice to have that

craggy lagoon
#

sa

#

@woeful dock

worldly sigil
#
const dbl = new DBL('my bot dbl token', { webhookPort: 5000, webhookAuth: 'My authorization' });
dbl.webhook.on('ready', hook => { 
console.log(`Webhook on`); 
}); 
dbl.webhook.on('vote', vote => { 
console.log(`User with ID ${vote.user} just voted!`); 
});```
#

that isn't working

hearty lintel
civic beacon
#

In order for the dbl vote system to work on your bot, you first need to open 5000 ports on your internet.

willow spindle
#

How did you know they didn't open that port

willow spindle
#

It was suggested iirc

pulsar palm
pine heart
#

and don't forget to do port forwarding with that port you use

pulsar palm
pine heart
signal otter
#

Sorry if this is the wrong chat to ask but, is there a chat where you can ask questions?

hearty lintel
signal otter
#

ok

plucky dock
#

Is it possible to send the name of the user who voted for the vote without using webhooks??

waxen rivet
#

Pls profile

hearty lintel
#

you can't event a user voting without webhooks, unless you want to make them run a command then check if they've voted, but it's just not really a comparable option

waxen rivet
#

Where is the dank memer

#

Server

#

Channel

hearty lintel
#

there is no dank memer channel in this server

waxen rivet
#

Is this where u appeal?

#

To get unbanned

hearty lintel
#

from?

waxen rivet
#

Dank memer server

hearty lintel
#

no it's not

waxen rivet
#

Ih

#

Oh

plucky dock
#

Hi, so i followed this on the docs, it logs the ready event but when i vote, it doesn't log

const DBL = require('dblapi.js'); 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(`User with ID ${vote.user} just voted!`); });

#

Is there something im missing?

craggy moss
#

is user id the same as the discord user id?

hearty lintel
#

@craggy moss yes

#

@plucky dock make sure your port is open to the public and have correct information in the webhook settings

craggy moss
#

how does get_user_vote in dblpy work? it's only returning false

#

does it need a webhook?

floral spade
knotty cosmos
floral spade
#

it cannot send a message on discord webhook

knotty cosmos
#

why?

floral spade
#

that will not work

floral spade
#

that is not a embed

knotty cosmos
#

ohhk tq but how to do that

#

?

floral spade
#

you would need to set up another service like ksoft or something that gets the webhooks from top.gg and then parses them into embeds...

#

Better is just to have your own webserver recieve those requests and then send embeds in a channel

knotty cosmos
#

ohh

#

i am waitWhat

floral spade
#

hmmm

knotty cosmos
#

😕

restive otter
#

Can i get a music youtube api

floral spade
restive otter
#

Huh

floral spade
#

I guess you mean something that would stream music?

restive otter
#

Yea

floral spade
#

Yup then lavalink...

restive otter
#

Yea how do I use it

#

Idk how to find the api

floral spade
#

you would need to host a separate jar file along with your bot

#

and use a wrapper for the lavalink api like Solaris9's erela.js

restive otter
#

I do not know how to do that

restive otter
#

Oh I alr have those

#

I just need the API

floral spade
#

wdym by the api? like an official youtube api or lavalink api docs?

restive otter
#

YouTube

floral spade
# restive otter YouTube

Pretty sure a music api from youtube does not exist... But theres youtube api for all videos...

restive otter
#

I mean API key

floral spade
#

create a project and credentials

#

in the console

restive otter
#

Yeaaa I’m dumb

floral spade
#

but it can't stream music pretty sure... You can just get the youtube audio links...

#

then you'd need to use something like ytdl to stream

#

lavalink does all that by itself...

restive otter
#

Yea like I said I’m dumb

#

And I have no idea how to do any of that

floral spade
#

Hmmm

#

read docs..

restive otter
#

Again I’m dumb af

floral spade
sullen nymph
sleek sequoia
#

Hi

#

How i can use api for show shards and servers

restive otter
#

I got it now nvm

floral spade
#

How do i use express to get the data from vote?

#
app.post("/vote/dbl", (req,res)=>{
//what do i do here?
res.send(200);
})```
restive otter
floral spade
#

yes

restive otter
#

that method is when a post request is sent to the website.

#

It's not going to send a webhook

floral spade
#

it sends the vote to a url right? and its a post request?

restive otter
# floral spade it sends the vote to a url right? and its a post request?
const express = require('express')
const Topgg = require('@top-gg/sdk')

const app = express() // Your express app

const webhook = new Topgg.Webhook('topggauth123') // add your top.gg webhook authorization (not bot token)

app.post('/dblwebhook', webhook.middleware(), (req, res) => {
  req.vote // your vote object
}) // attach the middleware

app.listen(3000) // your port

more info here https://www.npmjs.com/package/@top-gg/sdk

floral spade
#

or can i just verify the request myself?

restive otter
#

yes you need it

floral spade
#

ahh soo do i need the express app also?

restive otter
#

yeah

floral spade
#

ohk...

#

thanks..

restive otter
#

you can just copy the code above

floral spade
#

What's the body of the data like

#

?

#

for testing purposes?
since i can't test the dbl webhook on localhost?

#

Nevermind i got it

rain heart
floral spade
#
{
    "error": "Invalid body",
    "from": "topggjs"
}
#

i got this

rain heart
#

Refer to the data format if you wish to test it with a request client first

floral spade
#

Thanks...

rain heart
floral spade
#
{
    "bot":773xxxx210916xxxx3,
    "user":4xxxx59887323xxxx8,
    "type":"upvote",
    "isWeekend":true
}

Yea i fixed it...

#

And just another question, votes will always expire after 12 hours right?

sullen nymph
#

Well, "expire" on top.gg's end besides the count, yeah

#

You can handle votes as one-time thing or require users to vote constantly still

floral spade
#

yea so like if i add some reward... let it expire after 12 hours...

sullen nymph
#

Pretty much

#

Nadeko rewards users for 24 hours so it's entirely up to you how to go about this

restive otter
#

how to make number server

rain heart
#

Read the topic

restive otter
rain heart
#

Here

#

This channel's topic

pine heart
restive otter
#

I don't understand much :( what I should do

rain heart
#

Come back to it once you're able to understand documentations

sullen nymph
rain heart
fast meteor
#

im using python
and getting this:
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: object Lock can't be used in 'await' expression

all im doing is data = await self.dbply.get_bot_upvotes()

#

im doing it from my beta testing bot, is that a problem?

sullen nymph
cloud hull
#

Hello. What are the webhooks used for when we edit a bot?

rain heart
#

Votes

cloud hull
#

Ok

hazy adder
#

^

rain heart
#

Each time a user votes for your bot, a request is made to that webhook

#

which you can use inside your bot to give rewards for example

cloud hull
#

K

restive otter
#

client.on('ready', () => {
setInterval(() => {
dbl.postStats(client.guilds.size, client.shards.Id, client.shards.total);
}, 1800000);
});
@sonic sorrel this?

sonic sorrel
#

essentially yes

restive otter
#

where do I put it? on the bot code?

#

@sonic sorrel :C

sonic sorrel
#

Inside your ready event

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

this would be inside the ready event

#
client.on('ready', () => {
    setInterval(() => {
        dbl.postStats(client.guilds.size, client.shards.Id, client.shards.total);
    }, 1800000);
}); ``` this entire thing is a ready event
restive otter
#

@sonic sorrel sorry for ping. where I put the code

rain heart
#

Inside.. your bot code

#

How did you get your bot submitted if you do not know where your client.on('ready') is?

restive otter
#

oh

rain heart
#

Or are you just a bit confused?

restive otter
#

no no i know where it is ahahha

#

okok working

#

How can I do that? For Viewing Servers

sonic widget
#

Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien

#

Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien

rain heart
rain heart
sonic widget
#

Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien Bande de chien

rain heart
#

@calm prairie

#

stinky spammer

calm prairie
#

already banned

rain heart
tulip wigeon
#

YARRAAKKK

willow spindle
#

@left egret ^

rain latch
#

friends, I will add the command system by voting the bot, but I am getting an error. Is there anyone who can help?

mortal ore
#

I m using python and this error is occuring in get_bot_upvotes()

rain latch
rain heart
#

token leak

rain latch
#

I typed your dbl token and got an error like this

willow spindle
#

Not related with top.gg API. Learn basic JS syntax first. || and don't use glitch||

mortal ore
rain latch
#

@willow spindle To use the command can you issue the voting command