GitHub - pythonthings/top-gg-python-sdk: A simple API wrapper for top.gg written in Python
DBL Python Library
A simple API wrapper for top.gg written in Python, supporting discord.py.
Installation
Install via pip (recommended)
Install from source
pip3 install git+https://github.com/top-gg/python-sdk/
Documentation
Documentation can be found here
Features
- POST server count
- GET bot info, server count, upvote info
- GET all bots
- GET user info
- GET widgets (large and small) including custom ones. See docs.top.gg for more info.
- GET weekend status
- Built-in webhook to help you handle top.gg upvotes
- Automated server count posting
- Searching for bots via the API
Additional information
- Before using the webhook provided by this library, make sure that you have specified port open.
webhook_portshould be between 1024 and 49151.- Below examples are to be used as discord.py cogs. If you need help adding them to your bot, feel free to ask in the
#developmentchannel in our Discord server.
Examples
Posting server count manually every 30 minutes:
from discord.ext import commands, tasks import dbl class TopGG(commands.Cog): """ This example uses tasks provided by discord.ext to create a task that posts guild count to top.gg every 30 minutes. """ def __init__(self, bot): self.bot = bot self.token = 'dbl_token' # set this to your DBL token self.dblpy = dbl.DBLClient(self.bot, self.token) self.update_stats.start() def cog_unload(self): self.update_stats.cancel() @tasks.loop(minutes=30) async def update_stats(self): """This function runs every 30 minutes to automatically update your server count.""" await self.bot.wait_until_ready() try: server_count = len(self.bot.guilds) await self.dblpy.post_guild_count(server_count) print('Posted server count ({})'.format(server_count)) except Exception as e: print('Failed to post server count\n{}: {}'.format(type(e).__name__, e)) def setup(bot): bot.add_cog(TopGG(bot))
Using webhook:
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 = 'dbl_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))
With autopost:
from discord.ext import commands import dbl class TopGG(commands.Cog): """ This example uses dblpy's autopost feature to post guild count to top.gg every 30 minutes. """ def __init__(self, bot): self.bot = bot self.token = 'dbl_token' # set this to your DBL token self.dblpy = dbl.DBLClient(self.bot, self.token, autopost=True) # Autopost will post your guild count every 30 minutes @commands.Cog.listener() async def on_guild_post(self): print("Server count posted successfully") def setup(bot): bot.add_cog(TopGG(bot))