Création Repo pour mon bot Le Tamiseur
This commit is contained in:
94
commands/global/crack.js
Normal file
94
commands/global/crack.js
Normal file
@@ -0,0 +1,94 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const iconv = require('iconv-lite')
|
||||
const axios = require('axios')
|
||||
const fs = require('fs')
|
||||
|
||||
var headers1 = {
|
||||
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
||||
"x-requested-with": "XMLHttpRequest"
|
||||
}
|
||||
|
||||
var headers2 = {
|
||||
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
|
||||
"accept-language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
|
||||
"cache-control": "no-cache",
|
||||
"pragma": "no-cache",
|
||||
"sec-ch-ua": "\"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"110\", \"Opera GX\";v=\"96\"",
|
||||
"sec-ch-ua-mobile": "?0",
|
||||
"sec-ch-ua-platform": "\"Windows\"",
|
||||
"sec-fetch-dest": "document",
|
||||
"sec-fetch-mode": "navigate",
|
||||
"sec-fetch-site": "none",
|
||||
"sec-fetch-user": "?1",
|
||||
"upgrade-insecure-requests": "1",
|
||||
"cookie": "online_fix_auth=gAAAAABkKM0s9WNLe_V6euTnJD7UQjppVty9B7OOyHBYOyVcbcejj8F6KveBcLxlf3mlx_vE7JEFPHlrpj-Aq6BFJyKPGzxds_wpcPV2MdXPyDGQLsz4mAvt3qgTgGg25MapWo_fSIOMiAAsF4Gv_uh4kUOiR_jgbHCZWJGPgpNQwU2HFFyvahYR6MzR7nYE9-fCmrev3obkRbro43vIVTTX4UyJMRHadrsY5Q-722TzinCZVmAuJfc=; dle_password=89465c26673e0199e5272e4730772c35; _ym_uid=1670534560361937997; _ym_d=1680394955; _ym_isad=2; dle_user_id=2619796; PHPSESSID=3v8sd281sr0n1n9f1p66q25sa2",
|
||||
"Referer": "https://online-fix.me/",
|
||||
"Referrer-Policy": "strict-origin-when-cross-origin"
|
||||
}
|
||||
|
||||
async function search(query, headers) {
|
||||
let body = await fetch("https://online-fix.me/engine/ajax/search.php", { headers, body: `query=${query}`, method: "POST" })
|
||||
.then(response => response.arrayBuffer())
|
||||
.then(arrayBuffer => { return iconv.decode(Buffer.from(arrayBuffer), 'win1251') })
|
||||
.catch(error => console.error(error))
|
||||
let matches = body.split('</div>')[1].split('<span class="seperator fastfullsearch">')[0].split('</a>')
|
||||
let games = []
|
||||
matches.pop()
|
||||
matches.forEach(async match => {
|
||||
let name = match.split('"><span class="searchheading">')[1].split('</span>')[0].slice(0, -8)
|
||||
let link = match.split('<a href="')[1].split('"><span class="searchheading">')[0]
|
||||
games.push({ name, link })
|
||||
})
|
||||
return games
|
||||
}
|
||||
|
||||
async function repo(game, headers) {
|
||||
let body = await fetch(game.link, { headers, body: null, method: "GET" })
|
||||
.then(response => response.arrayBuffer())
|
||||
.then(arrayBuffer => { return iconv.decode(Buffer.from(arrayBuffer), 'win1251') })
|
||||
.catch(error => console.error(error))
|
||||
let name = body.split('https://uploads.online-fix.me:2053/torrents/')[1].split('"')[0]
|
||||
let url = `https://uploads.online-fix.me:2053/torrents/${name}`
|
||||
return url
|
||||
}
|
||||
|
||||
async function torrent(url, headers) {
|
||||
let response = await fetch(url, { headers, body: null, method: "GET" })
|
||||
.catch(error => console.error(error))
|
||||
let body = await response.text()
|
||||
let file = body.split('<a href="')[2].split('">')[0]
|
||||
return file
|
||||
}
|
||||
|
||||
async function download(url, file, headers) {
|
||||
let path = `./cracks/${file}`
|
||||
let writer = fs.createWriteStream(path)
|
||||
await axios({ url: url + file, method: 'GET', responseType: 'stream', headers }).then(response => {
|
||||
return new Promise((resolve, reject) => {
|
||||
response.data.pipe(writer)
|
||||
let error = null
|
||||
writer.on('error', err => {
|
||||
error = err
|
||||
writer.close()
|
||||
reject(err)
|
||||
})
|
||||
writer.on('close', () => { if (!error) resolve(true) })
|
||||
})
|
||||
}).catch(error => console.error(error))
|
||||
return path
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder() .setName('crack') .setDescription('Télécharge un crack sur le site online-fix.me !')
|
||||
.addStringOption(option => option.setName('jeu').setDescription('Quel jeu tu veux DL ?').setRequired(true)),
|
||||
async execute(interaction) {
|
||||
await interaction.deferReply()
|
||||
let query = interaction.options.getString('jeu')
|
||||
let games = await search(query, headers1)
|
||||
let url = await repo(games[0], headers2)
|
||||
let file = await torrent(url, headers2)
|
||||
let path = await download(url, file, headers2)
|
||||
await interaction.followUp({ content: `Voici ce que j'ai trouvé pour "${query}" !`, files: [path] })
|
||||
await fs.unlink(path, (err) => { if (err) throw err })
|
||||
}
|
||||
}
|
||||
11
commands/global/ping.js
Executable file
11
commands/global/ping.js
Executable file
@@ -0,0 +1,11 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('ping')
|
||||
.setDescription('Check the latency of the bot'),
|
||||
async execute(interaction) {
|
||||
let sent = await interaction.reply({ content: 'Pinging...', fetchReply: true })
|
||||
interaction.editReply(`Websocket heartbeat: ${interaction.client.ws.ping}ms.\nRoundtrip latency: ${sent.createdTimestamp - interaction.createdTimestamp}ms`)
|
||||
}
|
||||
}
|
||||
25
commands/global/spam.js
Executable file
25
commands/global/spam.js
Executable file
@@ -0,0 +1,25 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('spam')
|
||||
.setDescription('Spam')
|
||||
.addUserOption(option => option.setName('user').setDescription('Spam').setRequired(true))
|
||||
.addStringOption(option => option.setName('string').setDescription('Spam').setRequired(true))
|
||||
.addIntegerOption(option => option.setName('integer').setDescription('Spam').setRequired(true)),
|
||||
async execute(interaction) {
|
||||
let user = interaction.options.getUser('user')
|
||||
let string = interaction.options.getString('string')
|
||||
let integer = interaction.options.getInteger('integer')
|
||||
await interaction.reply({ content: 'Spam', ephemeral: true })
|
||||
let i = 0
|
||||
function myLoop() {
|
||||
setTimeout(function () {
|
||||
user.send(string).catch(error => console.error(error))
|
||||
i++
|
||||
if (i < integer) myLoop()
|
||||
}, 1000)
|
||||
}
|
||||
myLoop()
|
||||
}
|
||||
}
|
||||
17
commands/global/update.js
Executable file
17
commands/global/update.js
Executable file
@@ -0,0 +1,17 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('update')
|
||||
.setDescription('Update the member count channel.'),
|
||||
async execute(interaction) {
|
||||
let guild = interaction.guild
|
||||
guild.members.fetch().then(() => {
|
||||
var i = 0
|
||||
guild.members.cache.forEach(async member => { if (!member.user.bot) i++ })
|
||||
let channel = guild.channels.cache.get('1091140609139560508')
|
||||
channel.setName(`${i} Gens Posés`)
|
||||
interaction.reply(`${i} Gens Posés !`)
|
||||
}).catch(console.error)
|
||||
}
|
||||
}
|
||||
19
commands/music/loop.js
Executable file
19
commands/music/loop.js
Executable file
@@ -0,0 +1,19 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('loop')
|
||||
.setDescription('Boucler la musique en cours de lecture.')
|
||||
.addIntegerOption(option => option.setName('loop')
|
||||
.setDescription("Mode de boucle (0 = Off, 1 = Titre, 2 = File d'Attente; 3 = Autoplay)")
|
||||
.setRequired(true)
|
||||
.setMinValue(0)
|
||||
.setMaxValue(3)),
|
||||
async execute(interaction) {
|
||||
let loop = interaction.options.getInteger('loop')
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.setRepeatMode(loop)
|
||||
return await interaction.reply(`Boucle ${loop === 0 ? "désactivée" : loop === 1 ? "en mode Titre" : loop === 2 ? "en mode File d'Attente" : "en autoplay"}.`)
|
||||
}
|
||||
}
|
||||
13
commands/music/pause.js
Executable file
13
commands/music/pause.js
Executable file
@@ -0,0 +1,13 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('pause')
|
||||
.setDescription('Met en pause la musique.'),
|
||||
async execute(interaction) {
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.node.setPaused(!queue.node.isPaused())
|
||||
return await interaction.reply('Musique mise en pause !')
|
||||
}
|
||||
}
|
||||
81
commands/music/play.js
Executable file
81
commands/music/play.js
Executable file
@@ -0,0 +1,81 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useMasterPlayer, useQueue, QueryType } = require('discord-player')
|
||||
const reduceString = (str, length) => str.length > length ? str.substring(0, length - 3) + "..." : str
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('play')
|
||||
.setDescription('Jouer une musique.')
|
||||
.addStringOption(option => option.setName('recherche').setDescription('Titre de la musique à chercher').setRequired(true).setAutocomplete(true)),
|
||||
async autocompleteRun(interaction) {
|
||||
let query = interaction.options.getString('recherche', true)
|
||||
if (!query) return interaction.respond([])
|
||||
|
||||
let player = useMasterPlayer()
|
||||
|
||||
const resultsYouTube = await player.search(query, { searchEngine: QueryType.YOUTUBE })
|
||||
const resultsSpotify = await player.search(query, { searchEngine: QueryType.SPOTIFY_SEARCH })
|
||||
|
||||
const tracksYouTube = resultsYouTube.tracks.slice(0, 5).map((t) => ({
|
||||
name: `YouTube: ${`${t.title} - ${t.author} (${t.duration})`.length > 75 ? `${`${t.title} - ${t.author}`.substring(0, 75)}... (${t.duration})` : `${t.title} - ${t.author} (${t.duration})`}`,
|
||||
value: t.url
|
||||
}))
|
||||
const tracksSpotify = resultsSpotify.tracks.slice(0, 5).map((t) => ({
|
||||
name: `Spotify: ${`${t.title} - ${t.author} (${t.duration})`.length > 75 ? `${`${t.title} - ${t.author}`.substring(0, 75)}... (${t.duration})` : `${t.title} - ${t.author} (${t.duration})`}`,
|
||||
value: t.url
|
||||
}))
|
||||
|
||||
const tracks = []
|
||||
tracksYouTube.forEach((t) => tracks.push({ name: t.name, value: t.value }));
|
||||
tracksSpotify.forEach((t) => tracks.push({ name: t.name, value: t.value }));
|
||||
|
||||
return interaction.respond(tracks)
|
||||
},
|
||||
async execute(interaction) {
|
||||
let voiceChannel = interaction.member.voice.channel
|
||||
if (!voiceChannel) return await interaction.reply({ content: "T'es pas dans un vocal, idiot !", ephemeral: true })
|
||||
|
||||
let botChannel = interaction.guild.members.me.voice.channel
|
||||
if (botChannel && voiceChannel.id !== botChannel.id) return await interaction.reply({ content: "T'es pas dans mon vocal !", ephemeral: true })
|
||||
|
||||
await interaction.deferReply()
|
||||
|
||||
let query = interaction.options.getString('recherche', true)
|
||||
let player = useMasterPlayer()
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
|
||||
if (!queue) {
|
||||
queue = player.nodes.create(interaction.guild, {
|
||||
metadata: {
|
||||
channel: interaction.channel,
|
||||
client: interaction.guild.members.me,
|
||||
requestedBy: interaction.user
|
||||
},
|
||||
selfDeaf: true,
|
||||
volume: 20,
|
||||
leaveOnEmpty: true,
|
||||
leaveOnEmptyCooldown: 300000,
|
||||
leaveOnEnd: true,
|
||||
leaveOnEndCooldown: 300000,
|
||||
skipOnNoStream: true
|
||||
})
|
||||
}
|
||||
try { if (!queue.connection) await queue.connect(voiceChannel) }
|
||||
catch (error) { console.error(error); return await interaction.followUp(`Y'a eu un problème, <@223831938346123275> ! (${error.message})`) }
|
||||
|
||||
let result = await player.search(query, { requestedBy: interaction.user })
|
||||
if (!result.hasTracks()) return await interaction.followUp(`Aucune musique trouvée pour **${query}** !`)
|
||||
let track = result.tracks[0]
|
||||
|
||||
let entry = queue.tasksQueue.acquire()
|
||||
await entry.getTask()
|
||||
queue.addTrack(track)
|
||||
|
||||
try {
|
||||
if (!queue.isPlaying()) await queue.node.play()
|
||||
track.source = track.source === 'youtube' ? 'Youtube' : track.source === 'spotify' ? 'Spotify' : 'Inconnu'
|
||||
return await interaction.followUp(`Chargement de la musique **${track.title}** de **${track.author}** sur **${track.source}**...`)
|
||||
} catch (error) { console.error(error); return await interaction.followUp(`Y'a eu un problème, <@223831938346123275> ! (${error.message})`) }
|
||||
finally { queue.tasksQueue.release() }
|
||||
}
|
||||
}
|
||||
49
commands/music/player.js
Executable file
49
commands/music/player.js
Executable file
@@ -0,0 +1,49 @@
|
||||
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('player')
|
||||
.setDescription('Afficher une interface de contrôle de la musique.'),
|
||||
async execute(interaction) {
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
if (!queue) return await interaction.reply('Aucune session d\'écoute en cours !')
|
||||
let track = queue.currentTrack
|
||||
if (!track) return await interaction.reply('Aucune musique en cours de lecture !')
|
||||
|
||||
/*let embed = {
|
||||
color: 0xffc370,
|
||||
title: track.title,
|
||||
url: track.url,
|
||||
}
|
||||
if (track.thumbnail) embed.thumbnail = { url: track.thumbnail }
|
||||
embed.description = `
|
||||
**Durée :** ${track.duration}
|
||||
**Source :** ${track.source ? track.source === 'youtube' ? 'Youtube' : track.source === 'spotify' ? 'Spotify' : 'Inconnu' : 'Inconnu'}
|
||||
**Volume :** ${queue.node.volume}%
|
||||
**Progression :** ${queue.node.createProgressBar()}
|
||||
**Loop :** ${queue.repeatMode ? queue.repeatMode === 2 ? "File d'Attente" : "Titre" : "Off"}
|
||||
**Autoplay :** ${queue.autoplay ? "On" : "Off"}
|
||||
`
|
||||
if (track.requestedBy) embed.footer = { text: `Demandé par ${track.requestedBy.tag}` }
|
||||
return await interaction.reply({ embeds: [embed] })*/
|
||||
|
||||
// Create an embed using EmbedBuilder instead of an object
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor('#ffc370')
|
||||
.setTitle(track.title)
|
||||
.setAuthor({ name: track.author })
|
||||
.setURL(track.url)
|
||||
.setThumbnail(track.thumbnail)
|
||||
.setDescription(`
|
||||
**Durée :** ${track.duration}
|
||||
**Source :** ${track.source ? track.source === 'youtube' ? 'Youtube' : track.source === 'spotify' ? 'Spotify' : 'Inconnu' : 'Inconnu'}
|
||||
**Volume :** ${queue.node.volume}%
|
||||
**Progression :** ${queue.node.createProgressBar()}
|
||||
**Loop :** ${queue.repeatMode ? queue.repeatMode === 2 ? "File d'Attente" : "Titre" : "Off"}
|
||||
**Autoplay :** ${queue.autoplay ? "On" : "Off"}
|
||||
`)
|
||||
.setFooter({ text: `Demandé par ${track.requestedBy.tag}` })
|
||||
return await interaction.reply({ embeds: [embed] })
|
||||
}
|
||||
}
|
||||
13
commands/music/previous.js
Executable file
13
commands/music/previous.js
Executable file
@@ -0,0 +1,13 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useHistory } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('previous')
|
||||
.setDescription('Joue la musique précédente.'),
|
||||
async execute(interaction) {
|
||||
let history = useHistory(interaction.guild.id)
|
||||
await history.previous()
|
||||
return await interaction.reply('Musique précédente jouée !')
|
||||
}
|
||||
}
|
||||
13
commands/music/resume.js
Executable file
13
commands/music/resume.js
Executable file
@@ -0,0 +1,13 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('resume')
|
||||
.setDescription('Reprendre la musique.'),
|
||||
async execute(interaction) {
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.node.setPaused(!queue.node.isPaused())
|
||||
return await interaction.reply('Musique reprise !')
|
||||
}
|
||||
}
|
||||
13
commands/music/shuffle.js
Executable file
13
commands/music/shuffle.js
Executable file
@@ -0,0 +1,13 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('shuffle')
|
||||
.setDescription('Mélange la file d\'attente.'),
|
||||
async execute(interaction) {
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.tracks.shuffle()
|
||||
return await interaction.reply('File d\'attente mélangée !')
|
||||
}
|
||||
}
|
||||
13
commands/music/skip.js
Executable file
13
commands/music/skip.js
Executable file
@@ -0,0 +1,13 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('skip')
|
||||
.setDescription('Passer la musique en cours.'),
|
||||
async execute(interaction) {
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.node.skip()
|
||||
return await interaction.reply('Musique passée !')
|
||||
}
|
||||
}
|
||||
13
commands/music/stop.js
Executable file
13
commands/music/stop.js
Executable file
@@ -0,0 +1,13 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('stop')
|
||||
.setDescription('Arrêter la musique.'),
|
||||
async execute(interaction) {
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.delete()
|
||||
return await interaction.reply('Musique arrêtée !')
|
||||
}
|
||||
}
|
||||
19
commands/music/volume.js
Executable file
19
commands/music/volume.js
Executable file
@@ -0,0 +1,19 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const { useQueue } = require("discord-player")
|
||||
|
||||
module.exports = {
|
||||
data: new SlashCommandBuilder()
|
||||
.setName('volume')
|
||||
.setDescription('Modifie le volume de la musique.')
|
||||
.addIntegerOption(option => option.setName('volume')
|
||||
.setDescription('Le volume à mettre (%)')
|
||||
.setRequired(true)
|
||||
.setMinValue(1)
|
||||
.setMaxValue(100)),
|
||||
async execute(interaction) {
|
||||
let volume = interaction.options.getInteger('volume')
|
||||
let queue = useQueue(interaction.guild.id)
|
||||
queue.node.setVolume(volume)
|
||||
return await interaction.reply(`Volume modifié à ${volume}% !`)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user