Как искать видео в YouTube без YouTube data api, discord.js

92
16 апреля 2022, 03:50

Есть бот, который играет музыку на серверах в дискорде.Появилась проблема,апи стало упираться в квоту.Как сделать так чтобы поисковые запросы не требовали YouTube data api? Вот код бота:

const YouTubeAPI = require("simple-youtube-api");
let YOUTUBE_API_KEY;
try {
  const config = require("../config.json");
  YOUTUBE_API_KEY = config.YOUTUBE_API_KEY;
} catch (error) {
  YOUTUBE_API_KEY = process.env.YOUTUBE_API_KEY;
}
const youtube = new YouTubeAPI(YOUTUBE_API_KEY);
module.exports = {
  name: "search",
  aliases: ["se"],
  description: "Поиск всех вариантов музыки для проигрования",
  async execute(message, args) {
    if (!args.length)
      return message
        .reply(`Использование: ${message.client.prefix}${module.exports.name} <Название музыки>`)
        .catch(console.error);
    if (message.channel.activeCollector)
      return message.reply("Поисковой запрос уже работает в этом канале!");
    if (!message.member.voice.channel)
      return message.reply("Вы должны зайти в голосовой канал первее!").catch(console.error);
    const search = args.join(" ");
    let resultsEmbed = new MessageEmbed()
      .setTitle(`**Напишите номер для проигроания**`)
      .setDescription(`Результаты для: **${search}**`)
      .setColor("#FF00FF")
      .setFooter(`${message.guild.name} | ${message.author.username} | Поисковой запрос закроется автоматически через 25 секунд`)
      .setTimestamp();
    try {
      const results = await youtube.searchVideos(search, 10);
      results.map((video, index) => resultsEmbed.addField(video.shortURL, `${index + 1}. ${video.title}`));
      let resultsMessage = await message.channel.send(resultsEmbed);
      function filter(msg) {
        const pattern = /^[0-9]{1,2}(\s*,\s*[0-9]{1,2})*$/g;
        return pattern.test(msg.content);
      }
      message.channel.activeCollector = true;
      const response = await message.channel.awaitMessages(filter, { max: 1, time: 25000, errors: ["time"] });
      const reply = response.first().content;
      if (reply.includes(",")) {
        let songs = reply.split(",").map((str) => str.trim());
        for (let song of songs) {
          await message.client.commands
            .get("play")
            .execute(message, [resultsEmbed.fields[parseInt(song) - 1].name]);
        }
      } else {
        const choice = resultsEmbed.fields[parseInt(response.first()) - 1].name;
        message.client.commands.get("play").execute(message, [choice]);
      }
      message.channel.activeCollector = false;
      resultsMessage.delete().catch(console.error);
      response.first().delete().catch(console.error);
    } catch (error) {
      console.error(error);
      message.channel.activeCollector = false;
      message.reply(error.message).catch(console.error);
    }
  }
};
READ ALSO
jquery умножение radio button на selector

jquery умножение radio button на selector

Подскажите, как добавить в jquery умножение, чтобы при выборе radio button он умножал на коллвыбранного в selector и выводил сумму?

99
Blob полученый при slice файла на добавляется в FormData

Blob полученый при slice файла на добавляется в FormData

Я использую стандартное апи Fileslice(start, end) что бы получить часть файла и отправить его на сервер

89
Почему не открывается ссылка в webview?

Почему не открывается ссылка в webview?

В приложении есть две кнопки при нажатии на которые открываются две разных ссылкиОдна ссылка на страницу входа открывается нормально а реферальная...

209
Как правильно должен быть реализован Spring Hateoas?

Как правильно должен быть реализован Spring Hateoas?

У меня есть RESTful API, в котором я хочу реализовать гипермедию с помощью Spring HateoasДля всех ресурсов я уже сделал эту поддержку, но есть следующая...

132