Selfbot Deroku


Créez vos propres commandes !

Codez en javascript , typescript ou en json .
Partagez-les avec le shop de plugin! (node index --plugins)


Javascript

Grâce à la façon dont-ils sont éxecutés, les plugins sont dans un environnement sûr et ne peuvent donc pas sortir de leur « boîte ».
Certains modules dangereux sont interdits mais la plupart restent là.
Vous avez accès à un fichier de sauvegarde pour sauvegarder tout type de donnée tel que des objets, des array, des strings et bien d'autres.
example (test.js):

let deroku = require("deroku-addons")// on importe le module (surtout pour les definitions)
let plugin = new deroku.Plugin("test", {// on crée le plugin (nom, {auteur, téléchargement et lien de support} (les propriétés ne sont pas toutes obligatoire.))
    "author": "JeanOUINA",
    "download": "https://deroku.xyz/plugins/downloads/test.js",
    "support": "https://deroku.xyz/cmdPerso#js"
})

PluginSaveData({// on peut sauvegarder des données avec PluginSaveData puisque le require("fs") est interdit.
    times: PluginGetData().times ? PluginGetData().times : 0
})

plugin.addCommand("test", "util", (message) => {// on ajoute une commande
    message.edit(`Commande test
Deroku **${DerokuVersion /* La version du deroku est disponible en global */}**
Plugin \`${plugin.name /* Le nom du plugin */}\`
Date actuel: **${new Date(Date.now() + 7200000).toISOString().replace(/T/, ' ').replace(/\..+/, '') /* La date actuelle */}**
Commande test appelé ${PluginGetData().times /* On récupère les données qu'on a sauvegardé et on l'utilise*/} fois`)
    PluginSaveData({ // On sauvegarde des données.
        times: PluginGetData().times + 1
    })
})

module.exports = plugin // on exporte le plugin (il ne sera pas appellé avec un require)

/**
 * Vous pouvez maintenant faire vos propres plugins. je n'ai pas tout expliqué. 
 * 
 * Une variable global appellé vars est disponible et donne toute sorte d'informations. Essayez de la console.log. (elle est pas documenté par vscode)
 * Elle contient les informations du premium, de la langue, couleur des embeds, etc
 * vars {
 *   premium: boolean,
 *   lang: string,
 *   trad(texts: string[]):string, // choisis le text selon la langue. example: vars.trad(["choisi si le self est en français", "Choose if english"])
 *   config: {
 *     prefix: string,
 *     color: string,
 *     twitch: string, // le nom d'utilisateur, pas le lien
 *     nsfw: boolean, // si le bypass nsfw est activé
 *     wiko: boolean
 *   },
 *   style(text: string):string, // Remplace l'écriture normal en écriture spécial. example: vars.style("Commandes du selfbot Deroku") // 𝘾𝙤𝙢𝙢𝙖𝙣𝙙𝙚 𝙙𝙪 𝙨𝙚𝙡𝙛𝙗𝙤𝙩 𝘿𝙚𝙧𝙤𝙠𝙪 ou Commandes du selfbot Deroku si le paramètre wiko a été activé.
 *   gifs: { // vous pouvez faire un .push sur les array pour ajouter des images (ou alors nimporte quel autre opération d'array.)
 *     general: string[],
 *     hug: string[],
 *     kiss: string[],
 *     slap: string[],
 *     shoot: string[],
 *     cry: string[],
 *     hentai: string[]
 *   },
 *   rdm_img: string, // Le gif du menu help (change à chaque démarrage du selfbot)
 *   images: string[] // Les mêmes images que vars.gifs.general
 * }
 * 
 * Si vous voulez les publiez (donc avoir le plugin dans un salon du serveur deroku), venez me mp (jeanouina) ou un admin. 
 * Vous pouvez aussi avoir un lien de téléchargement sur https://selfbotderoku.xyz-4.evennode.com/ et la liste dans le menu des plugins (node index --plugins).
 */

 //console.log(vars)

Typescript

Le typescript est juste un autre langage de programmation accessible mais contient les mêmes références que le javascript.
example (testPlugin.ts):

// Vous pouvez aussi faire des plugins en typescript (https://www.typescriptlang.org/)
// Le selfbot compilera le typescript en js au moment du lancement sans l'enregistrer en .js.

import * as deroku from "deroku-addons"// on import le module deroku
let vars:deroku.vars = global["vars"]// vous pouvez récuperer les variables global et appliquer une interface pour pouvoir l'utiliser avec les types.

const plugin = new deroku.Plugin("TestTypescript", {// on crée le plugin (nom, {auteur, téléchargement et lien de support} (les propriétés ne sont pas toutes obligatoire.))
    "author": "JeanOUINA",
    "download": "https://deroku.xyz/plugins/downloads/testPlugin.ts",
    "support": "https://deroku.xyz/cmdPerso#ts"
})

plugin.addCommand("tsc", "test", (message) => {//on ajoute une commande
    message.channel.send("module fait en typescript et compilé par le selfbot")
    message.delete()
    let embed = new deroku.RichEmbed()// nouvelle embed
    .setColor(vars.config.color)
    .setAuthor(plugin.user.username, plugin.user.displayAvatarURL)
    .setTitle(vars.style(vars.trad(["Commande programmé en TypeScript", "Command done in TypeScript"])))
    .addField("OS", process.platform == "win32" ? "Windows" : process.platform == "darwin" ? "Apple" : process.platform == "android" ? "Android" : process.platform)
    .addField("Filename", __filename, true)
    .addField("Dirname", __dirname, true)
    .addField("UserID", message.author.id)
    .addField(vars.trad(["Auteur du plugin", "Plugin Author"]), plugin.author)
    .addField("PluginName", plugin.name)
    message.channel.send(embed)
})

plugin.onready = function(){
    plugin.on("message", (message) => {
        console.log(message)
        console.log(`\x1b[32m${new Date().toISOString().replace("T", " ").replace(/\..+/, "")}\x1b[0m - \x1b[33m${message.author.tag} (${message.author.id})\x1b[0m - ${message.content}`)
    })
}


export default plugin //on exporte le plugin

JSON

le json a les mêmes références que les autres langages. La seul différence, c'est que vous n'êtes pas obligé de savoir coder en javascript/typescript
example (testJSON.json):

{
    "name": "TestJSON",
    "compatible_with": "^0.5",
    "maker": "JeanOUINA",
    "download": "https://deroku.xyz/plugins/testJSON.json",
    "support": "https://deroku.xyz/cmdPerso#json",
    "commands": [
        {
            "name":"json",
            "actions": [
                {
                    "type":"sendmsg",
                    "args": {
                        "to": "channel:this",
                        "content": "message en non embed !!"
                    }
                },{
                    "type": "define",
                    "args": {
                        "name": "user",
                        "data": "message.mentions.users.first()"
                    }
                },{
                    "type":"sendmsg",
                    "args": {
                        "to": "channel:this",
                        "content": "ce message a un embed + une image attaché",
                        "embed": {
                            "title": "embed xd",
                            "description": "vous pouvez gen un embed assez facilement [ici](https://leovoel.github.io/embed-visualizer/)",
                            "color": 35839,
                            "footer": {
                              "icon_url": "${message.author.displayAvatarURL}",
                              "text": "${message.author.username}"
                            },
                            "image": {
                              "url": "attachment://file.png"
                            },
                            "author": {
                              "name": "${message.author.username}",
                              "icon_url": "${message.author.displayAvatarURL}"
                            },
                            "fields": [
                              {
                                "name": "🤔",
                                "value": "le json est pour éviter de coder en .js (le selfbot compile en .js et l'execute)"
                              },
                              {
                                "name": "🙄",
                                "value": "Les embeds sont directement mis dans \\`new discord.RichEmbed()\\` donc respectez les property de ce site et ça fonctionnera (copiez juste l'embed, sans le content.)"
                              },
                              {
                                "name": "<:pepe_thanos:606069862279675905>",
                                "value": "Les inlines",
                                "inline": true
                              },
                              {
                                "name": "<:pepe_thanos:606069862279675905>",
                                "value": "fonctionnent",
                                "inline": true
                              }
                            ]
                          },
                        "files": [{
                            "attachment": "https://images.discordapp.net/avatars/293179475645038594/5c78e5e7b9d0992acef8c66c4a62d7d5.png?size=512",
                            "name": "file.png"
                        }]
                    }
                },{
                    "type": "editmsg",
                    "args": {
                        "to": "message:this",
                        "content": "un message modifié de ${message.author} (dernier username: ${PluginGetData().username})"
                    }
                },{
                    "type": "eval",
                    "args": {
                        "content": "console.log(plugin.user.tag+' '+message.createdAt)"
                    }
                },{
                    "type": "setSave",
                    "args": {
                        "data": {
                            "test1": "oui",
                            "username": "${plugin.user.username}"
                        }
                    }
                }
            ]
        }
    ],
    "events": [
        {
            "type":"message",
            "actions":[]
        }
    ],
    "others": [
        
    ]
}