Autosave: 20260216-090952

This commit is contained in:
Flatlogic Bot 2026-02-16 09:09:52 +00:00
parent 7fc547e10f
commit 8ba50eb543
2 changed files with 179 additions and 29 deletions

View File

@ -538,3 +538,125 @@ Ready! Logged in as AsepXiaoQin#6954
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T08:36:47.798Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[2026-02-16T08:38:33.364Z] Searching via play-dl for: bawa dia kembali
Searching via play-dl for: bawa dia kembali
[2026-02-16T08:38:34.309Z] Found URL via play-dl: https://www.youtube.com/watch?v=j2U08vZSHGA
Found URL via play-dl: https://www.youtube.com/watch?v=j2U08vZSHGA
SyntaxError: Unexpected token 'D', "Deprecated"... is not valid JSON
at JSON.parse (<anonymous>)
at ChildProcess.<anonymous> (/home/ubuntu/executor/workspace/bot/node_modules/@distube/yt-dlp/dist/index.js:84:36)
at ChildProcess.emit (node:events:518:28)
at maybeClose (node:internal/child_process:1101:16)
at ChildProcess._handle.onexit (node:internal/child_process:304:5)
[2026-02-16T08:39:01.802Z] Uncaught Exception: Unexpected token 'D', "Deprecated"... is not valid JSON
Uncaught Exception: Unexpected token 'D', "Deprecated"... is not valid JSON
SyntaxError: Unexpected token 'D', "Deprecated"... is not valid JSON
at JSON.parse (<anonymous>)
at ChildProcess.<anonymous> (/home/ubuntu/executor/workspace/bot/node_modules/@distube/yt-dlp/dist/index.js:84:36)
at ChildProcess.emit (node:events:518:28)
at maybeClose (node:internal/child_process:1101:16)
at ChildProcess._handle.onexit (node:internal/child_process:304:5)
[2026-02-16T08:39:13.543Z] Playing local file independently: /home/ubuntu/executor/workspace/bot/assets/audio/sahur.mp3
Playing local file independently: /home/ubuntu/executor/workspace/bot/assets/audio/sahur.mp3
[dotenv@17.3.1] injecting env (4) from .env -- tip: 🤖 agentic secret storage: https://dotenvx.com/as2
[2026-02-16T08:46:39.114Z] Encryption library (libsodium) is ready.
Encryption library (libsodium) is ready.
[2026-02-16T08:46:39.571Z] Bot berhasil login!
[2026-02-16T08:46:39.572Z] Ready! Logged in as AsepXiaoQin#6954
[2026-02-16T08:46:39.572Z] FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
Bot berhasil login!
Ready! Logged in as AsepXiaoQin#6954
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T08:46:39.716Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[dotenv@17.3.1] injecting env (4) from .env -- tip: ⚙️ write to custom object with { processEnv: myObject }
[2026-02-16T08:49:12.201Z] Encryption library (libsodium) is ready.
Encryption library (libsodium) is ready.
[2026-02-16T08:49:13.692Z] Bot berhasil login!
Bot berhasil login!
[2026-02-16T08:49:13.697Z] Ready! Logged in as AsepXiaoQin#6954
Ready! Logged in as AsepXiaoQin#6954
[2026-02-16T08:49:13.700Z] FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T08:49:13.762Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[dotenv@17.3.1] injecting env (4) from .env -- tip: 🛡️ auth for agents: https://vestauth.com
[2026-02-16T08:49:24.070Z] Encryption library (libsodium) is ready.
Encryption library (libsodium) is ready.
[2026-02-16T08:49:24.735Z] Bot berhasil login!
[2026-02-16T08:49:24.735Z] Ready! Logged in as AsepXiaoQin#6954
[2026-02-16T08:49:24.736Z] FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
Bot berhasil login!
Ready! Logged in as AsepXiaoQin#6954
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T08:49:24.780Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[2026-02-16T08:55:08.549Z] Searching via play-dl for: bawa dia kembali
Searching via play-dl for: bawa dia kembali
[2026-02-16T08:55:08.995Z] Found URL via play-dl: https://www.youtube.com/watch?v=dq2i49uwEJg
Found URL via play-dl: https://www.youtube.com/watch?v=dq2i49uwEJg
[2026-02-16T08:55:09.826Z] Play Error: Invalid URL
Play Error: Invalid URL
[2026-02-16T08:55:21.145Z] Searching via play-dl for: https://on.soundcloud.com/ORjsl2DMlAGkmIXfel
Searching via play-dl for: https://on.soundcloud.com/ORjsl2DMlAGkmIXfel
[2026-02-16T08:55:55.931Z] Searching via play-dl for: https://youtu.be/82A9lCx2XgY?si=DfeROWrUs5xUwclK
Searching via play-dl for: https://youtu.be/82A9lCx2XgY?si=DfeROWrUs5xUwclK
[2026-02-16T08:55:56.200Z] Found URL via play-dl: https://www.youtube.com/watch?v=82A9lCx2XgY
Found URL via play-dl: https://www.youtube.com/watch?v=82A9lCx2XgY
[2026-02-16T08:55:56.747Z] Play Error: Invalid URL
Play Error: Invalid URL
[2026-02-16T08:56:24.330Z] Searching via play-dl for: https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD?si=2NMmRTKnQJ-fMh9OmWm9Bw
Searching via play-dl for: https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD?si=2NMmRTKnQJ-fMh9OmWm9Bw
[2026-02-16T08:56:35.574Z] Playing local file independently: /home/ubuntu/executor/workspace/bot/assets/audio/sahur.mp3
Playing local file independently: /home/ubuntu/executor/workspace/bot/assets/audio/sahur.mp3
[dotenv@17.3.1] injecting env (4) from .env -- tip: 🔐 encrypt with Dotenvx: https://dotenvx.com
[2026-02-16T09:03:26.677Z] Encryption library (libsodium) is ready.
Encryption library (libsodium) is ready.
[2026-02-16T09:03:27.142Z] Bot berhasil login!
[2026-02-16T09:03:27.144Z] Ready! Logged in as AsepXiaoQin#6954
Bot berhasil login!
[2026-02-16T09:03:27.145Z] FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
Ready! Logged in as AsepXiaoQin#6954
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T09:03:27.255Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[dotenv@17.3.1] injecting env (4) from .env -- tip: ⚙️ override existing env vars with { override: true }
[2026-02-16T09:04:34.158Z] Encryption library (libsodium) is ready.
Encryption library (libsodium) is ready.
[2026-02-16T09:04:34.816Z] Bot berhasil login!
Bot berhasil login!
[2026-02-16T09:04:34.818Z] Ready! Logged in as AsepXiaoQin#6954
[2026-02-16T09:04:34.821Z] FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
Ready! Logged in as AsepXiaoQin#6954
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T09:04:34.895Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[dotenv@17.3.1] injecting env (4) from .env -- tip: 🛠️ run anywhere with `dotenvx run -- yourcommand`
[2026-02-16T09:04:57.611Z] Encryption library (libsodium) is ready.
Encryption library (libsodium) is ready.
[2026-02-16T09:04:58.667Z] Bot berhasil login!
Bot berhasil login!
[2026-02-16T09:04:58.668Z] Ready! Logged in as AsepXiaoQin#6954
[2026-02-16T09:04:58.668Z] FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
Ready! Logged in as AsepXiaoQin#6954
FFMPEG Path: /home/ubuntu/executor/workspace/bot/node_modules/ffmpeg-static/ffmpeg
[2026-02-16T09:04:58.709Z] Alarm scheduled at 30 3 * * *
Alarm scheduled at 30 3 * * *
[2026-02-16T09:08:16.758Z] Validation for "https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD?si=2NMmRTKnQJ-fMh9OmWm9Bw": sp_track
Validation for "https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD?si=2NMmRTKnQJ-fMh9OmWm9Bw": sp_track
[2026-02-16T09:08:16.760Z] Info fetch error: This is not a YouTube Watch URL
[2026-02-16T09:08:16.761Z] Playing: https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD?si=2NMmRTKnQJ-fMh9OmWm9Bw
Info fetch error: This is not a YouTube Watch URL
Playing: https://open.spotify.com/track/3qhlB30KknSejmIvZZLjOD?si=2NMmRTKnQJ-fMh9OmWm9Bw
[2026-02-16T09:08:16.772Z] Play Error: ffmpeg is not installed at 'ffmpeg' path
Play Error: ffmpeg is not installed at 'ffmpeg' path
[2026-02-16T09:08:29.785Z] Validation for "y que fue": search
[2026-02-16T09:08:29.786Z] Searching via play-dl for: y que fue
Validation for "y que fue": search
Searching via play-dl for: y que fue
[2026-02-16T09:08:30.242Z] Playing: https://www.youtube.com/watch?v=vHeO-9G5rxo
Playing: https://www.youtube.com/watch?v=vHeO-9G5rxo
[2026-02-16T09:08:30.247Z] Play Error: ffmpeg is not installed at 'ffmpeg' path
Play Error: ffmpeg is not installed at 'ffmpeg' path
[2026-02-16T09:08:35.195Z] Playing local file independently: /home/ubuntu/executor/workspace/bot/assets/audio/sahur.mp3
Playing local file independently: /home/ubuntu/executor/workspace/bot/assets/audio/sahur.mp3

View File

@ -1,6 +1,6 @@
process.env.FFMPEG_PATH = require('ffmpeg-static');
const { Client, GatewayIntentBits, Events, EmbedBuilder, PermissionsBitField } = require('discord.js');
const { DisTube } = require('distube');
const { YtDlpPlugin } = require('@distube/yt-dlp');
const { SoundCloudPlugin } = require('@distube/soundcloud');
const { SpotifyPlugin } = require('@distube/spotify');
const play = require('play-dl');
@ -18,14 +18,6 @@ const fs = require('fs');
// Load environment variables
require('dotenv').config({ path: path.join(__dirname, '.env') });
// Setup FFMPEG
const ffmpegStatic = require('ffmpeg-static');
process.env.FFMPEG_PATH = ffmpegStatic;
const ffmpegDir = path.dirname(ffmpegStatic);
if (!process.env.PATH.includes(ffmpegDir)) {
process.env.PATH = `${ffmpegDir}${path.delimiter}${process.env.PATH}`;
}
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
@ -51,7 +43,6 @@ const distube = new DisTube(client, {
plugins: [
new SoundCloudPlugin(),
new SpotifyPlugin(),
new YtDlpPlugin(),
],
emitAddSongWhenCreatingQueue: false,
});
@ -175,30 +166,53 @@ client.on(Events.InteractionCreate, async interaction => {
}
else if (commandName === 'play') {
const query = interaction.options.getString('query');
if (!voiceChannel) return interaction.reply({ content: 'Anda harus berada di voice channel!', ephemeral: true });
await interaction.deferReply();
logToFile(`Searching via play-dl for: ${query}`);
const query = interaction.options.getString('query');
const voiceChannel = interaction.member?.voice.channel;
if (!voiceChannel) return interaction.editReply({ content: 'Anda harus berada di voice channel!' });
try {
const searchResults = await play.search(query, { limit: 1 });
if (!searchResults || searchResults.length === 0) {
return interaction.editReply('Lagu tidak ditemukan!');
}
const url = searchResults[0].url;
logToFile(`Found URL via play-dl: ${url}`);
let url = query;
let title = query;
const validation = await play.validate(query);
logToFile(`Validation for "${query}": ${validation}`);
await distube.voices.join(voiceChannel, { selfDeaf: false, selfMute: false });
if (!validation || validation === 'search') {
logToFile(`Searching via play-dl for: ${query}`);
const searchResults = await play.search(query, { limit: 1 });
if (!searchResults || searchResults.length === 0) {
return interaction.editReply('Lagu tidak ditemukan!');
}
url = searchResults[0].url;
title = searchResults[0].title;
} else {
// It's a URL, attempt to get title
try {
const info = await play.video_info(url);
title = info.video_details.title;
url = info.video_details.url;
} catch (err) {
logToFile(`Info fetch error: ${err.message}`);
}
}
logToFile(`Playing: ${url}`);
await distube.play(voiceChannel, url, {
member: interaction.member,
textChannel: interaction.channel,
interaction
metadata: { interaction, songTitle: title }
});
await interaction.editReply(`Mencari: **${query}**... 🔍`);
await interaction.editReply(`Memainkan: **${title}**... 🎶`);
} catch (e) {
logToFile(`Play Error: ${e.message}`);
interaction.editReply(`Terjadi kesalahan saat memutar: ${e.message}`);
if (interaction.deferred) {
await interaction.editReply(`Terjadi kesalahan: ${e.message}`);
}
}
}
@ -246,13 +260,27 @@ client.on(Events.MessageCreate, async message => {
if (!query) return message.reply('Masukkan judul atau link lagu!');
try {
const searchResults = await play.search(query, { limit: 1 });
if (!searchResults || searchResults.length === 0) {
return message.reply('Lagu tidak ditemukan!');
let url = query;
let title = query;
const validation = await play.validate(query);
if (!validation || validation === 'search') {
const searchResults = await play.search(query, { limit: 1 });
if (!searchResults || searchResults.length === 0) return message.reply('Lagu tidak ditemukan!');
url = searchResults[0].url;
title = searchResults[0].title;
} else {
try {
const info = await play.video_info(url);
title = info.video_details.title;
url = info.video_details.url;
} catch (err) {
logToFile(`Prefix info fetch error: ${err.message}`);
}
}
const url = searchResults[0].url;
await distube.voices.join(voiceChannel, { selfDeaf: false, selfMute: false });
message.reply(`🔍 Memainkan: **${title}**...`);
await distube.play(voiceChannel, url, {
member: message.member,
textChannel: message.channel,