Как дождаться запроса POST перед отправкой сообщения в Discord, используя aiohttp PythonPython

Программы на Python
Ответить
Anonymous
 Как дождаться запроса POST перед отправкой сообщения в Discord, используя aiohttp Python

Сообщение Anonymous »

Я пытаюсь отправить сообщение на определенный сервер, когда получаю запрос POST с данными JSON из другого веб-приложения, но получаю ошибку aiohttp.client_Exceptions.InvalidUrlClientError. Я не могу это проверить, потому что сайт еще не запущен.
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():
channel = client.get_channel('URL')
await channel.send('{} has connected to Discord!'.format(client.user))

async def main():

async with aiohttp.ClientSession() as session:

# #new-subscriptions
async with session.get('URL') as response:

# Get JSON data
data = await response.json()

# If response is between 200-399, and is therefore valid
if response:

# Send message to #new_subscriptions channel
channel = client.get_channel(123456789)
await channel.send('{} has subscribed to the {} plan'.format(data['name'], data['plan']))

asyncio.run(main())

client.run(DISCORD_TOKEN, reconnect=True)

Изменить: у меня есть еще один вариант, в котором размещение частей aiohttp внутри on_ready() кажется работает, но опять же у меня нет действующего URL-адреса для тестирования. это с:
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_ready():

# Send message to #general channel
channel = client.get_channel(ids['general'])
await channel.send('{} has connected to Discord!'.format(client.user))

# HTTP Session
async with aiohttp.ClientSession() as session:

async with session.get(URL) as response:

# Get JSON data
data = await response.json()

# If response is between 200-399, and is therefore valid
if response:

channel = client.get_channel(ID)
await channel.send('{} has subscribed to the {} plan for ${}'.format(data['name'], data['plan'], data['price']))

client.run(DISCORD_TOKEN, reconnect=True)

Редактирование 2: удалось запустить фиктивный сервер с aiohttp.web. Сообщение отправляется на мой сервер Discord, но только сначала, поскольку я не знаю, как обновить URL-адрес во время его работы.
from aiohttp import web

routes = web.RouteTableDef()

@routes.get('/discord')
async def discord(request):
data = {
...
}
return web.json_response(data)

app = web.Application()
app.add_routes(routes)
web.run_app(app)



Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-pythons
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»