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

Discord.js教程:如何通过歌曲标题搜索歌词

实现Discord机器人歌词查询命令

跟朋友联机唱歌却记不清歌词?给你的Discord整个歌词查询命令就能解决!我们来做一个名为lyricsearch.js的命令,借助lyrics-finder包实现歌曲歌词搜索功能,步骤如下:

1. 安装依赖

首先确保你的机器人项目已初始化,然后安装所需包:

npm install lyrics-finder discord.js

2. 创建lyricsearch.js命令文件

在机器人的命令目录下新建该文件,写入以下代码:

const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
const lyricsFinder = require('lyrics-finder');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('lyricsearch')
        .setDescription('搜索指定歌曲的歌词')
        .addStringOption(option =>
            option.setName('歌曲标题')
                .setDescription('输入要搜索的歌曲名称')
                .setRequired(true)),
    async execute(interaction) {
        // 获取用户输入的歌曲标题
        const songTitle = interaction.options.getString('歌曲标题');
        
        try {
            // 调用lyrics-finder搜索歌词
            const lyrics = await lyricsFinder(songTitle, '');
            
            if (lyrics) {
                // 用Embed展示歌词,避免刷屏
                const lyricEmbed = new EmbedBuilder()
                    .setColor('#0099ff')
                    .setTitle(`《${songTitle}》的歌词`)
                    .setDescription(lyrics.length > 4096 ? `${lyrics.slice(0, 4093)}...` : lyrics);
                
                await interaction.reply({ embeds: [lyricEmbed] });
            } else {
                await interaction.reply(`找不到《${songTitle}》的歌词,请检查歌曲名称是否正确`);
            }
        } catch (error) {
            console.error('搜索歌词时出错:', error);
            await interaction.reply('搜索歌词时出现错误,请稍后再试');
        }
    },
};

3. 注册命令

将这个命令文件添加到机器人的命令注册逻辑中,确保机器人启动时能加载该命令(常规discord.js v14项目只需将文件放入commands目录,再通过部署脚本注册到Discord即可)。

补充说明

  • 代码适配Discord.js v14的斜杠命令结构,若使用前缀命令可自行调整逻辑
  • 用EmbedBuilder展示歌词是为了优化排版,同时避免超长内容刷屏
  • 处理了歌词长度超过Discord消息限制的情况,会自动截断并添加省略号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:32:09