@getsolara/solara.voice
Version:
Optional voice functionality for @getsolara/solara.js using @discordjs/voice
32 lines • 1.59 kB
JavaScript
module.exports = {
name: "$search",
description: "Searches YouTube for a video. Returns JSON string of first result. Args: query",
takesBrackets: true,
execute: async (context, args) => {
if (context.client.voiceInitialized === false && !context.client.solaraOptions?.allowSearchWithoutVoice) {
return "[Error: $search (for voice) requires voice features to be enabled, or 'allowSearchWithoutVoice' to be true in solaraOptions.]";
}
if (!args[0]) return "[Error: $search requires a query]";
const query = args[0];
try {
const play = require('play-dl');
const results = await play.search(query, { limit: 1, source: { youtube : "video" } });
if (!results || results.length === 0) return JSON.stringify([]);
const first = results[0];
return JSON.stringify({
title: first.title || "",
url: first.url || "",
duration: first.durationRaw || "N/A",
thumbnail: first.thumbnails?.[0]?.url || "",
channelName: first.channel?.name || "",
channelUrl: first.channel?.url || ""
});
} catch (e) {
if (e.code === 'MODULE_NOT_FOUND' && e.message.includes('play-dl')) {
return "[Error: $search - play-dl module not found. Please install it.]";
}
console.error(`Solara.voice Error ($search for query "${query}"):`, e);
return "[Error searching YouTube]";
}
}
};