Rehber Discord.js V12, Canvas modulü ile örnek Windows hata mesajı

Akif9748

Kilopat
Katılım
19 Ocak 2020
Mesajlar
4.114
Makaleler
14
Çözümler
55
Lütfen programlama kategorisine rehber ekleyin :) .
Kodun sonuç olarak verdiği çıktı:
1621422750212.png


İstediğiniz her şekle getirebilirsiniz, cevapları mı dersin? Hatayı mı dersin? Bu sadece örnek.

Gördüğünüz üzere hatayı bir Windows penceresine yazıyor ve tıkladığınız sayıya göre cevap veriyor. Kodumuz:
[CODE lang="javascript" title="Discord.js"]const Discord = require("discord.js");
const Canvas = require('canvas');

exports.run = async (client, message, args) => {
const hatakodu = args.slice(0).join(' ');;
const canvas = Canvas.createCanvas(304, 150);
const context = canvas.getContext('2d');

const background = await Canvas.loadImage('./util/hata.jpg');

context.drawImage(background, 0, 0, canvas.width, canvas.height);

context.strokeRect(0, 0, canvas.width, canvas.height);

context.font = '20px sans-serif';

context.fillStyle = '#000000';

context.fillText(hatakodu, 55, 60);

const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'hata-mesajı.png');

const bu = await message.channel.send(attachment);
bu.react("1️⃣")
bu.react("2️⃣")
bu.react("3️⃣")
const filter = (reaction, user) => {
return ['1️⃣', '2️⃣', '3️⃣'].includes(reaction.emoji.name) && user.id === message.author.id;
};

bu.awaitReactions(filter, { max: 1, time: 10000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();

if (reaction.emoji.name === '1️⃣') {
message.reply('Ben de öyle düşünmüştüm.');
} else if (reaction.emoji.name === '2️⃣') {
message.reply('Allah Allah? Nasıl hayır?');
} else if (reaction.emoji.name === '3️⃣') {
message.reply('Tamam böyle bir şey yaşanmadı :)');
}
})
.catch(collected => {
message.reply('Ne yani? Hiç bir şey olmadı mı? Niye işaretlemedin artık geçti borun pazarı sür eşeğini niğdeye.');
});

};

exports.conf = {
aliases: ['p', 'pong', 'uptime',],
permLevel: 0
};

exports.help = {
name: 'hata',
description: 'Windows hata menusu oluşturur :).',
usage: 'hata bişiler'
};[/CODE]


Kodumuzu istediğiniz yere ayarlayabiliriz. Bu command handler için olan hali.


Nasıl yaptım?
Canvas hakkında araştırmalar yapıyordum, diğerlerinin botlarının resimleri değiştirmesini hayranlıkla izliyordum. Ve en son FirehorseMKVIII hocamın botunda canvası görünce yapayım dedim.
Öncelikle bir hata menüsü oluşturdum.



Hadi başlayalım.
Öncelikle bunu alıp botun klasöründe bir yere koyalım. Buna şıklarımızı da ekleyeceğiz, istediğiniz şıkkı koyun, ben böyle yaptım:
1621422634043.png

Koda gelelim:
JavaScript:
    const hatakodu = args.slice(0).join(' ');; //yazı kısmına ne geleceği
    const canvas = Canvas.createCanvas(304, 150); //resmin çözünürlüğü
    const context = canvas.getContext('2d');
   
    const background = await Canvas.loadImage('./util/hata.jpg'); //resmin lokasyonu(Konumu)

    context.drawImage(background, 0, 0, canvas.width, canvas.height);

    context.strokeRect(0, 0, canvas.width, canvas.height);
Resim çözünürlüğü (Hata resminin), ve resmin nerede bulunduğu tanımlanıyor.
JavaScript:
context.font = '20px sans-serif'; //yazı tipi ve boyutu

    context.fillStyle = '#000000'; //yazı rengi

    context.fillText(hatakodu, 55, 60); //üstte tanımladığmız yazıyı istediğiniz kordinata yazar.

    const attachment = new Discord.MessageAttachment(canvas.toBuffer(), 'hata-mesajı.png' //resmi gönderir.
Yazı tipi ve boyutu, ve nereye yazacağı tanımlanıyor. Ayrıca resmi gönderen mesaj bu.
JavaScript:
const bu = await message.channel.send(attachment); //mesaja istediğin emojiyi atar
    bu.react("1️⃣")
    bu.react("2️⃣")
    bu.react("3️⃣")
    const filter = (reaction, user) => {
        return ['1️⃣', '2️⃣', '3️⃣'].includes(reaction.emoji.name) && user.id === message.author.id;
    };
   
    bu.awaitReactions(filter, { max: 1, time: 10000, errors: ['time'] })
        .then(collected => {
            const reaction = collected.first();
   
            if (reaction.emoji.name === '1️⃣') {
                message.reply('Ben de öyle düşünmüştüm.');
            } else if (reaction.emoji.name === '2️⃣') {
                message.reply('Allah Allah? Nasıl hayır?'); //emojiye göre cevap
            } else if (reaction.emoji.name === '3️⃣') {
                message.reply('Tamam böyle bir şey yaşanmadı :)');
            }
        })
        .catch(collected => {
            message.reply('Ne yani? Hiç bir şey olmadı mı? Niye işaretlemedin artık geçti borun pazarı sür eşeğini niğdeye.');
        });//zaman aşımı
Mesaja emoji atar ve zaman aşımı olmazsa sizin yazdığınız cevabı verir.
Bitti.
Diğer altarnatif :) @Eray T için Win 10:
1621420945098.png
 
Son düzenleme:

Yeni konular

Geri
Yukarı