-
Notifications
You must be signed in to change notification settings - Fork 4
/
main.js
114 lines (83 loc) · 3.24 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
//Gerekli modülleri içe aktar.
const { Collection, Client, Intents } = require('discord.js');
const fs = require("fs");
//Client ayarları.
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });
//Ayarları içe aktar.
const { prefix, sahip, token } = require("./ayarlar.json");
//Komutlar listesini topla.
client.commands = new Collection();
client.aliases = new Collection();
//Komutları /komutlar dizininden oku.
fs.readdir("./komutlar/", (err, files) => {
//Okumaya başlarken komut sayısını konsola yazdır.
console.log(`${files.length} komut yüklenecek.`);
//Komut dosyası başına döngüyü bir kez çalıştır.
files.forEach(f => {
//Komut dosyasını içe aktar.
let props = require(`./komutlar/${f}`);
//Komut adını yazdır.
console.log(`Yüklenen komut: ${props.help.name}.`);
//Komudu client.commands koleksiyonuna ekle.
client.commands.set(props.help.name, props);
//Komudun alternatif kullanımlarını client.aliases koleksiyonuna ekle.
props.conf.aliases.forEach(alias => {
//Alternatifi client.aliases koleksiyonuna ekle.
client.aliases.set(alias, props.help.name);
});
});
});
//Mesaj geldiğinde çalıştır.
client.on('messageCreate', async mesaj => {
//Mesaj sahibi botsa işlem yapma.
if (mesaj.author.bot) return;
//Mesaj prefix ile başlamıyorsa işlem yapma.
if (!mesaj.content.startsWith(prefix)) return;
//...
let komut;
//Mesajdan girilen komudu ayıkla.
let command = mesaj.content.split(' ')[0].slice(prefix.length);
//Mesajdan girilen argümanı ayıkla.
let argumanlar = mesaj.content.split(' ').slice(1);
//Yetkilendirmeleri denetle.
let yetkiler = client.yetkilendirme(mesaj);
//Girilen komudun varolduğunu doğrula.
if (client.commands.has(command)) {
//Girilen komudu çağır.
komut = client.commands.get(command);
} else if (client.aliases.has(command)) {
//Girilen komut alternatifini çağır.
komut = client.commands.get(client.aliases.get(command));
}
//Komut geçerli ise çalıştır.
if (komut) {
//Komut için gerekli yetki yoksa işlem yapma.
if (yetkiler < komut.conf.permLevel) return;
//Komudu çalıştır.
komut.run(client, mesaj, argumanlar, yetkiler);
}
});
//Bot hazır olduğunda çalıştır.
client.on('ready', () => {
//...
console.log(`${client.user.username} şimdi aktif!`);
//Botun durum kısmını ayarla.
client.user.setActivity(`${prefix}yardım`);
});
//Yetkilendirme ayarları.
client.yetkilendirme = mesaj => {
//Mesaj bir sunucudan gönderilmediyse işlem yapma.
if (!mesaj.guild) return;
//Varsayılan yetkiyi ayarla.
let yetkiLevel = 0;
//Eğer banlama yetkisi var ise yetkilendir.
if (mesaj.member.permissions.has("BAN_MEMBERS")) yetkiLevel = 2;
//Eğer yönetici yetkisi var ise yetkilendir.
if (mesaj.member.permissions.has("ADMINISTRATOR")) yetkiLevel = 3;
//Eğer bot sahibi ise yetkilendir. (bkz. ayarlar.json)
if (mesaj.author.id === sahip) yetkiLevel = 4;
//Fonksiyon yetki denetimi sonucunu iletsin.
return yetkiLevel;
};
//Bot giriş yaparak aktif hale gelsin.
client.login(token);