Посоветуйте API с рандомными совами
Единственный API, который я нашёл, это http://pics.floofybot.moe/owl. Он мне не подходит так как использовать я его хочу для discord.js. После некоторой проверки оказалось, что иногда он даёт ссылки, явно не подходящие для setImage().
+я заметил, что там не особо много самих картинок. Они часто повторяются, что... печалит?)
В общем, если что-то знаете по этому поводу, помогите пожалуйста...
Ответы (2 шт):
Лично я использую либу axios для того, чтобы уже из апи использовать изображение в setImage() (Может мой ответ не очень полезен, но просто совет)
Я предложу вариант PIXABAY - он бесплатный (и не требует атрибуции, но всё же упоминание приветсвуется), выдаёт прямые ссылки на изображения (подходит для setImage() в Discord.js)
и там полно сов ?
import { Client, GatewayIntentBits, EmbedBuilder } from "discord.js";
import fetch from "node-fetch";
const TOKEN = ""; //тут токен бота дискорд
const PIXABAY_KEY = ""; //тут ключ с https://pixabay.com/api/docs/
const client = new Client({
intents: [GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent],
});
client.once("clientReady", () => {
console.log(`✅ Бот ${client.user.tag} запущен!`);
});
client.on("messageCreate", async (msg) => {
if (msg.author.bot) return;
if (msg.content === "!owl") {
const res = await fetch(
`https://pixabay.com/api/?key=${PIXABAY_KEY}`+
`&q=owl&image_type=photo&category=animals&per_page=50`);
const data = await res.json();
const hits = data.hits;
const random = hits[Math.floor(Math.random() * hits.length)];
const embed = new EmbedBuilder()
.setTitle("? Случайная сова")
.setImage(random.largeImageURL)
.setColor("Random");
msg.channel.send({ embeds: [embed] });
}
});
client.login(TOKEN);
GIPHY конечно меньше сов предложил, но .gif формат, поэтому оставлю тут информацию по этому API - он также бесплатный (но с ограничением по количеству запросов и обязательной атрибуцией)
https://api.giphy.com/v1/gifs/search?api_key=${GIPHY_KEY}&q=owl&limit=50&rating=g


