Spaces:
Paused
Paused
File size: 3,700 Bytes
8de10f9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
import axios from 'axios';
import pkg, { prepareWAMessageMedia } from '@whiskeysockets/baileys';
const { generateWAMessageFromContent, proto } = pkg;
import config from '../../config.cjs';
const Lyrics = async (m, Matrix) => {
const prefix = config.PREFIX;
const cmd = m.body.startsWith(prefix) ? m.body.slice(prefix.length).split(' ')[0].toLowerCase() : '';
const text = m.body.slice(prefix.length + cmd.length).trim();
const validCommands = ['lyrics', 'lyric'];
if (validCommands.includes(cmd)) {
if (!text) return m.reply(`Hello *_${m.pushName}_,*\n Here's Example Usage: _.lyrics Spectre|Alan Walker._`);
try {
await m.React('🕘');
await m.reply('A moment, *Ethix-MD* is generating your lyrics request...');
if (!text.includes('|')) {
return m.reply('Please provide the song name and artist name separated by a "|", for example: Spectre|Alan Walker.');
}
const [title, artist] = text.split('|').map(part => part.trim());
if (!title || !artist) {
return m.reply('Both song name and artist name are required. Please provide them in the format: song name|artist name.');
}
const apiUrl = `https://api.lyrics.ovh/v1/${encodeURIComponent(artist)}/${encodeURIComponent(title)}`;
const response = await axios.get(apiUrl);
const result = response.data;
if (result && result.lyrics) {
const lyrics = result.lyrics;
let buttons = [{
name: "cta_copy",
buttonParamsJson: JSON.stringify({
display_text: "📋 ᴄᴏᴘʏ ʟʏʀɪᴄs",
id: "copy_code",
copy_code: lyrics
})
},
{
name: "cta_url",
buttonParamsJson: JSON.stringify({
display_text: "sʜᴏᴡ 💜 ғᴏʀ ᴇᴛʜɪx-ᴍᴅ",
url: `https://whatsapp.com/channel/0029VaWJMi3GehEE9e1YsI1S`
})
},
{
name: "quick_reply",
buttonParamsJson: JSON.stringify({
display_text: "ᴍᴀɪɴ ᴍᴇɴᴜ",
id: ".menu"
})
}
];
let msg = generateWAMessageFromContent(m.from, {
viewOnceMessage: {
message: {
messageContextInfo: {
deviceListMetadata: {},
deviceListMetadataVersion: 2
},
interactiveMessage: proto.Message.InteractiveMessage.create({
body: proto.Message.InteractiveMessage.Body.create({
text: lyrics
}),
footer: proto.Message.InteractiveMessage.Footer.create({
text: "> *© ᴘᴏᴡᴇʀᴇᴅ ʙʏ ᴇᴛʜɪx-ᴍᴅ*"
}),
header: proto.Message.InteractiveMessage.Header.create({
title: "",
subtitle: "",
hasMediaAttachment: false
}),
nativeFlowMessage: proto.Message.InteractiveMessage.NativeFlowMessage.create({
buttons: buttons
})
})
}
}
}, {});
await Matrix.relayMessage(msg.key.remoteJid, msg.message, {
messageId: msg.key.id
});
await m.React('✅');
} else {
throw new Error('Invalid response from the Lyrics API.');
}
} catch (error) {
console.error('Error getting lyrics:', error.message);
m.reply('Error getting lyrics.');
await m.React('❌');
}
}
};
export default Lyrics;
|