56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
import logging
|
|
|
|
import discord
|
|
from aiohttp import web
|
|
from discord.ext import commands
|
|
|
|
from bot import TuxBot
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class API(commands.Cog):
|
|
|
|
def __init__(self, bot: TuxBot):
|
|
self.bot = bot
|
|
self.site = web.TCPSite
|
|
|
|
app = web.Application()
|
|
app.add_routes([web.get('/users/{user_id}', self.users)])
|
|
|
|
self.runner = web.AppRunner(app)
|
|
self.bot.loop.create_task(self.start_HTTPMonitoring_server())
|
|
|
|
async def start_HTTPMonitoring_server(self):
|
|
host = self.bot.config.get('API', 'Host')
|
|
port = self.bot.config.get('API', 'Port')
|
|
|
|
print(f"Starting API server on {host}:{port}")
|
|
|
|
await self.runner.setup()
|
|
self.site = web.TCPSite(self.runner, host, port)
|
|
await self.site.start()
|
|
|
|
async def users(self, request):
|
|
try:
|
|
user = await self.bot.fetch_user(request.match_info['user_id'])
|
|
except discord.NotFound:
|
|
return web.Response(status=404)
|
|
|
|
json = {
|
|
'id': user.id,
|
|
'username': user.name,
|
|
'discriminator': user.discriminator,
|
|
'avatar': user.avatar,
|
|
'default_avatar': user.default_avatar.value,
|
|
'bot': user.bot,
|
|
'system': user.system,
|
|
}
|
|
|
|
return web.json_response(
|
|
json
|
|
)
|
|
|
|
|
|
def setup(bot: TuxBot):
|
|
bot.add_cog(API(bot))
|