add disnake library support

This commit is contained in:
Victor Kotlin 2021-10-03 16:56:16 +03:00
parent fd59896df9
commit b271effd5a
7 changed files with 41 additions and 9 deletions

View file

@ -1,4 +1,5 @@
from discord.ext import commands from discord.ext import commands
from disnake.ext import commands as commandsnake
import aiohttp import aiohttp
from typing import Union from typing import Union
@ -11,6 +12,7 @@ class BoticordClient:
""" """
This class is used to make it much easier to use the Boticord API. This class is used to make it much easier to use the Boticord API.
You can pass `lib` parameter to specify the library. Supported: ["discordpy", "disnake"]
Parameters Parameters
---------- ----------
@ -34,17 +36,19 @@ class BoticordClient:
"Servers", "Servers",
"Users", "Users",
"bot", "bot",
"events" "events",
"lib"
) )
bot: Union[commands.Bot, commands.AutoShardedBot] bot: Union[commands.Bot, commands.AutoShardedBot, commandsnake.Bot, commandsnake.AutoShardedBot]
def __init__(self, bot, token=None, **kwargs): def __init__(self, bot, token=None, **kwargs):
loop = kwargs.get('loop') or asyncio.get_event_loop() loop = kwargs.get('loop') or asyncio.get_event_loop()
session = kwargs.get('session') or aiohttp.ClientSession(loop=loop) session = kwargs.get('session') or aiohttp.ClientSession(loop=loop)
self.lib = kwargs.get('lib') or "discordpy"
self.events = {} self.events = {}
self.bot = bot self.bot = bot
self.Bots = Bots(bot, token=token, loop=loop, session=session) self.Bots = Bots(bot, token=token, loop=loop, session=session, lib=self.lib)
self.Servers = Servers(bot, token=token, loop=loop, session=session) self.Servers = Servers(bot, token=token, loop=loop, session=session)
self.Users = Users(token=token, loop=loop, session=session) self.Users = Users(token=token, loop=loop, session=session)

View file

@ -1,7 +1,11 @@
from aiohttp import ClientResponse
from disnake.ext import commands as commandsnake
from discord.ext import commands
from typing import Union from typing import Union
import json import json
from aiohttp import ClientResponse
from . import exceptions from . import exceptions
from . import types from . import types
@ -22,6 +26,10 @@ class Config:
"delete_bot_comment": types.Comment, "delete_bot_comment": types.Comment,
"new_bot_bump": types.BotVote "new_bot_bump": types.BotVote
} }
libs = {
"discordpy": commands,
"disnake": commandsnake
}
async def _json_or_text(response: ClientResponse) -> Union[dict, str]: async def _json_or_text(response: ClientResponse) -> Union[dict, str]:

View file

@ -22,6 +22,7 @@ class Bots:
self.token = kwargs.get('token') self.token = kwargs.get('token')
self.loop = kwargs.get('loop') or asyncio.get_event_loop() self.loop = kwargs.get('loop') or asyncio.get_event_loop()
self.session = kwargs.get('session') or aiohttp.ClientSession(loop=self.loop) self.session = kwargs.get('session') or aiohttp.ClientSession(loop=self.loop)
self.lib = Config.libs.get(kwargs.get("lib"))
async def get_bot_info(self, bot_id: int): async def get_bot_info(self, bot_id: int):
""" """
@ -77,7 +78,7 @@ class Bots:
if stats is None: if stats is None:
data_to_send = {"servers": len(self.bot.guilds), "users": len(self.bot.users)} data_to_send = {"servers": len(self.bot.guilds), "users": len(self.bot.users)}
if isinstance(self.bot, commands.AutoShardedBot): if isinstance(self.bot, self.lib.AutoShardedBot):
data_to_send["shards"] = self.bot.shard_count data_to_send["shards"] = self.bot.shard_count
async with self.session.post(f'{Config.general_api}/stats', headers=headers, json=stats) as resp: async with self.session.post(f'{Config.general_api}/stats', headers=headers, json=stats) as resp:

View file

@ -7,6 +7,7 @@ else:
from typing_extensions import TypedDict from typing_extensions import TypedDict
from discord.ext.commands import Bot, AutoShardedBot from discord.ext.commands import Bot, AutoShardedBot
from disnake.ext import commands as commandsnake
from aiohttp.web_urldispatcher import _WebHandler from aiohttp.web_urldispatcher import _WebHandler
from aiohttp import web from aiohttp import web
import aiohttp import aiohttp
@ -38,7 +39,10 @@ class BoticordWebhook:
] ]
_webserver: web.TCPSite _webserver: web.TCPSite
def __init__(self, bot: Union[Bot, AutoShardedBot], boticord_client: BoticordClient): def __init__(self, bot: Union[Bot,
AutoShardedBot,
commandsnake.Bot,
commandsnake.AutoShardedBot], boticord_client: BoticordClient):
self.bot = bot self.bot = bot
self.boticord_client = boticord_client self.boticord_client = boticord_client
self._webhooks = {} self._webhooks = {}

View file

@ -0,0 +1,14 @@
from discord.ext import commands
from boticordpy import BoticordClient
bot = commands.Bot(command_prefix="!")
boticord = BoticordClient(bot, "your-boticord-token", lib="disnake")
@bot.event
async def on_ready():
await boticord.Bots.post_stats()
bot.run("your-bot-token")

View file

@ -8,8 +8,7 @@ boticord = BoticordClient(bot, "your-boticord-token")
@bot.event @bot.event
async def on_ready(): async def on_ready():
stats = {"servers": len(bot.guilds), "shards": bot.shard_count, "users": len(bot.users)} await boticord.Bots.post_stats()
await boticord.Bots.post_stats(stats)
bot.run("your-bot-token") bot.run("your-bot-token")

View file

@ -1,2 +1,4 @@
discord.py discord.py
aiohttp aiohttp~=3.7.4.post0
setuptools==58.2.0
disnake~=2.1.2