Menu

[TUT] Stap voor stap je eigen Discord bot [DEEL 4]

Quality

De avatar van Quality
  • Donateur
  • Donateur
Geplaatst op 29-4-2019 12:46

Heyhoi,

Omdat ik toch best wel vaak voorbij zie komen: "Hoe maak ik een eigen discord bot" ga ik in verschillende topics jullie easy uitleggen, hoe maak ik deze nou?

Let op, het is niet zo'n bot wat uitgebreide functies heeft, maar een beetje de basic.

Ik krijg regelmatig ook berichtjes van "hij werkt niet" maar voordat ik zo'n topic plaats, test ik de gehele bot, en daarin begrepen de commands, dus waarschijnlijk doe je iets fout, probeer het opnieuw, en dan zal hij het doen, volg alle stappen die er benoemd worden!

Ondanks ik jarig ben, dacht ik dat ik wel even de deel 4 online moest zetten, die ik gelukkig al had gemaakt, dus een verjaardagscadeautje van mij naar jullie!

Wat heb je nodig?
Git: Te downloaden via hier
Notepad++: Te downloaden via hier
Ja inderdaad, ik use Notepad++_ omdat dit voor de tutorials het makkelijkste te gebruiken is.
Node.js: Te downloaden via hier
En natuurlijk discord, en een beetje geduld!
Deel 1 en 2 en 3, anders zal dit ook niet gaan werken!: Deel 1: klik hier Deel 2: klik hier Deel 3: klik hier


In dit deel gaan we een aantal nieuwe commands toevoegen, aan de bot!

Oké! Laten we beginnen!

We beginnen weer met het openen van de "BlazorBot" map, omdat hier natuurlijk alle bestanden in staan.
Zoals jullie weten is er een mapje "cmds" aangemaakt, hier worden de commands in gedropt, bovendien de naam "cmds" niet veranderen, ivm deze staat geconfigureerd in de "BlazorBot.js"!

Stap 1: Het aanmaken van een command genaamd avatar!
Met deze command kun je de avatar van iemand anders stelen!

Het eerste wat we gaan doen, een nieuw bestandje maken in de cmds map, om er voor te zorgen dat deze command ook ergens in opgeslagen komt, en het ook zal gaan werken.

Wat we dus doen, we maken in de map cmds een bestandje met de naam "avatar.js".
Daarna openen we dit bestandje in notepad, en zorgen we er voor dat deze op het moment nog helemaal leeg is, er dus helemaal niks in staat. 

Wat we nu doen, is de volgende code toevoegen:

module.exports.run = async (bot, message, args) => {

    let msg = await message.channel.send("Avatar aan het genereren...");
    let target = message.mentions.users.first() || message.author;

    message.channel.send({files: [
        {
          attachment: target.displayAvatarURL,
          name: "avatar.gif"
        }
    ]});

    msg.delete();
}

module.exports.help = {
    name: "avatar"
}

Dit is de volledige tekst die je nodig hebt om je avatar command te laten werken!

Nu kun je de bot opnieuw aanzetten, en het testen.

Stap 2: Het aanmaken van een command genaamd say!
Heb jij altijd al willen kunnen typen voor je bot?

Het eerste wat we gaan doen, een nieuw bestandje maken in de cmds map, om er voor te zorgen dat deze command ook ergens in opgeslagen komt, en het ook zal gaan werken.

Wat we dus doen, we maken in de map cmds een bestandje met de naam "say.js".
Daarna openen we dit bestandje in notepad, en zorgen we er voor dat deze op het moment nog helemaal leeg is, er dus helemaal niks in staat. 

Wat we nu doen, is de volgende code toevoegen:

const Discord = require("discord.js");

module.exports.run = async (bot, message, args) => {

  message.delete();
  if(!message.member.hasPermission("MANAGE_MESSAGES")) return errors.noPerms(message, "MANAGE_MESSAGES");
  let botmessage = args.join(" ");
  message.channel.send(botmessage);
}

module.exports.help = {
  name: "say"
}

Dit is de volledige tekst die je nodig hebt om je say command te laten werken!

Nu kun je de bot opnieuw aanzetten, en het testen.

Stap 3: Het aanmaken van een command genaamd purge!
Wil je met je bot een groot aantal berichten kunnen verwijderen?

Het eerste wat we gaan doen, een nieuw bestandje maken in de cmds map, om er voor te zorgen dat deze command ook ergens in opgeslagen komt, en het ook zal gaan werken.

Wat we dus doen, we maken in de map cmds een bestandje met de naam "purge.js".
Daarna openen we dit bestandje in notepad, en zorgen we er voor dat deze op het moment nog helemaal leeg is, er dus helemaal niks in staat. 

Wat we nu doen, is de volgende code toevoegen:

exports.run = (client, message, args, tools) => {
  if (isNaN(args[0])) return message.channel.send('**Je moet wel een aantal noemen die verwijderd worden!**');
  if (args[0] > 100) return message.channel.send('**Alsjeblieft, noem een nummer onder de 100!**');
  message.channel.bulkDelete(args[0])
    .then(messages => message.channel.send(`**Succesvol \`${messages.size}/${args[0]}\` berichten verwijderd!**`).then(msg => msg.delete({
      timeout: 50000
    }))) 
}
module.exports.help = {
  name: "purge"
}

Dit is de volledige tekst die je nodig hebt om je purge command te laten werken!

Nu kun je de bot opnieuw aanzetten, en het testen.

Stap 4: Het aanmaken van een command genaamd flip!
Wil je met je bot een text op de kop kunnen draaien?

Het eerste wat we gaan doen, een nieuw bestandje maken in de cmds map, om er voor te zorgen dat deze command ook ergens in opgeslagen komt, en het ook zal gaan werken.

Wat we dus doen, we maken in de map cmds een bestandje met de naam "flip.js".
Daarna openen we dit bestandje in notepad, en zorgen we er voor dat deze op het moment nog helemaal leeg is, er dus helemaal niks in staat. 

Wat we nu doen, is de volgende code toevoegen:

const mapping = '¡"#$%?,)(*+\'-?/0?????9?86:;<=>¿@?q?p???HI???WNO?Q?S-n?MX?Z[/]^_`?q?p???????l?uodb?s?n??x?z{|}~';
const OFFSET = '!'.charCodeAt(0);

exports.run = async (client, message, args, level) => { 
  if (args.length < 1) {
    message.channel.send('Je moet wel een text noemen om te kunnen draaien!');
}

message.channel.send(
    args.join(' ').split('')
        .map(c => c.charCodeAt(0) - OFFSET)
        .map(c => mapping[c] || ' ')
        .reverse().join('')
);
};
module.exports.help = {
  name: "flip"
}

Dit is de volledige tekst die je nodig hebt om je flip command te laten werken!

Nu kun je de bot opnieuw aanzetten, en het testen.

Stap 5: Het aanmaken van een command genaamd ping!
Wil je weten hoe snel je bot eigenlijk is?

Het eerste wat we gaan doen, een nieuw bestandje maken in de cmds map, om er voor te zorgen dat deze command ook ergens in opgeslagen komt, en het ook zal gaan werken.

Wat we dus doen, we maken in de map cmds een bestandje met de naam "ping.js".
Daarna openen we dit bestandje in notepad, en zorgen we er voor dat deze op het moment nog helemaal leeg is, er dus helemaal niks in staat. 

Wat we nu doen, is de volgende code toevoegen:

exports.run = async (client, message, args, level) => { 
  const msg = await message.channel.send(":ping_pong: Ping!");
  msg.edit(':stopwatch: Command laadde in: `' + `${msg.createdTimestamp - message.createdTimestamp}` + 'ms`' + ' \n :heartbeat: Snelheid bot: `' + `${client.ping}` + 'ms`');
};

module.exports.help = {
  name: "ping"
}

Dit is de volledige tekst die je nodig hebt om je ping command te laten werken!

Nu kun je de bot opnieuw aanzetten, en het testen!

Stap 6: Het aanmaken van een command genaamd mute!
Wil je iemand kunnen muten in je server?

Ivm ik meerdere verzoeken kreeg om deze command toe te voegen😛

Het eerste wat we gaan doen is het opstarten van de git bash in je "BlazorBot" map, en hier vul je in npm install ms dit zodat de mute command gaat werken.
Wat we hierna gaan doen is een nieuw bestandje maken in de cmds map, om er voor te zorgen dat deze command ook ergens in opgeslagen komt, en het ook zal gaan werken.

Wat we dus doen, we maken in de map cmds een bestandje met de naam "mute.js".
Daarna openen we dit bestandje in notepad, en zorgen we er voor dat deze op het moment nog helemaal leeg is, er dus helemaal niks in staat. 

Wat we nu doen, is de volgende code toevoegen:

const Discord = require("discord.js");
const ms = require("ms");

module.exports.run = async (bot, message, args) => {

    if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.reply("Sorry, maar je hebt deze permissies niet!");
    let tomute = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]));
    if (!tomute) return message.reply("Die gebruiker kan ik niet vinden!.");
    if (tomute.hasPermission("MANAGE_MESSAGES")) return message.reply("Hmm, deze gebruiker heeft dezelfde rechten als jou, dus muten gaat niet werken he!");
    let muterole = message.guild.roles.find(`name`, "Muted");

    if (!muterole) {
        try {
            muterole = await message.guild.createRole({
                name: "Muted",
                color: "#000000",
                permissions: []
            })
            message.guild.channels.forEach(async (channel, id) => {
                await channel.overwritePermissions(muterole, {
                    SEND_MESSAGES: false,
                    ADD_REACTIONS: false
                });
            });
        } catch (e) {
            console.log(e.stack);
        }
    }

    let mutetime = args[1];
    if (!mutetime) return message.reply("Je moet wel even een tijd benoemen!");

    await (tomute.addRole(muterole.id));
    message.reply(`<@${tomute.id}> is gemute voor ${ms(ms(mutetime))}`);

    setTimeout(function() {
        tomute.removeRole(muterole.id);
        message.channel.send(`<@${tomute.id}> is unmuted!`);
    }, ms(mutetime));

}

exports.conf = {
    aliases: [],
    permLevel: 2
};

module.exports.help = {
    name: "mute"
}

Dit is de volledige tekst die je nodig hebt om je mute command te laten werken!

Nu kun je de bot opnieuw aanzetten, en het testen!

Stap 7: Het bewerken van de help command, met hierin de nieuwe commands!
Nieuwe commands? Niet vergeten de help command te updaten!

Jazeker, nu zijn er weer 6 nieuwe commands bij, maar nu moeten we ze natuurlijk ook nog in de help zetten, om er voor te zorgen, dat iedereen weet dat deze commands er nu zijn!

Ga weer naar je map cmds, en open hier het bestandje help.js met notepad.

Verwijder alles wat er in je help.js staat, en vervang dit met dit:

const Discord = module.require("discord.js");
let hinfo = ("Hey! hierbij krijg je mijn commands!\n\n")
let hcommands = ("**Avatar**\nLaat je de avatar van een gebruiker zien!\n**Ban <mention> <reden>**\nVerban een gebruiker\n**Flip**\nDraai een tekst om!\n**Help**\nLaat je dit menu zien!\n**Kick <mention> <reden>**\nKick een gebruiker\n**Mute <mention> <(aantal secondes)(s)**\nMute een gebruiker!\n**Ping**\nKijk hoe snel je bot is!\n**purge (aantal)**\nVerwijder een groot aantal berichten!\n**Say**\nLaat je bot typen!\n")
module.exports.run = async (bot, message, args) => {
    let bicon = bot.user.displayAvatarURL;
    let embed = new Discord.RichEmbed()
    .setThumbnail(bicon)
        .setColor("#9B59B6")
        .addField("**<de naam van je discord bot> Help:**", hinfo)
        .addField("\n**Commands**", hcommands)
        .setFooter(`Hoi! Ik ben de <de naam van je discord bot> bot!`);

        message.channel.send({embed: embed});
}

module.exports.help = {
    name: "help"
}

Sla je bestandje op, zet je runbot uit, en start hem weer op!

Als het goed is zou je bot nu moeten werken!

Nou, dit was het weer voor vandaag, waarschijnlijk staat er deze week of zo snel mogelijk deel 5 online!

Mocht je toch ondertussen nog vragen hebben, join gerust de discord server, die speciaal is aangemaakt voor deze tutorials! https://discord.gg/dkREZx7

Veel succes er mee, en tot dan!

Groetjes❤

Snel deel 5? 4 votes
  • Ja 4 votes (100%)
  • Nee 0 votes (0%)

King

De avatar van King
  • Donateur
  • Donateur
Geplaatst op 29-4-2019 19:03

Thx voor alle uitleg❤❤ Eigenlijk is een inhoudsopgave wel makkeojk

Kippensoep

De avatar van Kippensoep
  • Geregistreerd lid
  • Geregistreerd
Geplaatst op 29-4-2019 22:18

Ik ga een Blazor meldingen bot maken thx❤

Sevvlor

De avatar van Sevvlor
  • Donateur
  • Donateur
Geplaatst op 29-4-2019 22:19

Als je hulp nodig hebt Kippensoep let me know

Clippit should work on the suicidal hot line: "It seems you want to die, would you like a list of ways to die?"

Omertr

De avatar van Omertr
  • Geregistreerd lid
  • Geregistreerd
Geplaatst op 30-4-2019 07:45

Kan je ook tutorial maken hoe je 24/7 aan laat staan de bot?

EatMyHitzz

De avatar van EatMyHitzz
  • -
  • Donateur
Geplaatst op 30-4-2019 08:02

Omertr
Kan je ook tutorial maken hoe je 24/7 aan laat staan de bot?

Via een hosting

Omertr

De avatar van Omertr
  • Geregistreerd lid
  • Geregistreerd
Geplaatst op 30-4-2019 19:35

EatMyHitzz

Omertr
Kan je ook tutorial maken hoe je 24/7 aan laat staan de bot?

Via een hosting

Het kan ook via heroku

Quality

De avatar van Quality
  • Donateur
  • Donateur
Geplaatst op 30-4-2019 19:38

Omertr

EatMyHitzz

Omertr
Kan je ook tutorial maken hoe je 24/7 aan laat staan de bot?

Via een hosting

Het kan ook via heroku

Heroku & Glitch zijn niet te vertrouwen, en hoor van veel mensen dat ze ook niet 24/7 online zijn😉

EatMyHitzz

De avatar van EatMyHitzz
  • -
  • Donateur
Geplaatst op 30-4-2019 19:55 Sevvlor

Omertr

EatMyHitzz

Omertr
Kan je ook tutorial maken hoe je 24/7 aan laat staan de bot?

Via een hosting

Het kan ook via heroku

Heroku is toch een host 😳

<knip reclame verwijderd>

King

De avatar van King
  • Donateur
  • Donateur
Geplaatst op 1-5-2019 16:45

Sevvlor
Als je hulp nodig hebt Kippensoep let me know

Wil je endponts maken die meldingen als json aanbieden?

Poepje

De avatar van Poepje
  • Geregistreerd lid
  • Geregistreerd
Geplaatst op 4-5-2019 00:47

Sevvlor
Als je hulp nodig hebt Kippensoep let me know

Kun je mij endpoints geven?

Sevvlor

De avatar van Sevvlor
  • Donateur
  • Donateur
Geplaatst op 4-5-2019 14:09

Wat voor eindpoints zou je willen?

Clippit should work on the suicidal hot line: "It seems you want to die, would you like a list of ways to die?"

Snel reageren

Flag Content
Processing...

Geef een duidelijke reden waarom een administrator naar deze post moet kijken