Discord.js Bot Kodlama #3 => Komutları ayırma ve Örnek Avatar Komutu!

Katılım
30 Kas 2020
Konular
4
Mesajlar
8
Tepki puanı
13
Puanları
410
Merhaba arkadaşlar bugün sizlerle botumuz da ki komutları ayıracağız.

Yani bütün komutları sadece index.js dosyasında bulundurmak yerine yeni bir klasör açıp oraya ayıracağız.

İlk olarak 1. bölümde gösterdiğim gibi power shelli açalım ve oraya " npm install proton-io" yazıp entere basalım.

1606830977342.png


Peki nedir bu proton-io ?

Proton-io Türk yapımı olan bir komut yükleyicisidir. https://www.npmjs.com/package/proton-io

Peki nedir bu komut yükleyicisi ?

Komut yükleyicisi komutlarınızı bir klasörde toplar ve tek bir dosyaya toplamaktan kurtulursunuz.

Peki nedir bu tek bir klasörde toplama ?

Şaka yaptım fazla detaya inmicem :D


proton-io modülümüzü indirdikten sonra "index.js" dosyamıza gelelim

1606831204539.png


'token' yazan yere botunuzun tokenini girin


şimdi "index.js" dosyamıza şu kodlarla düzenleyelim;

JavaScript:
const Discord = require('discord.js'); // discord.js modülümüzü tanımladık
const client = new Discord.Client(); // discord.js modülünde bulunan clienti tanımladık
const proton = require("proton-io") // proton-io modülümüzü tanımladık

let p = "-" // prefiximizi tanımladık

let komutDosya = "./komutlar" // komutlar dosyamızı tanımladık
let eventLoad = "./events" // eventler dosyamızı tanımladık
let gelistiricler = ["722186767704522812"] // kendi ID nizi girin
let owner = true; // açık kalsın
let defaultCommands = false; // böyle kalsın

const komutYukle = new proton(client, komutDosya, eventLoad, gelistiricler, { owner, defaultCommands })
// bunları aktif ettik


let botlaraCevapVer = false; // kapalı kalacak
let etiketlePrefixOgren = true; // ister açık olsun ister kapalı
let etiketiPrefixOlarakKullan = true; // açık olursa botunuz daha iyi olur


client.on('message', async (msg) => {
  komutYukle.message(msg, p, { botlaraCevapVer, etiketiPrefixOlarakKullan, etiketlePrefixOgren}
  )
})
// bunları da aktif ettik



client.on('ready', () => {
  console.log(`Ben Hazırım!`);
}); // bot giriş yaptığında konsola bu mesajı atacak

client.on('message', msg => {
  if (msg.content === 'sa') {
    msg.reply('Aleyküm Selam Hoş Geldin');
  }    // en basit kod örneği birisi sa dediğinde Aleyküm Selam Hoş Geldin diye cevap verecek
});


client.on('message', msg => {
  if (msg.content === 'ping') {
    msg.reply(new Discord.MessageEmbed()
    .setColor("RANDOM") // embed mesajımınız rengi eğer RANDOM yazarsanız her kullanımda farklı renk atar
    .setTitle("PİNG TABLOM") // başlık kısmımız
    .setDescription(`Pingim Ölçülüyor`) // açıklama
    .addField("Pingim" , `${client.ws.ping} MS`) // pingimizi ölçtük
    .setFooter("https://oyuncularsehri.com/") // en alt kısım
    .setThumbnail("https://cdn.discordapp.com/attachments/780188652570935304/783291297989394432/1KckhZGi.jpg") // sağ üstte bulunan resim
    .setImage("https://cdn.discordapp.com/attachments/780188652570935304/783291297989394432/1KckhZGi.jpg") // altta bulunan kocaman resim
    .setTimestamp() // en sağ altta saati söyler
    )
  }
})
client.login('token'); // botumuzun tokeni

bu kodu yapıştırdıktan sonra botumuzun klasörüne gelip "komutlar" ve "events" adında 2 tane klasör oluşturalım yani botumuzun dosyası böyle olacak;

1606831533380.png


bu işlem bittikten sonra kod editörümüze gelelim ve açtığımız komutlar klasörünün içine gelelim ve yeni bir dosya açalım

1606831598946.png


dosyamızın adı "avatar.js" olsun not - komutlar klasöründe açtığın her dosyanın uzantısı .js olmalıdır

1606831642902.png


"avatar.js" kodumuza gelip bu kodu yapıştıralım

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

module.exports = {
    name: "avatar", // komutumuzun adı
    aliases: ["av","pp"], // komutumuzun diğer kullanımları
    description: "Üyelerin Avatarını Alırsınız!", // komutumuzun açıklaması burayı sallayabilirsiniz farketmez
    usage: "avatar", // komutumuzun kullanımı
    ownerOnly: false, // herkes kullanabilir mi yoksa sadece bot sahibi mi kullanabilir eğer false yaparsanız herkes kullanabilir

    run: async (message,args,client) => {
      let avatar = message.mentions.users.first() || message.author; // -avatar yazınca kendi avatarınızı alırsınız -avatar @kullanıcı yazınca başkasının avatarını alırsınız

     message.channel.send(new Discord.MessageEmbed()
      .setColor('RANDOM') // embed mesajımızın rengi
      .setImage(avatar.avatarURL ({size:2048, dynamic:true, format:'png' })) // etiketlediğiniz kişinin avatarı veya kendi avatarınızı atacak format: "png" yapmasaydık kalite atmazdı
     .setTitle(`${avatar.username} Adlı Üyenin Avatarı`) // en yukarıda hangi üyenin avatarını aldığını gösterir
)
      }
}

şimdi örneğe bakalım

1606832079254.png


yaptığımız diğer kullanımlar çalışıyor mu bakalım

1606832120737.png


1606832141546.png


ve son olarak başa " - " yazmamın sebebi index.js de prefiximizi - olarak belirlemiştik siz ne olarak belirlediyseniz başına belirlediğiniz şeyi koyun

Bugünlük bu kadardı diğer bölümde ping komutunu komutlara taşırız. 2 tane de kod gösteririm. istediğiniz kod varsa yazın

Bugünlük bu kadardı

İyi Akşamlar
 
Katılım
10 Kas 2019
Konular
225
Mesajlar
1,057
Çözümler
19
Tepki puanı
1,048
Puanları
8,710
Konu uygun kategoriye taşındı. (y)
 
Katılım
30 Ara 2020
Konular
0
Mesajlar
10
Tepki puanı
1
Puanları
710
avatar komutunu çalıştıramıyorum hata vermiyor ama çalışmıyor
 
Katılım
10 Kas 2019
Konular
225
Mesajlar
1,057
Çözümler
19
Tepki puanı
1,048
Puanları
8,710
versionum v12 onun içinde avatar komutu varmı burada?
Forum sitemizde paylaşılmamış. Ama ben sizin için atayım.

JavaScript:
const Discord = require('discord.js');

exports.run = (client, message, args) => {
let mention = message.mentions.users.first();
let sender = "";
if (message.channel.guild.member(message.author).nickname == null) {
  sender = message.author.username;
} else {
  sender = message.channel.guild.member(message.author).nickname;
}
if (mention != null || mention != undefined) {
  var name = mention.username + "'s ";
  if (mention.username.endsWith("s")) {
    name = mention.username + "' ";
  }
  const avatarEmbedOther = new Discord.MessageEmbed()
  .setAuthor(mention.username, mention.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setColor('RED')
  .setImage(mention.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setFooter(`${message.author.tag} tarafından istendi.`, message.author.avatarURL())
  .setDescription(`[Avatarın büyük halini göster!](${message.author.avatarURL})`);
  message.channel.send(avatarEmbedOther);
  return;
} else {
  const avatarEmbedYou = new Discord.MessageEmbed()
  .setAuthor(sender, message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setColor('RED')
  .setImage(message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setFooter(`${message.author.tag} tarafından istendi.`, message.author.avatarURL())
  .setDescription(`[Avatarın büyük halini göster!](${message.author.avatarURL})`);
  message.channel.send(avatarEmbedYou);
  return;
}
message.channel.send("Render hatası yada bilinmeyen bir hata oldu.");
}
exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: ['avatarım'],
    kategori: 'kullanıcı',
  permLevel: 0
};
exports.help = {
  name: 'avatar',
  isim: 'Avatar',
  süre: 'Yok',

  description: 'Avatarınızı gösterir ve ya birini etiketlerseniz o kişinin avatarını gösterir.',
  usage: 'avatar <@kullanıcı>'
};
 
Katılım
30 Ara 2020
Konular
0
Mesajlar
10
Tepki puanı
1
Puanları
710
Forum sitemizde paylaşılmamış. Ama ben sizin için atayım.

JavaScript:
const Discord = require('discord.js');

exports.run = (client, message, args) => {
let mention = message.mentions.users.first();
let sender = "";
if (message.channel.guild.member(message.author).nickname == null) {
  sender = message.author.username;
} else {
  sender = message.channel.guild.member(message.author).nickname;
}
if (mention != null || mention != undefined) {
  var name = mention.username + "'s ";
  if (mention.username.endsWith("s")) {
    name = mention.username + "' ";
  }
  const avatarEmbedOther = new Discord.MessageEmbed()
  .setAuthor(mention.username, mention.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setColor('RED')
  .setImage(mention.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setFooter(`${message.author.tag} tarafından istendi.`, message.author.avatarURL())
  .setDescription(`[Avatarın büyük halini göster!](${message.author.avatarURL})`);
  message.channel.send(avatarEmbedOther);
  return;
} else {
  const avatarEmbedYou = new Discord.MessageEmbed()
  .setAuthor(sender, message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setColor('RED')
  .setImage(message.author.avatarURL({ dynamic: true, format: 'png', size: 1024 }))
  .setFooter(`${message.author.tag} tarafından istendi.`, message.author.avatarURL())
  .setDescription(`[Avatarın büyük halini göster!](${message.author.avatarURL})`);
  message.channel.send(avatarEmbedYou);
  return;
}
message.channel.send("Render hatası yada bilinmeyen bir hata oldu.");
}
exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: ['avatarım'],
    kategori: 'kullanıcı',
  permLevel: 0
};
exports.help = {
  name: 'avatar',
  isim: 'Avatar',
  süre: 'Yok',

  description: 'Avatarınızı gösterir ve ya birini etiketlerseniz o kişinin avatarını gösterir.',
  usage: 'avatar <@kullanıcı>'
};
avatar.js e kodu yapıştırdım fakat çalışmadı ama hata da vermedi
 
Katılım
10 Kas 2019
Konular
225
Mesajlar
1,057
Çözümler
19
Tepki puanı
1,048
Puanları
8,710
Alt yapınızdan kaynaklı olan bir sorun olduğunu düşünüyorum. Bunu da deneyin olmazsa sorun alt yapınızdandır.

JavaScript:
const Discord = require('discord.js');

exports.run = async (client, message, args)=> {
let muser = message.mentions.users.first();
let userid;
if(isNaN(args[0])){
  if(!muser){
    userid = message.author.id;
  }else{
    userid = muser.id;
  }
}else{
  userid = args[0];
}
try{
let user = await client.users.fetch(userid);
let avatar = user.displayAvatarURL({dynamic: true, size: 1024})
if(avatar.endsWith(".gif?size=1024")) {

let embed = new Discord.MessageEmbed()
.setAuthor(user.tag + '', user.displayAvatarURL())
.setDescription(`**[[PNG]](${user.displayAvatarURL({ format: 'png', size: 1024 })})** | **[[JPEG]](${user.displayAvatarURL({ format: 'jpeg', size: 1024 })})** | **[[GIF]](${user.displayAvatarURL({ format: 'gif', size: 1024 })})** | **[[WEBP]](${user.displayAvatarURL({ format: 'webp', size: 1024 })})**`)
.setImage(user.displayAvatarURL({dynamic: true, size: 1024}))
.setColor("RANDOM")
message.channel.send(embed)

} else {

  let embed = new Discord.MessageEmbed()
.setAuthor(user.tag + '', user.displayAvatarURL())
.setDescription(`**[[PNG]](${user.displayAvatarURL({ format: 'png',  size: 1024 })})** | **[[JPEG]](${user.displayAvatarURL({ format: 'jpeg',  size: 1024 })})** | **~~[GIF]~~** | **[[WEBP]](${user.displayAvatarURL({ format: 'webp',  size: 1024 })})**`)
.setImage(user.displayAvatarURL({dynamic: true, size: 1024}))
.setColor("RANDOM")
message.channel.send(embed)

}
}catch{
  message.channel.send(new Discord.MessageEmbed().setColor("RANDOM").setDescription("Kullanıcıyı Bulamadım!"));
  return;
}

}

exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: ['avatarım'],
  permLevel: 0
};

exports.help = {
  name: 'avatar',
  description: '',
  usage: 'avatar [@kullanıcı]'
};
 
Katılım
30 Ara 2020
Konular
0
Mesajlar
10
Tepki puanı
1
Puanları
710
Alt yapınızdan kaynaklı olan bir sorun olduğunu düşünüyorum. Bunu da deneyin olmazsa sorun alt yapınızdandır.

JavaScript:
const Discord = require('discord.js');

exports.run = async (client, message, args)=> {
let muser = message.mentions.users.first();
let userid;
if(isNaN(args[0])){
  if(!muser){
    userid = message.author.id;
  }else{
    userid = muser.id;
  }
}else{
  userid = args[0];
}
try{
let user = await client.users.fetch(userid);
let avatar = user.displayAvatarURL({dynamic: true, size: 1024})
if(avatar.endsWith(".gif?size=1024")) {

let embed = new Discord.MessageEmbed()
.setAuthor(user.tag + '', user.displayAvatarURL())
.setDescription(`**[[PNG]](${user.displayAvatarURL({ format: 'png', size: 1024 })})** | **[[JPEG]](${user.displayAvatarURL({ format: 'jpeg', size: 1024 })})** | **[[GIF]](${user.displayAvatarURL({ format: 'gif', size: 1024 })})** | **[[WEBP]](${user.displayAvatarURL({ format: 'webp', size: 1024 })})**`)
.setImage(user.displayAvatarURL({dynamic: true, size: 1024}))
.setColor("RANDOM")
message.channel.send(embed)

} else {

  let embed = new Discord.MessageEmbed()
.setAuthor(user.tag + '', user.displayAvatarURL())
.setDescription(`**[[PNG]](${user.displayAvatarURL({ format: 'png',  size: 1024 })})** | **[[JPEG]](${user.displayAvatarURL({ format: 'jpeg',  size: 1024 })})** | **~~[GIF]~~** | **[[WEBP]](${user.displayAvatarURL({ format: 'webp',  size: 1024 })})**`)
.setImage(user.displayAvatarURL({dynamic: true, size: 1024}))
.setColor("RANDOM")
message.channel.send(embed)

}
}catch{
  message.channel.send(new Discord.MessageEmbed().setColor("RANDOM").setDescription("Kullanıcıyı Bulamadım!"));
  return;
}

}

exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: ['avatarım'],
  permLevel: 0
};

exports.help = {
  name: 'avatar',
  description: '',
  usage: 'avatar [@kullanıcı]'
};
botumdan kaynaklı bir sorunmuş çözdüm bu kod çok güzel çalışıyor fakat attığı avatarın üstünde kodlar yazıyor
 
Katılım
10 Kas 2019
Konular
225
Mesajlar
1,057
Çözümler
19
Tepki puanı
1,048
Puanları
8,710
Katılım
12 Şub 2021
Konular
0
Mesajlar
1
Tepki puanı
0
Puanları
5
benim dosyalarımda prefixim yazılı oldugu halde prefix çalışmıyor hiç bir dosya hata da vermiyor sorunu bulamadım