#topgg-api

1 messages ยท Page 8 of 1

unkempt dust
#

im not sure if the docs are out of date, or if im doing something wrong?

plucky lance
#

Where do you try and host your code? At home?

unborn kestrel
#

Hey im unable to vote since morning as im unable to login due to multiple logins

#

Im unable to redirect to the karuat bot

#

Help me

restive otter
unborn kestrel
#

@restive otter okay

restive otter
#

Does the API have an endpoint that allows you to update your bots about me on its top.gg page?

#

No

vapid quiver
#

Hi

rain heart
#

-api

wooden juncoBOT
#

topgg This channel is for suggestions, help, and bugs related to our official API libraries and documentation found at https://docs.top.gg/

If you need help with other development, please use #development.

fair osprey
#

topgg's APIs need to be updated, have been the same for almost two years or more

tidal idol
#

updated in what way

#

nothing wrong with it atm

fair osprey
runic creek
#
#

๐Ÿ‘

fair osprey
#

true
i'm dumb because I didn't think of that before

#

anyways thanks :D

pulsar adder
#

Can someone help me pls

plucky lance
pulsar adder
plucky lance
#

Does your endpoint receive the webhook coming from topgg when somebody is voting?

pulsar adder
#

I have it use console.log to log who voted, and nothing was logged, so I'm guessing it didn't receive the endpoint, do note that this is a modified version of Pogy.

#

And I would like to have the votes logged

plucky lance
#

So since you aren't receiving any webhook from topgg, that's the first issue to solve

pulsar adder
#

How would I solve that

plucky lance
#

Where do you test and host the code (endpoint)? At home?

pulsar adder
#

At home + school (since school for me started up again)

#

It's basically dual host

plucky lance
#

Well there's your first issue

#

The webhook is creating an incoming connection.
Without port forwarding and opening this up in your firewall you wont receive anything.

pulsar adder
#

How do I fix that

plucky lance
#

Which will most likely be impossible in your school as I guess you don't have access to a router, firewall etc.

pulsar adder
#

I do have access to my coding software though

plucky lance
#

You can only fix that by forwarding the (selected) (webserver) port to your device (in your router).
And, if it's the default Windows firewall, create an exception in your firewall for that app and port.

#

Or literally just the stuff on a server.

pulsar adder
#

Is it possible the webhook url I'm using is not getting the information from top.gg? I'm currently on a Chromebook rn

plucky lance
#

Which doesn't require any of this steps.

pulsar adder
#

Oh

plucky lance
pulsar adder
plucky lance
#

Is that your domain or is this simply a webhook forwarder tool?#

pulsar adder
#

It's the domain

#

And a forwarder

plucky lance
#

Oh a forwarder

#

And this sends a webhook to your endpoint?

pulsar adder
#

Yes

plucky lance
#

(the one hosted on your PC)

pulsar adder
#

Supposedly

plucky lance
#

Ok but still you will never be able to receive this

#

And incoming connections has to be pass the router (firewall) and the one in your PC (most likely Windows I guess)

pulsar adder
#

It's ChromeOS

#

Not Windows

plucky lance
#

And those are forbidden (blocked) by default

#

I don't really know about the default firewall in ChromeOS tbh but still step 1 (passing the router) will fail

jaunty plank
#

๐Ÿ‘€ yeah I was about to ask, does chromeos have a firewall?

Not that it's the main issue right now

plucky lance
#

Well it won't even receive the request

#

Unless it's passing the router

pulsar adder
#

Is it required to have a webhook or no

plucky lance
#

If you wanna receive the vote event (when it happens) in real time, then yes

pulsar adder
#

That's what I would like to have

#

So how would I set it up

plucky lance
#

Unfortunately you can't without whitelisting the incoming request (from topgg) forwarding it to the right device (your chromebook)

#

Only possibility is to host the endpoint on a server then

#

The router of your school, of your home etc. will be default drop the request - in other words will not forward the request to your device

#

It simply doesn't know where to forward it to

#

@jaunty plank your tool just receives the webhook and sends a webhook (message) to a channel, right?

pulsar adder
#

Mine does as well

plucky lance
#

Yeah but unfortunately you can not receive it

#

May sounds dumb but theres no way for you to bypass the school's router in the first place receiving the request from topgg

pulsar adder
#

Ok

#

Guess I don't need it then

plucky lance
#

It would be required to do the same at home (in your home's router)

#

just to say

pulsar adder
#

Then I'll just remove the url from my bots top.gg page

#

Unless I need webhook.listener

plucky lance
#

Not really as the webhook listener aka. webserver listening for post requests wont ever receive any request

pulsar adder
#

Well

#

It works

plucky lance
#

hmm?

pulsar adder
#

Wait

#

I think I just noticed something

#

One sec

#

Okay

#

So when I vote Pogy, it sends the webhook

plucky lance
#

You mean you receive the request in your dashboard?

pulsar adder
#

Pogy receives the request when someone votes for that bot, I want mine to do the same

plucky lance
#

I'm not really aware what Pogy is

#

Your bot or just a bot you're using?

#

or something else?

pulsar adder
#

It's a bot that I was voting

#

And it sent me a DM

#

After I did

#

And I want mine to do the same

#

I'm viewing the markdown file rn

plucky lance
#

And Pogy isn't your own bot, right? Not hosted on your PC (at home or school)?

pulsar adder
#

It's not my own bot

#

My bot is using the repository, but on the v13 repository

#

Since the V12 one broke

plucky lance
#

Yeah well then it doesn't have to deal with your issue
It's probably running on a server that can receive this request by topgg

pulsar adder
#

I'll ask in the Pogy support server then

plucky lance
#

Sure but keep in mind you wont be able to receive any request by topgg ever unless you can do the steps I explained above

pulsar adder
#

Ok

pulsar adder
#

Okay, I realized I had to use a custom password

#

So I just spammed a bunch of random letters

plucky lance
#

Only thing I can think to bypass his restrictions is to let your tool send a specific message to a hidden channel of his he then will receive through the bot's message event

plucky lance
pulsar adder
#

And then set that as my dbl auth token

#

And now it works

plucky lance
#

hmm interesting

drifting lark
#

where can I access bot token to access api

pulsar adder
#

Pogy I guess requires that auth password as they sent me an image showing the declarations

plucky lance
#

and opened up router receiving your requests in your school... damn I must get access to this thing, too

#

ah, you mean you wanted pogy to receive the requests for you

#

well that's an entirely different story

pulsar adder
#

Yes

#

They helped me out

#

U did as well

plucky lance
#

didn't you tell me you wanna receive those requests on your bot from topgg?

pulsar adder
#

Yes

#

2 teams are better than one

plucky lance
#

ah ok, thought I missunderstood you

plucky lance
pulsar adder
#

It doesn't send the test webhook but idc about that

plucky lance
#

Edit your bot > left menu Webhooks

pulsar adder
#

At least, instantly.

#

Takes a bit but it's fine

plucky lance
#

well if works, it works I guess

pulsar adder
#

Yep

viscid citrus
#

so I was using the api for counting and logging the votes and I used my port of my pterodactyl server in app.listen(), and when I was trying to shard the bot and at the time of launching the shards,

getting error that the port is already being used. Which I was using for listening the votes.

Anyway I could prevent this thing.

rain heart
#

By not using a port thats used already

viscid citrus
#

The sharding thing was automatically taking the port that was being used for listening the votes

rain heart
#

Correct

#

Use a different port

viscid citrus
#

I tried changing it to 3000/8000 in the app.listen() still same error

rain heart
#

Post the exact error you're getting

viscid citrus
#

a sec, I'll send the vote part, error, and shard part

#

my sharding file

const { ShardingManager } = require('discord.js');
const  { bot_token } = require('./config.json');

const manager = new ShardingManager('./index.js', { totalShards: 2,
     token: bot_token });

manager.on('shardCreate', shard => console.log(`Launched shard ${shard.id}`));

manager.spawn({timeout: Infinity});

a part in index.js where i listen to votes of top.gg

const User = require(`${process.cwd()}/Models/User.js`)
const Topgg = require("@top-gg/sdk")
const express = require("express")
const app = express()
const webhook = new Topgg.Webhook("my-webhook")

app.post("/dblwebhook", webhook.listener(vote => {

 // my code stuff
}))
app.listen(20376)

error am getting

node:events:491
      throw er; // Unhandled 'error' event
      ^
Error: listen EADDRINUSE: address already in use :::20376
    at Server.setupListenHandle [as _listen2] (node:net:1740:16)
    at listenInCluster (node:net:1788:12)
    at Server.listen (node:net:1876:7)
    at Function.listen (/home/container/node_modules/express/lib/application.js:635:24)
    at Object.<anonymous> (/home/container/index.js:182:5)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1767:8)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 20376
}
#

this was when i kept the port according to my ptero panel server, when i changed the port to 3000/8000 same error came just in the error the port 20376 changed to the port i used in app.listen()

viscid citrus
#

anyway i can listen to votes as well as shard my bot?

ping me if anyone replies

restive otter
#

Yes, just like the normal way

viscid citrus
restive otter
#

Just like without sharding

#

Sharding doesn't change anything to your code logic

viscid citrus
#

but am getting the error of port already in use cuz am listening to the votes

#

and when i change the port same error

restive otter
#

Because you're starting multiple times the web listener instead of only once

viscid citrus
#

it isnt mu;tiple times, its just in the index.js and no where else in the code, and the sharder file reads it

restive otter
#

I guess the manager will execute that file X times the amount of shards you have

#

Why can't you just use something like

const client = new Client({ shards: "auto" });
#

Shards will be created automatically

#

Not sure if that's up to date code though, but docs says it's a thing

#

Otherwise if you want to use that shard manager, it will execute your index.js files X times, X being the amount of shards you have. So it will start X times a web server on the same port, which obviously won't work.

#

To solve that you can start the web server outside of the index.js file and either share the information to all shards when a user voted, or you can probably just make a global web handler for it. Not sure how that could be done in JS though krShrug

jaunty plank
#

The sharding manager should contain the webserver, from that point you can broadcasteval whatever you need to

restive otter
#

can someone tell me

#

what kind of encoding/encryption they use for voting payload

#

Neither

restive otter
#

It's just a webhook sending json data

#

encryption definitely not

#

and the data is not encoded, besides the json encoding

dim kettle
#

Its using normal https, and does have the ability to send a user set password in the headers (to allow you to validate that the request is coming from Top.gg servers)

#

But nothing more that as Krypton said

restive otter
restive otter
#

Why would there be one @grave vigil?

#

Giveaways are over since like 3-4 months, you're just a little bit late.

#

Also wrong channel to ask for that sort of thing

stable nexus
#

hello, is there any aoi.js users who know how to use the voting system?

jaunty plank
# viscid citrus could you elaborate a bit?

Yeah sure.

You cant listen to a single port multiple times, for example in each shard. So what you do is have it run in the sharding manager file.

const { ShardingManager } = require('discord.js');
const  { bot_token } = require('./config.json');

const manager = new ShardingManager('./index.js', { totalShards: 2,
     token: bot_token });

manager.on('shardCreate', shard => console.log(`Launched shard ${shard.id}`));

manager.spawn({timeout: Infinity});

const express = require("express")
const app = express()
const webhook = new Topgg.Webhook("my-webhook")

app.post("/dblwebhook", webhook.listener(vote => { // running with the sharding manager
  manager.broadcastEval(async (client, { vote }) => { // broadcasteval to every shard
    // my code stuff
  }, { context: { vote } })
}))
app.listen(20376)

The above code will only run once, but every webhook request will be sent to every shard via a broadcast eval.
From there you can do any necessary checks, or do anything you would typically do.

Just a bit of warning, all shards need to be ready before doing a broadcast eval. If your shards are not ready before receiving a webhook it can cause crashes. This most often happens when someone votes shortly after your bot is restarted. Top.gg will then retry the request up to 10 times over a period of 17 minutes. That can cause a bit of a crash loop. Which is no good ๐Ÿ˜ฆ
I would offer a solution, but I'm still in the early stages of working on this and I'm not entirely sure what the best way of handling it is.

My current solution is just wait to start broadcast evaling until the manager.spawn() promise resolves, but if an individual shard restarts the error would occur again.

viscid citrus
jaunty plank
#

๐Ÿ‘€ if you dont need the code to run on every shard you dont need to do any of this right.

#

If you're just sending data to a database it doesn't matter.

raven birch
#

Just got this

TopGGAPIError: 504 Gateway Timeout
    at Api._request (/home/container/node_modules/@top-gg/sdk/dist/structs/Api.js:61:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Api.postStats (/home/container/node_modules/@top-gg/sdk/dist/structs/Api.js:86:9) {
  response: {
    statusCode: 504,
    headers: {
      date: 'Thu, 30 Mar 2023 18:25:48 GMT',
      'content-type': 'text/plain',
      'content-length': '14',
      connection: 'keep-alive',
      'cf-cache-status': 'DYNAMIC',
      'strict-transport-security': 'max-age=15552000; includeSubDomains; preload',
      'x-content-type-options': 'nosniff',
      server: 'cloudflare',
      'cf-ray': '7b02643cdb70adbc-ATL',
      'alt-svc': 'h3=":443"; ma=86400, h3-29=":443"; ma=86400'
    },
    trailers: {},
    opaque: null,
    body: BodyReadable {
      _readableState: [ReadableState],
      _read: [Function: bound resume],
      _events: [Object: null prototype],
      _eventsCount: 3,
      _maxListeners: undefined,
      [Symbol(kCapture)]: false,
      [Symbol(abort)]: [Function (anonymous)],
      [Symbol(kConsume)]: [Object],
      [Symbol(kBody)]: null,
      [Symbol(kContentType)]: 'text/plain',
      [Symbol(kReading)]: false
    },
    context: undefined
  }
}
viscid citrus
restive otter
#

5xx are server errors, nothing you can do besides trying again later

viscid citrus
#

but the same code use to send data & message before sharding

jaunty plank
#

What code did you use?

viscid citrus
#
//sending vote message & saving votes to db
//const User = require(`${process.cwd()}/Models/User.js`)
//const Topgg = require("@top-gg/sdk")
//const express = require("express")
//const app = express()
//const webhook = new Topgg.Webhook("mywebhook")
//
//app.post("/dblwebhook", webhook.listener(vote => {
//
//  User.findOne({ userId: vote.user })
//    .then(olduser => {
//      if (!olduser) {
//        const newuser = new User({
//          userId: vote.user,
//          voteTime: Date.now(),
//          voteStreak: 1,
//        });
//        newuser.save();
//      } else {
//        olduser.voteTime = Date.now();
//        olduser.voteStreak = olduser.voteStreak + 1;
//        olduser.save();
//      }
//
//      User.findOne({ userId: vote.user })
//  .then(voter => { 
//
//    if (voter) {
//      
//     if (vote.isWeekend === false && voter) {
//      const nonweekend = new EmbedBuilder()
//      .setTitle(`Vote`)
//      .setDescription(`Thank you for voting for me! You have voted for me **${voter.voteStreak + 1}** times!`)
//
//      client.channels.cache.get(`1073909878516629526`).send({ content: `<@${vote.user}>`, embeds: [nonweekend] })
//     } else {
//      const weekend = new EmbedBuilder()
//      .setTitle(`Vote`)
//      .setDescription(`Thank you for voting for me! You have voted for me **${voter.voteStreak + 2}** times!`)
//      .setFooter({text: `It's the weekend! You get double rewards!`})
//
//      client.channels.cache.get(`1073909878516629526`).send({ content: `<@${vote.user}>`, embeds: [weekend] })
//     }
//    } else {
//      console.error(`No user found with ID: ${vote.user}`)
//    }
//
//    if (voter.voteStreak > 0 && voter.voteStreak < 7) {
//      //first week rewards
//    } else if (voter.voteStreak > 6 && voter.voteStreak < 14) {
//      //second week rewards
//    } else if (voter.voteStreak > 13 && voter.voteStreak < 21) {
//      //third week rewards
//    } else if (voter.voteStreak > 20 && voter.voteStreak < 28) {
//      //fourth week rewards
//    } else if (voter.voteStreak > 27 && voter.voteStreak < 35) {
//      //fifth week rewards
//    } else if (voter.voteStreak > 34 && voter.voteStreak < 42) {
//      //sixth week rewards
//    } else if (voter.voteStreak > 41 && voter.voteStreak < 49) {
//      //seventh week rewards
//    }
//
//  }) 
//  })
//     
//    .catch(error => {
//      console.error(`Error finding user: ${error}`);
//    });
//}))
//app.listen(20376)

So this was used in my sharding file this without the commenting+broadcast eval part

This code used to work when I didn't had sharding

jaunty plank
#

Looks like you dont have a client in that code, so you're fetching a channel from nothing and sending to nothing.

#

It honestly might just be easier to use a discord channel webhook rather than sending the message via your bot and then run it on a separate process(a separate NodeJS program).

#

Then you can just avoid the sharding issue all together.

#

Sadly, this is one of those things when you go from non sharded to sharded you'll want to rewrite and not use previous code.

vagrant lava
jaunty plank
#

If you've spammed it a lot in a short period of time like that you're probably ratelimited

#

try again later.

vagrant lava
#

oops

timid basin
#

b

green python
#

is there anyway to use top.gg API to get the announcements from my bot and send it to my support server?

restive otter
#

no

viscid citrus
jaunty plank
#

(also the fact everything is commented out doesn't help, but I know you mentioned that)

viscid citrus
jaunty plank
#

sharding changes how things work

#

fundamentally you have to think about it a different way.

#

Webhook comes in, goes to sharding manager.
The sharding manager isn't a client, it doesn't have channels or guilds cached, nor any "bot" related stuff.

You need to find the shard which has the client which has the channel cached that you want to send webhook messages to.
Which means broadcast eval to all shards and check if the channel is cached.
then handle it as normal.

jaunty plank
#

Ideally on its own process since it shouldnt depend on your bot anymore.

This is assuming all you want to do is access the db and send that message.

nova sierra
#

hi i have a qn:

is it possible to use the api to check if the user has voted in the past 12 hours and direct them to the link?

jaunty plank
nova sierra
#

is there a lib for it?

jaunty plank
nova sierra
#

is this how u use it?

solid imp
# nova sierra

iirc, api.hasVoted() returns a promise, use await or else your result would be undefined

viscid citrus
woven coral
#

can anyone explain what the difference between avatar and defAvatar? because i still don't understand it from their description alone

#

when is the proper time to use one or the other?

restive otter
#

avatar is the normal avatar hash ig

woven coral
#

they also give out different hashes iara_think_thonk

restive otter
#

could you copy and paste that hash

woven coral
#

but i still dont know what the defAvatar hash correlates to

restive otter
#

sec

#

huh

#

still cant find anything about that hash

woven coral
restive otter
#

the default avatar is calculated using user discriminator as far as i can see in d.js

woven coral
#

yeah i know that

#

but the default avatar url looks nothing compared to that hash

#

its simply just 0.png 1.png 2.png 3.png 4.png

restive otter
#

yeah

#

wait

#

are top.gg bot avatars loaded from cdn or not

#

i mean

#

if the icon is missing

woven coral
#

shrug

#

anyway

#

what is clientid for? it's in the examples but not documented on the Bot structure onesieKEKW

#

what's it's purpose when you already have id

#

god the API is so poorly designed

restive otter
woven coral
#

is shards actually a number[] or a string[] iara_think_thonk

restive otter
#

๐Ÿ’€๐Ÿ’€

woven coral
#

gotta love misleading documentation

restive otter
#

Since it doesn't make sense people use number/int in API wrappers

restive otter
#

Only thing that would make sense to me otherwise it's just redundant

restive otter
#

Love to see it

woven coral
restive otter
#

What else can it be CS_pepehmm

#

Users can only choose between a small range of pre-defined colors, why would it not return a valid hex value

woven coral
#

and how can pre-defined colors generate invalid hex values

restive otter
#

Aren't these the UI colors?

restive otter
restive otter
#

watdafuk

#

It's color? just don't return it if the user hasn't set a color or something

#

One more thing added to the poor designs

woven coral
#

also they seem to have removed the color option

#

so should it be marked as deprecated? iara_think_thonk

#

i don't see the color applying to my user profile in any way either

restive otter
#

It's not on your profile

#

It's when you click the user icon at the top right

#

You can choose color there

#

That thing

woven coral
#

apparently it was from an older database

#

because you used to have customization for profile colors with hex

restive otter
grave vigil
grave vigil
rain heart
#

thats just formatting by discord

restive otter
#

```language
code
```

#

language is something like c, cpp, cs, etc.

grave vigil
restive otter
#

Maybe read above

rain heart
#

see what Krypton said

grave vigil
#

``language```

restive otter
grave vigil
#

:b1nzy:

grave vigil
rain heart
#

read above of the link

#

this is the wrong channel nonetheless

woven coral
#

quick question

restive otter
#

blazingly fast question

woven coral
#

if you post your bot stats to some random bot ID will it return 401

#

or something else

restive otter
#

i mean you can try

#

I'd say 401 but seeing how the API is

#

Could very well return anything at this point

#

Eventually 403

rain heart
#

It will return with a unauthorized error if requesting a endpoint that the token doesn't belong to

woven coral
#

so 401 or 403

restive otter
#

Unauthorized is 401

#

And why not just try it wow

woven coral
#

too much effort

plucky lance
restive otter
#

is that battless taking control over null

hushed acorn
#

battleless*

worthy sail
#

Test

restive otter
#

Nevermind I fixed it

runic creek
#

Ok

woven coral
#

@restive otter @rain heart looks like it's actually 403

rain heart
#

Yes, as per docs

restive otter
#

oh my god

restive otter
#

So it doesn't return an unauthorized error

woven coral
#

401 is only for invalid token ig

rain heart
#

It literally has the same meaning, both mean that you do not have access to a certain resource

restive otter
#

Unauthorized has not the same meaning as forbidden, no

woven coral
restive otter
#

401 is no credentials or invalid

rain heart
#

Cry about it then

restive otter
#

403 is valid credentials but no permissions

#

So 403 makes sense

#

Though not documented anywhere

autumn plume
#

Can i ask doubts here?

restive otter
#

Unless I've missed that part in the docs

restive otter
woven coral
#

it's not documented in the docs onesieKEKW

restive otter
#

as usual

woven coral
#

ngl the docs has a lot of missing things - i might make a pr in the future

restive otter
#

At this point just use the api and make some deductions kek

woven coral
#

ran into some bugs, despite fully complying to docs once onesieKEKW

restive otter
woven coral
#

guys

#

what is the appropriate time for autopost delay

#

30 mins?

plucky lance
#

yeah

restive otter
#

5 seconds GIGACHAD

#

spam spam spaaaaaam

woven coral
#

thanks krypton

restive otter
#

no problem

#

also make sure to use at least 5 threads

woven coral
#
use tokio::task;

for i in 0..5 {
  task::spawn(async move { client.post().await; });
}
``` ![sdTroll](https://cdn.discordapp.com/emojis/887041360413212692.webp?size=128 "sdTroll")
restive otter
#

very good

full mesa
#

Hi. When I hit the top.gg/api/bots url, the .body is an extremely long string of html. I was expecting it to return a JSON response (like what the docs say), but it didn't. Is there a reason for this?

#

Small portion

jaunty plank
rain heart
#

That looks like the translation strings from top.gg yeah

woven coral
brisk summit
#

Anything with api?

feral holly
#

where can I get my api key?

plucky lance
#

Topgg > Login > Edit your bot > Webhooks (left menu)

#

Generate an API key there

spice bobcat
#

Why the votes that were in my bot went

rain heart
#

Votes reset monthly

spice bobcat
#

Ok

pseudo cloud
#

Is it possible to put a discord webhook to be notified when voting for my bot?

restive otter
#

Yes, use the webhook api of Top.gg and send a Discord webhook via your web server that catched the Top.gg webhook

#
Top.gg ----POST----> Your Web Server ----POST----> Discord
#

You will need a web server in-between to catch the request of Top.gg

fresh prawn
#

hi ! sorry to disturb but I've got a problem with the kvote in the karuta server / game... can I ask some help to anyone ?

my "vote" check keep being in ๐Ÿ”” when it should be ๐Ÿ”• ... it's been like 1 week, or 2, the issue won't get fixed... idk what to do... and I don't receive the notifications on my private messages anymore to remind me to vote...

does anyone knows what's going on ? thank you so much in advance !

rain heart
#

-wrongserver

wooden juncoBOT
#

topggDotRed Hey! We think you have our server mistaken. We do not provide support, help, or advice for any bot. You need to click on the "Discord Support Server" button on the bot's page of the bot you need support for. If there isn't a button that says "Discord Support Server" or nothing else mentioned about a support server, the server invite is invalid or you were banned from the bot's support server, then we can't help you. Sorry :(

rain heart
#

As you have been previously told

#

This is not related to topgg

fresh prawn
#

oh sorry.. when i click on that it keeps sending me to this discord

rain heart
#

Scroll down, click on the "Discord Support Server" on the bot page of karuta

#

Not on the Luca bot for example, on the karuta bot page

restive otter
fresh prawn
#

I'm stupid ๐Ÿ˜ญ tysm for your patience !

#

I won't bother anymore ๐Ÿ™๐Ÿผ thank you very much

full mesa
#

Can you tell what URL it's hitting from what it was printing?

rain heart
#

What happens under api/

jaunty plank
feral holly
#

I did this but the server count still hasn't changed

#

nvm got it to work

eternal iron
#

where can I find my API key?

#

nvm found it

woven coral
hearty lintel
woven coral
#

fair point

hearty lintel
autumn valley
#

how can i install top.gg api to receive vote webhook?

runic creek
#

Read pinned messages

autumn valley
#

oh ya got it @topgg/sdk

#

btw will this code still work? I made it long time ago

const Topgg = require("@top-gg/sdk");
const app = express();

const api = new Topgg.Api(process.env.topggtoken);
const webhook = new Topgg.Webhook(process.env.topggauth);

app.post("/dblwebhook", webhook.middleware(), (req, res) => {
  // req.vote is your vote object e.g 221221226561929217
  console.log(`${req.vote.user} Voted the <bot>!!`);

  // database add
  
});
feral holly
#

Hi can someone provide me with an example of how to use topgg api in commands like if the user hasn't voted it sends them a message saying they have not voted and if they have voted it lets them use the command

restive otter
#

There are examples in the library you will be using

feral holly
#

I'm using discord.js but I can't find it anywhere

restive otter
#

I can though, read the docs

feral holly
#

I did

restive otter
harsh quiver
#
resolve Promise { { voted: 1 } }```
#

anyone know about this error?

#

My code: js let voted = await topgg.hasVoted(user.id)

restive otter
#

It's not an error?

hazy kayak
#

Why is top.gg stats not being counted? We refreshed the token yesterday to prevent something and added it back but its still not able to post to top.gg?

rain heart
#

the servercount is posted by your bot, ensure you're using the correct token

#

regenerate, refresh the site, then copy the token visible

hazy kayak
#

Yea I'll try that thanks

harsh quiver
rain heart
#

Wrong channel, but using html

restive otter
potent sundial
#

hi, how do i check for that if a user has upvoted my server?

rain heart
#

Thats not possible with the api as servers do not have one

#

You will either need the role rewards feature (refer to https://support.top.gg) or use webhooks, which requires programming

potent sundial
#

yeah I can program thats where my question came in, does it work the same way as the bots do as far as ive understood it works by hosting a webserver that recieves webhooks from top.gg containing the information?

rain heart
#

Correct, just provides different data but essentially the same

potent sundial
#

whats the endpoint i cant figure to find it? and also afaik from what ive understood you need a bot from top.gg to do this, like for discord

rain heart
#

The only usable feature to collect votes is webhooks

potent sundial
#

oh, so I can listen for both servers and bots, individually without having to have different routes? so the only route required is for the server?

#

also cant find where to get the token from

rain heart
#

Again

#

Theres no api for servers like bots does

#

Yes you can theoretically use the same path on a webhook, as long as you ensure that the data you're receiving is categorised by what is being voted for

rain heart
potent sundial
#

reading rn

#
import topgg

# This example uses topggpy's webhook system.
bot.topgg_webhook = topgg.WebhookManager(bot).dbl_webhook("/dblwebhook", "password")

# The port must be a number between 1024 and 49151.
bot.topgg_webhook.run(5000)  # this method can be awaited as well


@bot.event
async def on_dbl_vote(data):
    """An event that is called whenever someone votes for the bot on Top.gg."""
    if data["type"] == "test":
        # this is roughly equivalent to
        # `return await on_dbl_test(data)` in this case
        return bot.dispatch("dbl_test", data)

    print(f"Received a vote:\n{data}")


@bot.event
async def on_dbl_test(data):
    """An event that is called whenever someone tests the webhook system for your bot on Top.gg."""
    print(f"Received a test vote:\n{data}")

``` this is an example for how to listen on server votes right?
#

ohhh

#

nvm

#

its for the bot

rain heart
#

Unsure if topggWebhooks also supports servers

potent sundial
#

so what kind of webhook am i supposed to create to check for the server upvote

#

this server bit is very confusing the bot bit looks simple

rain heart
potent sundial
rain heart
#

Then it won't work yeah

#

You might need to make your own webhook using flask for example

potent sundial
#

all this hassle to have 3 more views on server listing

#

is there a way to speed up bot submission? like payment or something

hushed acorn
#

realistically, no

restive otter
#

BRs don't accept bribes, and if you try you may even get banned

#

So all you can do is patiently wait like everyone

autumn valley
#

how can i post server count in top.gg?

jaunty plank
#

-servercount

wooden juncoBOT
autumn valley
#

thx

stable bay
#

here is my code and err .. i don't get it why it says cannot initialize ..

restive otter
#

Why are you subtracting api from this.client.config.topgg

#

You can't have variables named like topgg-api

#

Something like topgg_api is possible though

jaunty plank
#

you can do config["topgg-api"]
but ah, bad

autumn valley
#

why i got this error after i added auto poster

autumn valley
#

is there anything i need to do to fix it?

rain heart
#

taking a fair guess that whatever that anticrash is, is the cause

potent sundial
restive otter
#

That's what happens when you copy pate code from GitHub

#

Also give the source of where you've copied the code as it may help others to help you

autumn valley
#

what copied

autumn valley
#

its from docs

restive otter
#

Here is an example

#

If you copy paste code without even knowing what it does you will face such issues

#

Unrelated to the API

autumn valley
#

dude it was given to me by a dev from discord developers to fix my unknown interaction problem

restive otter
#

Or even better, ask to the one who gave you that

restive otter
#

????

#

That's unrelated to the channel, use channels correctly jeez

#

You get the error because of copied code, ask in #development my god

#

Without that copied code it would most likely not even throw an error

tidal idol
autumn valley
#

no one asked for ur opinion here dude talk about it in #general

restive otter
#

It's not about my opinion

restive otter
#

It's about you keeping on asking in the wrong channel

autumn valley
#

i just asked cuz i got it after using the top.gg package

rain heart
restive otter
#

Use channels correctly for once

rain heart
#

since your issue turned into a general development issue rather than an api one

autumn valley
#

ya i would dude but this dude is like copy and paste issue

wanton sluice
#

Is there way to check all voted users in 12 hours ? i need those for save external database (webhook bot is down for Capple hours some users vote are not saved that's why i need this)

rain heart
#

There's no efficient and reliable way except hosting your own webhook

#

There's a last 1000 votes endpoint, but does not reflect times

wanton sluice
rain heart
#

Check the docs, though again keep in mind that it does not reflect times, meaning it will still show votes that have long expired

wanton sluice
#

Hm, then there is no way

rain heart
#

Except again webhooks you'd host yourself but yeah

steady sand
#

is there any way to count the votes of a user

#

like when a user use /vote command

#

it shows him the how many times he had votes

steady sand
runic creek
#

Only if you collect this data yourself every time someone votes

raven copper
#

guys how to get toppgg token?

rain heart
#

Read the pins

elfin granite
#

Object {
error: Unexpected token o in JSON at position 1
}
this happens when I try to post bot server count with http requests

restive otter
#

You're probably posting content as being [object Object]

#

Print what you post and analyze it

#

And you most likely need to JSON.stringify({...}) your body content

elfin granite
elfin granite
#

Wait...there was another user in this channel that helped me...he has probably deleted the message...

silk echo
#

so gateway timeout means that my bot got rate-limited?

rain heart
#

No

#

Just means that cloudflare doesn't like top.gg or vise versa

#

Read the docs on ratelimiting

silk echo
#

oh lol

#

ok

woven coral
#

petition to make /bots/:bot_id/reviews public

#

an undocumented private api endpoint already exists so i don't see why it's not a part of the official API by now

tidal idol
#

wait that exists

#

that would be a great endpoint icl

#

love how the api bug i reported last week still happens and i did not get a reply

woven coral
tidal idol
#

ah

#

doing some testimg

#

https://top.gg/api/bots/866364881917837312/votes returns 24 votes, not the last 1000

#

my bot has 41 votes so getting 24 is weird

woven coral
tidal idol
#

yes

#

jk i was testing

#

nothing harmful ๐Ÿ‘

#

found some bugs where it returns json { "error": "Unauthorised" } when no auth provided, but 404 returns a html page when valid auth is provided, error should be better handled for trying to access bots you don't own via api, same for ones that do not exist

woven coral
tidal idol
#

yes

#

i meant to write that

woven coral
#

just check the status code

tidal idol
#

i have more monthly votes tho, i have 41 not 24

restive otter
#

Hello, Can someone tell me how i can make an announcement and give a role with the bot when someone votes? but for it to be auto

runic creek
#

Read the pinned messages, maybe look for some library depending on what language you use and that's it. The rest depends on your programming skills

sinful adder
#

How can i know when a user votes on python?

#

Like how some bots pm me after i vote for them

jaunty plank
rain heart
#

using the check endpoint

#

but you will not be able to get realtime votes

#

that is ONLY possible with webhooks

#

a very bad workaround but perhaps

jaunty plank
#

Some people have done it, but yeah its not how it should be used.

#

if that's your only option then that will be what you have to do.

a fair number of developers do use the service that way, its just very iffy and not something I can give support for if/when something goes wrong.

onyx prawn
#

down again?

tidal idol
ripe lake
#

@tacit elm

#

@wild lantern

#

@restive otter

#

Where is flantic @restive otter

oak drift
#

I really don't like to do this but I can't think of any reason why this code is running on my macOS system but on the raspberrypi the endpoint gives me back the Error 401 Unauthorized I don't change the code in any means it's the same token the same everything.

ripe lake
#

@restive otter bro bot ko bekar kariya hai

rain heart
#

Then it should work

tidal idol
tidal idol
#

Different Krypton

heavy patio
#

I used the method and get an error message in the console. Can someone help me?


File "/app/main.py", line 27, in

bot.topggpy = topgg.DBLClient(bot, dbl_token)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/topgg/client.py", line 98, in __init__

self.http = HTTPClient(token, loop=self.loop, session=kwargs.get("session"))

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/topgg/http.py", line 84, in __init__

self.session = kwargs.get("session") or aiohttp.ClientSession(loop=self.loop)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 228, in __init__

loop = get_running_loop(loop)

^^^^^^^^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/aiohttp/helpers.py", line 289, in get_running_loop

if not loop.is_running():

^^^^^^^^^^^^^^^

File "/usr/local/lib/python3.11/site-packages/discord/client.py", line 140, in __getattr__

raise AttributeError(msg)

AttributeError: loop attribute cannot be accessed in non-async contexts. Consider using either an asynchronous main function and passing it to asyncio.run or using asynchronous initialisation hooks such as Client.setup_hook```
next mica
#

330139565

#

#Myanmar

rain heart
#

?

#

-api

wooden juncoBOT
#

topgg This channel is for suggestions, help, and bugs related to our official API libraries and documentation found at https://docs.top.gg/

If you need help with other development, please use #development.

next mica
#

330139565

rain heart
#

??

#

once again, move to a different channel if you have nothing api related

oak drift
rain heart
#

what does your json data look like

oak drift
#

I do not give a json especially I use the data parameter instead with a dictionary

#

from the requests libary

rain heart
#

then it will not work, you need to provide valid JSON data

oak drift
#

as what you can see at the top screenshot

rain heart
#

import the json library and just json.dumps on your data variable

#

that should work

oak drift
#

but it works on my macOS system, why should python requests behave differently than on a linux system

oak drift
rain heart
#

generally good practice to have it done through json.dumps nonetheless, so you can both ensure it is, aswell as ensure it is valid data before passing it on (as invalid one will not even attempt to send it and just break on that)

oak drift
#

now it says that " is a unexpected token?

#

the json looks like this {"server_count": 155} what should be wrong with that?

plucky lance
#

Did you add the appropriate header to the request

#

Including the right content type

plucky lance
#

Do you add the content as data or as body?

#

Can you show the entire request please the code

oak drift
#

This is my code rn

rain heart
#

\ ?

#

you have a newline on your data

#

or nvm

#

how the fuck

oak drift
#

yeah

#

thats whats going in my head for a few days now

rain heart
#

lemme actually ensure this is not related to top.gg

oak drift
oak drift
rain heart
#

could you concert the whole json dumps into hex?

print(string.encode("utf-8").hex())
#

this should allow you to see the raw text and allow you to see what is literally being added there from somewhere

#

there is a \ before your json data

#

or just print(repr(string))

oak drift
#

yep

#

lol

#

what

#

now it didn't give a error back?

#

but I changed nothing from the code?

oak drift
rain heart
#

whatever your python is on

#

I need it

#

or did you have a different version on?

oak drift
#

I didn't update it rn

#

I literally changed nothing

oak drift
#

and now it also wworks without that

oak drift
oak drift
#

I changed the parameter back to data from json cuz I tried something different

#

so even if I pass a json I should use the data parameter and not the json parameter makes sense yes for sure

plucky lance
#

If it is already solved then nvm

oak drift
#

Idk if I'm misunderstanding but isnโ€™t there standing that it does the same thing?

restive otter
#

Correct, simply in a different format

#

They're both optional so you give one of them only

tropic burrow
#

Hi all I want to know how to get my api key

restive otter
#

The settings for this can be found while editing your bot or community, underneath the โ€œWebhooksโ€ section located on the left.

oak drift
#

How does the topggpy handle the on_dbl_vote function? I mean how does it work with a webhook or what

jaunty plank
#

It uses the webhook right.

woven coral
#

ngl /api/search would look good on the public api

restive otter
#

what does '/dblwebhook' do?

#

is that a placeholder for the webhook url?

#

No, it's the endpoint that needs to be called

#

e.g. if it's /webhook you'll need to put the webhook URL in your bot's settings to

http(s)://<DOMAIN/IP>:PORT/dblwebhook
#

e.g.

https://my-awesome.bot:5000/dblwebhook

and obviously you need to own my-awesome.bot and run your web server there

#

and if you don't have a domain it's just your web server's IP like

http://123.45.67.8:5000/dblwebhook
woven coral
#

just curious; what is the use behind this?

rain heart
#

I used it for vote reminders before, being able to tell if they clicked the link on the reminder to then tell them "thanks for voting again"

#

Also probably analytics too

woven coral
rain heart
#

Its an optional parameter, you can add it to the vote url and will be provided on the webhook data

woven coral
#

ah i see

restive otter
#

is it possible to get the guild of a user who voted for my bot?

rain heart
#

You can use the query parameters above

restive otter
#

awesome ty

shrewd loom
#

Why am I not able to use @top-gg/sdk?
I did the same as it is on the npm website and it won't

#

there are no errors, just nothing happens when someone votes for the bot

shrewd loom
#

Need to host express?

shrewd loom
#

I don't know how to do this in VSCode

runic creek
#

This will be hard to do on a local machine

woven coral
#

like it just constantly sends the same response

#

with the same bots, no matter your input

restive otter
#

the same response in its entirety?

#

because i could totally imagine that auctioned bots will be the first appearing bravemmlol

woven coral
#

it matches ~38k bots

#

and the first bot in the list is always Hydra

#

despite the username query not having to do with it ๐Ÿ˜ญ

#

like try

fetch("https://top.gg/api/bots?search=" + encodeURIComponent("username: usernameHere"), { headers: ... })
#

and see how the result is always the same

tidal idol
#

i remember testing it over a year ago with that shitty topgg-simulator site i made, it has returned the same thing for probs over a year

woven coral
#

LMAO

tidal idol
#

also might just be me but i think the docs should be remade

#

it's poorly formatted and feels over complicated

woven coral
#

literal pepega

tidal idol
#

bearing in mind most of its users are beginners it just feels cluttered and needs reworking

woven coral
#

i wonder what the Top.gg Team members are working on at the moment

tidal idol
#

lol

#

clearly not the site

woven coral
tidal idol
#

hope so

#

can't wait for new auctions system

#

much needed ๐Ÿ‘

woven coral
#

but the API and docs is broken notlikekomi

#

and i'm concerned how the website goes down very frequently

tidal idol
#

true

#

the API does need rewriting why

#

and also features like review editing, deleting and replying needs fixing

woven coral
#

either people are constantly DDOSing it or the website is badly maintained

tidal idol
#

i doubt its ddosses

restive otter
tidal idol
#

yes

#

inb4 i use my tailwind template one from tailwind ui ๐Ÿ‘

#

should use that

restive otter
#

well it's not bad

#

at least better

tidal idol
#

current ones are just cluttered and copy pasted from another docs

#

also yeah true

woven coral
#

noice

restive otter
#

damn time flies fast

restive otter
tidal idol
#

also true

restive otter
#

from small years old bug fixes

#

to entire api

tidal idol
#

yeah

tidal idol
#

testing with that tailwind one

restive otter
#

Pretty nice tbh

#

Background color should be different though

tidal idol
#

yeah

#

its adjustable

woven coral
#

also nice issue 420

tidal idol
#

yes but like this is something which we can help with, we are unable to help with API bugs why

woven coral
#

i doubt they will update the documentation at this point

#

the last commit was a year ago onesieKEKW

tidal idol
#

lmfao

restive otter
woven coral
#

like what

restive otter
#

Like one post with all the api issues

woven coral
#

that's the only major api bug that i know

restive otter
#

e.g. inconsistency, /api/bots not working, etc.

woven coral
#

inconsistencies like the whole camelCase snake_case thing can break lots of bots if they're changed

restive otter
#

Not really no

jaunty plank
#

๐Ÿ‘€ breaking changes are expected with an unreleased api like ours!
we're not even on v1 yet!

#

lmao

restive otter
#

Can't you make like aliases?

#

That will get deprecated after some time

jaunty plank
#

Ideally, updates would be on its own endpoints and the old ones no longer receiving support.

woven coral
#

sooo when will v1 come to existence?

jaunty plank
#

kind of like how discords api is v1 v2 v3

jaunty plank
woven coral
#

soonโ„ข๏ธ

#

what is the Top.gg Team currently prioritizing on atm?

jaunty plank
#

Some internal stuff last I heard

woven coral
#

internal stuff iara_think_thonk

tidal idol
woven coral
tidal idol
#

i have 0 clue i am currently just playing around with it

restive otter
#

honestly worth it

woven coral
#

because it genuinely looks good

jaunty plank
restive otter
#

it's not like it won't change anything for the api itself

jaunty plank
#

^_^

restive otter
#

and definitely looks better than some randomly pasted apollo docs

tidal idol
#

lmfao

woven coral
#

me when the private api endpoints are better maintained compared to the public ones mimu_thisisfine

tidal idol
#

lol

jaunty plank
#

dw, I'm like a year into asking for stuff too

woven coral
#

agreed

#

top.gg/api/search works but top.gg/api/bots doesn't ๐Ÿ˜ญ

jaunty plank
#

/api/bots hasnt worked for over a year

#

Honestly, probably since the last rewrite

tidal idol
#

@woven coral @restive otter i deployed what i have done so far

#

i like the style of the codeblocks

restive otter
#

Might want to change the prose links color

tidal idol
#

oki doki

restive otter
#

Same for bg color, because on the sidebar it uses that apparently

#

Isn't there an option to enable the sidebar for mobile as well?

#

Otherwise looks pretty nice

#

Where did the

We're going to be working on the next version of the top.gg API (v1) soon, stay tuned!
go trol

tidal idol
tidal idol
restive otter
woven coral
#

@restive otter @tidal idol they have been "working" on v1 for 2 years onesieKEKW

#

currently
yeah right

tidal idol
#

lmfao

restive otter
jaunty plank
#

/s

woven coral
tidal idol
#

just gotta figure out how to get mobile navigation working

restive otter
#

poggies

woven coral
#

make sure to also add proper documentation for the Go and Lua SDK

tidal idol
#

alrighty ๐Ÿ‘

#

i'll go through those and make sure they are added here

#

@golden adder do you have the link for the Top.gg assets drive link?

#

Trying to find the red logo for the favicon

restive otter
#

iirc there was some google drive folder around

tidal idol
#

yeah

#

ah first result KEK sorry for the ping mac

tidal idol
#

ty nully

#

oh lol

restive otter
#

me when favicon is a png and not ico

tidal idol
woven coral
#

virgin ico vs chad png

tidal idol
jaunty plank
tidal idol
restive otter
#

That's been the case for years krThisIsFine

tidal idol
#

also its github.com/top-gg/go-sdk not github.com/top-gg/go-dbl right

restive otter
#

yeh

tidal idol
#

the PR (2 years old) for adding go docs says go-dbl lol

restive otter
#

Github keeps aliases so not that much of a big deal tbh

tidal idol
#

true

#

updating it anyways just to be on the safe side

restive otter
#

yeh

tidal idol
#

deployed

#

copied every page over

#

and fixed prose colour

#

just gotta figure out mobile sidebar

woven coral
#

now good luck getting them to merge your pull request

tidal idol
#

lol

woven coral
#

if they ever will

restive otter
restive otter
#

could be possible though, maybe they want to get rid of the apollo copy pasta as well

tidal idol
#

yeah

#

well this is tailwind ui copypasta but not copypasta

restive otter
#

it's not really copy pasta

tidal idol
#

true

#

its a template SickBro

#

a much nicer template

restive otter
#

templates are made to be used lmfao

#

that apollo yoink isn't a template

#

it's a stolen ui kek

tidal idol
#

lmfao

woven coral
#

which is a template

restive otter
#

with nice ads

tidal idol
#

i'm gonna go add better meta tags

restive otter
#

at least they showcase they may be using apollo in the backend for graphql

woven coral
#

top.gg will probably buy apollo soon idk

#

will a graphql top.gg api be a thing

tidal idol
#

not even v1 is here yet

restive otter
#

also haven't seen any company using a graphql api

#

other than internally

tidal idol
#

at least top.gg is not as bad as replit

#

replit uses a websocket for an API

#

and now

#

Better meta tags

woven coral
#

bun

#

you've put too much effort into this mimu_thisisfine

tidal idol
#

lol

restive otter
tidal idol
#

i started the mass migration nearly 2 hours ago

tidal idol
restive otter
tidal idol
#

ah fuck i closed photopea thisisfinefire

restive otter
#

also some spacing between the top and bottom text maybe

#

the inconsistency is real

#

well keep it as small T

#

everywhere else it's big T but not the social card

tidal idol
#

who does the graphic design for top.gg

woven coral
#

Gracjan

#

iirc

tidal idol
#

i thought they left

restive otter
#

yeah

woven coral
tidal idol
#

no as in like the graphics they do for announcements etc

#

isn't it mac

restive otter
#

every person we know has left krThumbsUp

woven coral
#

probably Marco

#

or Mac

woven coral
restive otter
#

e.g.

tidal idol
#

every dev ever

restive otter
#

yeah i mean the devs, not the staff kek

woven coral
#

then

#

how many Team members are there

#

since it's unhoisted we'll probably never know for certain

#

<@&742408262648987748>

restive otter
#

isn't there some bot that can list all members that has a role kek

tidal idol
#

This better?

restive otter
#

bit more space i'd say

narrow zenith
#

^

tidal idol
#

oki doki

restive otter
#

otherwise it's good

tidal idol
#

ignore the slight colour change

#

i just screenshotted instead of exporting agian

restive otter
#

yeah better

#

now get that PR rejected krThumbsUp

tidal idol
#

lmfao

#

at this point

#

just a new repo is needed

#

because this is replacing all the code and basically making all the PRs sorted

#

also this is entirely new code KEK

restive otter
#

can probably make that an href to https://discord.com/channels/264445053596991498/412006692125933568

tidal idol
#

true

#

theres another ref to that too i'll change

restive otter
tidal idol
#

also true

honest bronze
#

Hi

tidal idol
#

code href โค๏ธ

restive otter
#

yeh they look amazing

honest bronze
#

Hi guys ๐Ÿ˜„

restive otter
#

honestly idk why i love that

tidal idol
#

i love it a lot

#

i'll push this and then try figure out how to fix mobile

#

also fixing the contrast on this

restive otter
#

yeah especially with the icon

tidal idol
#

yep

#

also not sure about mobile navigation

#

search uses algolia which is a pain

#

might try modifying for local searching lol

tidal idol
restive otter
tidal idol
#

i am stuck for mobile nav ๐Ÿฅน

#

i got rid of search because it was non functional

restive otter
#

yeah search is pretty much useless as well

#

it's such a small doc

#

can't really get lost kek

tidal idol
#

lol

restive otter
#

i'll add lgtm to you pr ASkek

tidal idol
restive otter
#

Netlify couldn't handle it

tidal idol
#

lol

woven coral
#

wym

tidal idol
#

its a 3 year old workflow

woven coral
#

oh and also

tidal idol
woven coral
#

@tidal idol can i add Rust documentation

#

in the meantime

tidal idol
#

go ahead YAY

woven coral
tidal idol
#

make sure to follow my format joeverymad

woven coral
#

wait how do i do that

#

can you make forks of forks on github

tidal idol
#

i have a diff repo as well

#

that was my one i just merged all from because it meant i could generate the preview myself with vercel (better then netlify fr)

restive otter
#

Is it actually the right person?

tidal idol
#

i did not do that

#

its auto because they are the reviewer

restive otter
#

automatic ig

#

yikes

woven coral
tidal idol
#

yes

restive otter
#

Now time to wait years before they will look at it

#

Similar to all other PRs

tidal idol
#

i might add a servers bit, stating that a servers endpoint does not exist, but webhooks etc still work

restive otter
#

that explains why netlify doesn't like it

#

and also why it hasn't been updated since march 2022

tidal idol
#

yeah its annoying why

tidal idol
restive otter
#

can't deploy

#

so can't update

tidal idol
#

they need to move to vercel imo

#

also better for this because vercel โค๏ธ next.js

restive otter
#

yeh

#

I never realized it but

#

it's clear we are on the top.gg documentation

tidal idol
#

lmfao

#

dont think we are

restive otter
#

very clear

tidal idol
restive otter
#

almost forgot it

tidal idol
#

and its lowercase too

#

which I have corrected

restive otter
#

I'll make some review Nerdd

#

Would replace docs with documentation though

#

also the package json name

tidal idol
#

yep

restive otter
#

Would remove that credits page @tidal idol

#

Instead add like a author badge on each SDK's page

tidal idol
#

Thats a good idea

restive otter
#

Something like that

#

Also if you want some fancy syntax highlight for the dotnet sdk