Bu yazımda discord botunun gerekli olan ana dosyalarını kurmayı anlatacağım ve bot kurulum dersleri 2 bolüm olarak bitireceğiz. Öncelikle ekleyeceğimiz dosyalarda kısaca bahsetmek istiyorum.
Aşağıdaki adımları izleyin, ilk yazımı okuduğunuzu varsayarak anlatıma geçiyorum eğer ilk yazımı okumadıysanız aşağıdaki linkde bulabilirsiniz.
Discord Bot Nasıl Yapılır Detaylı Anlatım #1
- İlk olarak 1. yazımda anlatığım gibi bir proje kurmuştuk bu proje Glitch için örnek olarak verdiği standart bir projeydi tabi bu proje üzerinden de ilerleye bilirsiniz fakat temiz bir kurulum için diğer anlatımda oluşturduğumuz projenin tüm dosyaları silin gerekli dosya kodlarını bu yazımda vereceğim.
- Öncelikle botun dosya ağını düzenli tutmak gerekiyor bu yüzden dosya kodlarını adımlara göre ekleyin.
- Tüm dosya ve klasör'leri sildikden sonra ilk olarak bot.js adında bir dosya açıyoruz. Bu dosya botumuzun main yani ana dosyası olacak ve önemli işlevselliğe sahip kodları bu dosya içerisinde barındıracaksınız.
const Discord = require('discord.js'); const client = new Discord.Client(); const ayarlar = require('./ayarlar.json'); const chalk = require('chalk'); const fs = require('fs'); const moment = require('moment'); require('./util/eventLoader')(client); var prefix = ayarlar.prefix; const log = message => { console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] ${message}`); }; client.commands = new Discord.Collection(); client.aliases = new Discord.Collection(); fs.readdir('./komutlar/', (err, files) => { if (err) console.error(err); log(`${files.length} komut yüklenecek.`); files.forEach(f => { let props = require(`./komutlar/${f}`); log(`Yüklenen komut: ${props.help.name}.`); client.commands.set(props.help.name, props); props.conf.aliases.forEach(alias => { client.aliases.set(alias, props.help.name); }); }); }); client.reload = command => { return new Promise((resolve, reject) => { try { delete require.cache[require.resolve(`./komutlar/${command}`)]; let cmd = require(`./komutlar/${command}`); client.commands.delete(command); client.aliases.forEach((cmd, alias) => { if (cmd === command) client.aliases.delete(alias); }); client.commands.set(command, cmd); cmd.conf.aliases.forEach(alias => { client.aliases.set(alias, cmd.help.name); }); resolve(); } catch (e){ reject(e); } }); }; client.load = command => { return new Promise((resolve, reject) => { try { let cmd = require(`./komutlar/${command}`); client.commands.set(command, cmd); cmd.conf.aliases.forEach(alias => { client.aliases.set(alias, cmd.help.name); }); resolve(); } catch (e){ reject(e); } }); }; client.unload = command => { return new Promise((resolve, reject) => { try { delete require.cache[require.resolve(`./komutlar/${command}`)]; let cmd = require(`./komutlar/${command}`); client.commands.delete(command); client.aliases.forEach((cmd, alias) => { if (cmd === command) client.aliases.delete(alias); }); resolve(); } catch (e){ reject(e); } }); }; client.on('message', msg => { if (msg.content.toLowerCase() === 'sa') { msg.reply('**Aleyküm selam**'); } }); client.elevation = message => { if(!message.guild) { return; } let permlvl = 0; if (message.member.hasPermission("BAN_MEMBERS")) permlvl = 2; if (message.member.hasPermission("ADMINISTRATOR")) permlvl = 3; if (message.author.id === ayarlar.sahip) permlvl = 4; return permlvl; }; var regToken = /[\w\d]{24}\.[\w\d]{6}\.[\w\d-_]{27}/g; // client.on('debug', e => { // console.log(chalk.bgBlue.green(e.replace(regToken, 'that was redacted'))); // }); client.on('warn', e => { console.log(chalk.bgYellow(e.replace(regToken, 'that was redacted'))); }); client.on('error', e => { console.log(chalk.bgRed(e.replace(regToken, 'that was redacted'))); }); client.login(ayarlar.token);
- 2. olarak package.json adında bir dosya daha ekliyelim ve bir dosya bot için gerekli modüllerin kurulumunda gerekli bot modülleri ve versiyonları bu dosya içerisinde yer alır. Bu dosya kodları ile hiç oynamayın hata alırsınız
{ "name": "MareFi", "version": "0.0.1", "description": "MareFi", "main": "bot.js", "dependencies": { "cat-names": "^2.0.0", "chalk": "^2.4.1", "cleverbot-node": "^0.3.11", "colors": "^1.2.4", "cool-images": "^1.0.1", "discord.js": "^11.5.0", "dog-names": "^1.0.2", "fuzzysearch": "^1.0.3", "g-image-search": "^1.0.2", "get-urls": "^7.0.0", "hastebin-gen": "^1.3.1", "moment": "^2.22.1", "moment-duration-format": "^1.3.0", "ms": "^2.1.1", "name": "0.0.2", "nodemon": "^1.11.0", "path": "^0.12.7", "randomstring": "^1.1.5", "require-glob": "^3.2.0", "return-deep-diff": "^0.3.0", "sqlite": "^2.9.1", "yamdbf": "^2.6.2", "pokedex-api": "^1.1.2", "figlet": "^1.2.1", "weather-js": "^2.0.0" }, "devDependencies": {}, "scripts": { "start": "node bot.js" }, "repository": { "type": "", "url": "https://codemarefi.blogspot.com/" }, "author": "MareFi", "license": "MIT", "bugs": { "url": "https://codemarefi.blogspot.com/" }, "homepage": "https://codemarefi.blogspot.com/" }
- 3.olarak ayarla.json adında bir dosya açıyoruz ve aşağıdaki kodları ekliyoruz. Bu dosya bot için gerekli ayarların olduğu bir dosya içeriğini kendinize göre ayarlayınız.
{ "sahip": "discord id nizi buraya ekleyin", "ad": "MareFi", "botadi": "MareFi", "davet": "davet linki varsa buraya", "botserverlink": "discord id nizi buraya ekleyin", "owner": "discord id nizi buraya ekleyin", "prefix": "!!", "surum": "0.0.2", "token": "bot tokeni buraya ekleyin" }
- Şimdi ana dosyalar tamamladık sayılır. Sıra geldi bot için events klasörü oluşturmaya, events klasörü açtıktan sonra içerisini disconnect.js , guildCreate.js , guildMemberAdd.js , guildMemberRemove.js , guildMemberUpdate.js , message.js , ready.js , reconnecting.js dosyalarını ekleyeceğiz. "Örnek: events/disconnect.js" Aşağıda vereceğim kodları dosya isimlerine göre kodları ekleyin.
events/disconnect.js kodları module.exports = client => { console.log(`Bağlantın koptu! ${new Date()}`); }; events/guildCreate.js kodları const Discord = require('discord.js'); const client = new Discord.Client(); const ayarlar = require('../ayarlar.json'); var prefix = ayarlar.prefix; client.on('guildCreate', guild => { console.log(`${guild.name} adlı sunucuya katıldım!`) }) events/guildMemberAdd.js kodları const ayarlar = require('../ayarlar.json'); var prefix = ayarlar.prefix; module.exports = member => { let username = member.user.username; member.sendMessage('Hoş geldin **' + username + '**! Buraya arkadaşlarını davet edebilir ve onlarla oyun oynayabilir, yeni arkadaşlar edinip onlarla oyunlar oynayıp sohbet edebilirsin!'); }; events/guildMemberRemove.js kodları module.exports = member => { let guild = member.guild; guild.defaultChannel.sendMessage(`${member.user.username} aramızdan ayrıldı :frowning:`); }; events/guildMemberUpdate.js kodları const ddiff = require('return-deep-diff'); module.exports = (oMember, nMember) => { console.log(ddiff(oMember, nMember)); }; events/message.js kodları const ayarlar = require('../ayarlar.json'); module.exports = message => { let client = message.client; if (message.author.bot) return; if (!message.content.startsWith(ayarlar.prefix)) return; let command = message.content.split(' ')[0].slice(ayarlar.prefix.length); let params = message.content.split(' ').slice(1); let perms = client.elevation(message); let cmd; if (client.commands.has(command)) { cmd = client.commands.get(command); } else if (client.aliases.has(command)) { cmd = client.commands.get(client.aliases.get(command)); } if (cmd) { if (perms < cmd.conf.permLevel) return; cmd.run(client, message, params, perms); } }; events/ready.js kodları const chalk = require('chalk'); const moment = require('moment'); const Discord = require('discord.js'); const ayarlar = require('../ayarlar.json'); var prefix = ayarlar.prefix; module.exports = client => { console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] Bot Dosyalari Korunuyor`); console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] Koruma Calisiyor.`); console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] Sunucu Aktif!`); client.user.setStatus("online"); client.user.setGame(`https://codemarefi.blogspot.com/`); console.log(`Bot ve Komutlar Hazir Sunucu Baslatildi...`); console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] MareFi.`); console.log(`[${moment().format('YYYY-MM-DD HH:mm:ss')}] Sunucu Aktif!`); }; events/reconnecting.js kodları module.exports = client => { console.log(`Yeniden başlatılıyor ${new Date()}`); };Evet gerekli tüm komut dosyaları bu kadar kodları eklerken boş satır kalmamasına dikkat edin. Son olarak botu test etmek için bir komut klasörü ekleyip içerisinde komut dosyaları eklemeniz gerekir buradaki yazımı okursanız komutlar nasıl eklenir anlatımını yaptım. Artık sitede paylaşılan komutları istediğiniz gibi kullanıp geliştirebilirsiniz kendinizi.
keşke bot ekleseydinde remixleyebilseydik
YanıtlaSilHiç Anlamadım
YanıtlaSilMerhabalar burdaki herşeyi yaptım ayarlar.json da hata var diyor
YanıtlaSilKnk kod çok sürümü çok eski 12v olması lazım kodların burdski bazı kodlar 1 yıl önceki çalışan kodlar
YanıtlaSilNapim
YanıtlaSil