Grosse refonte + Ajout /amp + Correctif /crack
This commit is contained in:
@@ -1,13 +1,11 @@
|
||||
const { SlashCommandBuilder } = require('discord.js')
|
||||
const iconv = require('iconv-lite')
|
||||
const axios = require('axios')
|
||||
const fs = require('fs')
|
||||
require('require-all')(__dirname + '/../../utilsCrack')
|
||||
|
||||
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",
|
||||
@@ -26,89 +24,46 @@ var headers2 = {
|
||||
"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))
|
||||
try {
|
||||
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
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
await interaction.followUp({ content: `Y'a eu une erreur !\n${error.toString()}` })
|
||||
}
|
||||
}
|
||||
|
||||
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))
|
||||
try {
|
||||
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
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
await interaction.followUp({ content: `Y'a eu une erreur !\n${error.toString()}` })
|
||||
}
|
||||
}
|
||||
|
||||
async function torrent(url, headers) {
|
||||
let response = await fetch(url, { headers, body: null, method: "GET" })
|
||||
.catch(error => console.error(error))
|
||||
try {
|
||||
let body = await response.text()
|
||||
let file = body.split('<a href="')[2].split('">')[0]
|
||||
return file
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
await interaction.followUp({ content: `Y'a eu une erreur !\n${error.toString()}` })
|
||||
}
|
||||
}
|
||||
|
||||
async function download(url, file, headers) {
|
||||
let path = `./cracks/${file}`
|
||||
let writer = fs.createWriteStream(path)
|
||||
try {
|
||||
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
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
await interaction.followUp({ content: `Y'a eu une erreur !\n${error.toString()}` })
|
||||
}
|
||||
}
|
||||
|
||||
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)),
|
||||
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 game
|
||||
if (games.length === 0) return await interaction.followUp({ content: `J'ai rien trouvé pour "${query}" !` })
|
||||
else if (games.length > 1) {
|
||||
games = games.slice(0, 9)
|
||||
let list = ''
|
||||
for (let i = 0; i < games.length; i++) list += `\n${i + 1}. ${games[i].name} (${games[i].link})`
|
||||
let message = await interaction.followUp({ content: `J'ai trouvé plusieurs jeux pour "${query}" ! ${list}` })
|
||||
|
||||
let emojis = ['1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣']
|
||||
for (let i = 0; i < games.length; i++) await message.react(emojis[i])
|
||||
|
||||
// Wait for a reaction to be added by the interaction author.
|
||||
const filter = (reaction, user) => {
|
||||
return emojis.includes(reaction.emoji.name) && user.id === interaction.user.id
|
||||
}
|
||||
let collected = await message.awaitReactions({ filter, max: 1, time: 5000, errors: ['time'] })
|
||||
.catch(() => { return interaction.followUp({ content: 'T\'as mis trop de temps à choisir !' }) })
|
||||
console.log(collected)
|
||||
if (!collected.first) return
|
||||
let reaction = collected.first()
|
||||
let index = emojis.indexOf(reaction.emoji.name)
|
||||
game = games[index]
|
||||
}
|
||||
else game = games[0]
|
||||
console.log(interaction.user.id)
|
||||
|
||||
let url = await repo(game, 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 })
|
||||
fs.unlink(path, (err) => { if (err) throw err })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user