You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord YouTube音乐机器人报错:未注册提取器,无法执行提取逻辑

解决Discord Bot提示「Skipping extractors execution since zero extractors were registered」问题

这个警告的核心原因是:discord-player v6+版本不再自动注册平台提取器,你需要手动为Player实例注册YouTube提取器才能正常解析YouTube的链接和搜索请求。以下是具体修复步骤:

1. 在主文件(Index.js)中注册YouTube提取器

在初始化Player实例后,添加提取器注册逻辑:

require('dotenv').config();

const {REST} = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { Client, Collection, GatewayIntentBits } = require('discord.js');
const { Player } = require("discord-player");
// 新增导入YouTubeExtractor
const { YouTubeExtractor } = require("@discord-player/extractor");

const fs = require('fs');
const path = require('path');


const client = new Client({
  intents: [GatewayIntentBits.Guilds,
         GatewayIntentBits.GuildMessages, 
         GatewayIntentBits.GuildVoiceStates,
        ]
});

// ... 命令加载逻辑保持不变 ...

// 初始化Player并注册提取器
client.player = new Player(client, {
    ytdlOptions: {
        quality: "highestaudio",
        highWaterMark: 1 << 25
    },
});
// 注册YouTube提取器
client.player.extractors.register(YouTubeExtractor, {});

// ... ready和interactionCreate事件逻辑保持不变 ...

2. 调整Play.js中的搜索引擎参数(可选,更规范)

在song子命令中,将searchEngine参数替换为官方定义的QueryType常量,避免直接使用提取器标识符:

// song子命令中的搜索逻辑修改
const result = await client.player.search(url, {
    requestedBy: interaction.user,
    searchEngine: QueryType.YOUTUBE_SONG // 替换原YouTubeExtractor.identifier
})

完成以上修改后,重新启动Bot,执行命令时就不会再出现提取器未注册的警告,YouTube链接和搜索请求也能正常被解析。

内容的提问来源于stack exchange,提问作者Witha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:22:38