Ответ, который дает API, отформатирован как json. Вам нужно проанализировать его, чтобы найти URL, который вы хотите вставить. После загрузки это будет словарь на python.
Приведенный ниже код является примером того, как это сделать. Он вызовет API giphy, вернет первые 10 результатов и случайным образом выберет результат в качестве сообщения.
Обратите внимание, что aiohttp
используется как асинхронный, то есть он не будет блокировать ваш код. Я также изменил команду, чтобы вы могли искать что угодно. Чтобы соответствовать вашему предыдущему URL-адресу запроса, вы можете использовать !giphy ryan gosling
. Если пользователь не указывает значение для поиска, то вместо этого будет использоваться случайная конечная точка с гипнотическим значением.
from discord.ext import commands
import discord
import json
import aiohttp
import random
client = commands.Bot(command_prefix='!')
@client.command(pass_context=True)
async def giphy(ctx, *, search):
embed = discord.Embed(colour=discord.Colour.blue())
session = aiohttp.ClientSession()
if search == '':
response = await session.get('https://api.giphy.com/v1/gifs/random?api_key=API_KEY_GOES_HERE')
embed.set_image(url=data['data']['images']['original']['url'])
else:
search.replace(' ', '+')
response = await session.get('http://api.giphy.com/v1/gifs/search?q=' + search + '&api_key=API_KEY_GOES_HERE&limit=10')
gif_choice = random.randint(0, 9)
embed.set_image(url=data['data'][gif_choice]['images']['original']['url'])
data = json.loads(await response.text())
await session.close()
await client.send_message(embed=embed)
client.run('token')
Кроме того, похоже, что дискорд изначально поддерживает giphy. Пока я тестировал, он уже сделал свои собственные гипсовые звонки. Я проверил это, используя несколько разных символов (!, ~, ') И пробел, и это, кажется, всегда работает. Смотрите ниже примеры.
![native giphy discord example: using bot prefix !](https://i.stack.imgur.com/kOopH.png)
![native giphy discord example: using ~](https://i.stack.imgur.com/fV7aW.png)
![native giphy discord example using space](https://i.stack.imgur.com/AsquH.png)