Я ищу способ интеграции REST API внутри моего Discord.py
, используя ветвь перезаписи. Я хочу использовать aiohttp
для обработки запросов, но я не уверен, какой подход я должен использовать. Цель состоит в том, чтобы, например, сделать запрос GET к API, который бы возвратил список гильдий, в которых находится бот. Или, как другой пример, запрос POST, который попросил бы бот написать данное сообщение в определенный канал. В целом речь идет о том, чтобы дать инструкции боту с веб-страницы.
Я попытался поместить маршрутизатор и бегунок приложения aiohttp в мой класс клиента Discord.py. Веб-сервер действительно работает, я сделал асинхронную функцию для возврата гильдий, в которых находится бот, но похоже, что функция не будет принимать аргумент запроса, который я передаю ей при переходе на http://127.0.0.1/guilds
. Это приводит к ошибке missing 1 required positional argument
.
import discord
import asyncio
from aiohttp import web
class MyClient(discord.Client):
async def on_ready(self):
print('Logged on as {0}!'.format(self.user))
async def get_guilds(self, request):
response_obj = self.guilds
return web.json_response(response_obj,status=200,content_type='application/json')
app = web.Application()
app.router.add_get('/guilds', get_guilds)
web.run_app(app, port=80)
client = MyClient()
client.run(TOKEN)
Кроме того, сервер aiohttp не работает асинхронно. Я ожидаю, что on_ready(self)
запустится, но это никогда не произойдет. Что я делаю не так?