Skip to content

Commit

Permalink
V11.3.2
Browse files Browse the repository at this point in the history
Discord username olayı,
logger ve resolvers,
yeni handler,
hepsi interaction,
dosya yapısı,
ve bi sürü fix
  • Loading branch information
Akif9748 committed Sep 4, 2023
1 parent 5732f6c commit 5a236ca
Show file tree
Hide file tree
Showing 64 changed files with 1,214 additions and 836 deletions.
48 changes: 31 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Alair
akf-alair-v13, baz system.
akf-alair-v14, baz system.

## KURULUM TALIMATLARI:
- `util/json/config.json` & `util/json/config_beta.json` dosyalarını ayarlayın. Ana config bot linuxda çalışırken çalışacaktır, beta config ise diğer işletim sistemlerinde. Davranışı değiştirmek için `util/config.js` dosyasını konfigure edin. Kontrolcü davranışı üzerinde değişiklik yapmak için `index.js`'yi değiştirin.
- `util/index.js` kategorileri komut kategorileri ekleyip sildiğinizde işe yarar. Yardım komutu için.
- `util/index.js` kategorileri komut kategorileri ekleyip sildiğinizde işe yarar. Yardım komutu ve site için.
- Konsola `npm i` yazın.
- `node deploy` yazarak komutları deploy edebilirsiniz.
- `npm run deploy` yazarak komutları deploy edebilirsiniz.
- Sonra `npm start` (production) / `npm test` (development) yazınca çalışmalıdır.

## Kanlı canlı versiyonunu eklemek için:
Expand All @@ -31,10 +31,10 @@ prefix + komutadi + <> = zorunlu | [] = isteğe bağlı
3. **Orta (alt-üst) katman:** `events/util/` => altındaki kalan dosyalar, kelime oyunu gibi, alt-üst katman kombinasyonunu içeren dosyalar.
*Üst katmanlara göre daha sıkı yönetilen, ama en az 1 alt katman üzerinden erişilen yerler.*

4. **Üst katmanlar:** `commands/` & `interactions/` & `buttons/` => kullanıcıyla direkt iletişim halinde olan katmanlar.
*En çok hatanın meydana göz ardı edildiği yer*
4. **Üst katmanlar:** `commands/` & `interactions/` => kullanıcıyla direkt iletişim halinde olan katmanlar.
*En çok hatanın meydana gelip göz ardı edildiği yer*

5. **Destek katmanı:** `util/` => klasör içindeki tüm destek yapıları. Bunlar tüm katmanlar ile bağlantılıdır.
5. **Ara/Destek katmanı:** `util/` => klasör içindeki tüm destek yapıları. Bunlar tüm katmanlar ile bağlantılıdır.
*Tüm katmanlara destek veren, **Alair-Core**, **ASB**, modeller, fonksionlar, resimler, sabitler, config/json yapıları vs.*

## Güvenlik:
Expand All @@ -49,6 +49,8 @@ prefix + komutadi + <> = zorunlu | [] = isteğe bağlı
- **Kontrolcü** (halka açık), yüzeysel bilgiler verir. Kapanmalar, resetler, ve kritik ana sistem hataları.

## Sürüm notları (Major):
- V11.X.X Tüm komutlar interactiona çevirildi. Handlere subcommands eklendi.
- V10.X.X V14 geçişi. Müzik webpaneli & Distube ile daha iyi müzikler.
- V9.X.X Komut-interaction birleştirildi!
- V8.X.X Webpanel!
- V7.X.X MemberModel iptali!
Expand All @@ -67,30 +69,42 @@ prefix + komutadi + <> = zorunlu | [] = isteğe bağlı

### **Handlerler:**
- **Event handler:** doğrudan alt katmandaki dosyaların adlarıyla bağlanır.
- **interaction handler:** dosyadaki SlashCommandBuilder verisinden alınan bilgilerle anahtarlanıp, dosya ile keylenir.
- **command/interaction handler:**
- KEY: komutadı
- VALUE: Eğer 1. dereceden ise komutun kendisi, eğer diğer derecelerden ise 1. derecenin adı.
- **COMMAND/INTERACTION HANDLER:**
- Eğer komut dosyasında interaction da varsa, onu da interactionlara kaydeder
#### Dosya yapısı:
- **command:**
- KEY: Komutun adı
- VALUE: Eğer 1. dereceden ise komutun `(aşağıda)` kendisi, eğer diğer derecelerden ise 1. derecenin adı.

#### Komutun dosya yapısı:
```js
const dosya = {
help: {
native:true, // interaction destekliyor ise
name: ["ana isim/interaction ismi", "allias1", ...alliasesler ],
subcommand:"maincommand", // interaction ise, subcommand moduna geçirir.
names: ["ana isim/interaction ismi", "allias1", ...alliasesler ],
description: 'Yardımda renderlenecek açıklama',
usage: 'komut özel yardımdaki kullanım...',
options: {}, // INTERACTION ICIN: options vs gibi alanlar, interaction içeren komut için.
gizli: true // renderlenmeyecek ve gizli çalışan, typingsiz komutlar için
},

data: {}, // INTERACTION ICIN: helpden bağımsız ise, burası çözer
runInteraction(client, interaction) { }, // INTERACTION ICIN: eğer komutta interaction varsa, çalışması için
fonksiyon: () => { }, // INTERACTION ICIN: komutun fonksiyonu kendinden ayrı ise.
data: {}, // INTERACTION ICIN: helpden bağımsız ise, burası çözer (sadece interaction çalışan komutlar için)
async runInteraction(client, interaction, guild) { }, // INTERACTION ICIN: eğer komutta interaction varsa, çalışması için (sadece interaction çalışan komutlar için)

tur: "other", // komut türü, klasör ismiyle aynı
dosyaAdi: "dosya.js", // hangi dosya oldugu
run (client, message, args, guild) { return Message || void; },
derece: 0// derece ise kaçıncı allias olduğunu gösterir.sadece 0. allias renderlenir.
kullanim: 0, // telemetri için kullanım verisi.
async run (client, message, args, guild) { return Message || void; }
}
```

- **interaction handler:**
Hybrid çalışır.

Eğer dosyada `data` varsa `runInteraction` üzerinden `data` verisiyle çalışır.

Eğer dosyada `native: true` ibaresi varsa, `run` üzerinden `help` verisiyle çalışır.

Eğer dosyada `subcommand:` ibaresi varsa, `subcommand` modunda çalışır.
Bu modda interaction içine interaction açılmış olur.
`native: true` ibaresine göre `runInteraction` veya `run` ile çalışır. 1. katmandaki interactionda `run` yerine `subcommands` olur. Handler 2. katmandaki `subcommands`dan normal bir interaction gibi veriyi çekerek çalışır. Fakat telemetri ve ratelimitler `subcommands`a göre değil, ana komuta göre çalışır.
14 changes: 0 additions & 14 deletions buttons/rol.js

This file was deleted.

71 changes: 34 additions & 37 deletions commands/bot/botbilgi.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,52 @@ const Discord = require('discord.js');
const os = require("os");
const cpu = os.cpus();
const { parsems } = require("../../util")
const { GuildModel, Usage, SiteUsage } = require("../../util/models");
const { GuildModel, UserModel, CommandUsage, SiteUsage } = require("../../util/models");

exports.run = async (client, message, args, { prefix }) => {
const sahip = client.users.cache.get(client.ayarlar.sahip[0]);
const count = client.guilds.cache.reduce((a, b) => a + b.memberCount, 0),

const sahip = client.users.cache.get(client.ayarlar.sahip[0]),
count = client.guilds.cache.reduce((a, b) => a + b.memberCount, 0),
usedMemory = process.memoryUsage().rss / 2 ** 20,
getpercentage = "%" + (usedMemory / (os.totalmem() / 2 ** 20) * 100).toFixed(2);
const ilk10Komut =
client.commands.filter(komut => typeof komut !== "string" && komut.kullanim > 0).sort((a, b) => b.kullanim - a.kullanim).first(10).map((x, i) => `**${i + 1}.** ${x.dosyaAdi} (${x.kullanim})`).join("\n");

const sayi = (await Usage.aggregate([
{ $group: { _id: null, sayi: { $sum: "$sayi" } } },
{ $project: { _id: 0, sayi: 1 } }
]))[0]?.sayi || 0;
const [komut_toplam, interaction_toplam, site, bugun] = await Promise.all([
CommandUsage.aggregate([
{ $group: { _id: null, komut: { $sum: "$komut" } } },
{ $project: { _id: 0, komut: 1 } }
]),
CommandUsage.aggregate([
{ $group: { _id: null, interaction: { $sum: "$interaction" } } },
{ $project: { _id: 0, interaction: 1 } }
]),
SiteUsage.aggregate([
{ $group: { _id: null, count: { $sum: "$count" } } },
{ $project: { _id: 0, count: 1 } }
]),
CommandUsage.findOne({ _id: client.today })
]);

const enEski = await Usage.findOne().sort({ _id: 1 });
const embed = new Discord.MessageEmbed()
.setTitle(`» Tüm komutlara erişmek için \`${prefix}yardım\` yazın.`).setName("v" + client.version)
.addField("» Sayılar:", `**• Sunucu:** ${client.guilds.cache.size} (${GuildModel.schema.cache.size} bellek)\n**• Kullanıcı:** ${client.users.cache.size} ~${count} (${UserModel.schema.cache.size} bellek)\n**• Ses kanalı:** ${client.voice.adapters.size}`, true)
.addField("» Sürüm:", `**• Alair:** v${client.version} \n**• Node.js:** ${process.version} - ${process.release.lts || "A-LTS"}\n**• Discord.js:** v${Discord.version}`, true)

.addField("» Sistem:", `**• RAM:** ${usedMemory.toFixed(2)}MB ${getpercentage}\n**• OS:** ${os.version().split(" ", 3).join(" ")} ${os.arch()}\n**• CPU:** ${cpu[0].model} **X${cpu.length}**`, false)
.addField("» Çalıştırılma:", `**• Bot: **${parsems(client.uptime)}\n**• Sistem: **${parsems(os.uptime() * 1000)}`, true)

const site = (await SiteUsage.aggregate([
{ $group: { _id: null, count: { $sum: "$count" } } },
{ $project: { _id: 0, count: 1 } }
]))[0]?.count || 0;
.addField("» Bugün:", `**• Komut: **${bugun.komut}\n**• Interaction: **${bugun.interaction}\n`, true)
.addField("» Tüm zamanlar:", `**• Komut Sayısı: **${komut_toplam[0]?.komut || 0}\n**• Interaction Sayısı: **${interaction_toplam[0]?.interaction || 0}\n**• Site kullanımı:** ${site[0]?.count || 0}`, true)

const { interaction, komut } = client.ayarlar.kullanim;
const embed = new Discord.MessageEmbed()
.setTitle(`» Tüm komutlara erişmek için \`${prefix}yardım\` yazın.`).setName("V" + client.version)
.addField("» Sayılar:", `**• Sunucu:** ${client.guilds.cache.size} **• Bellek:** ${GuildModel.schema.fetchCache().size}\n**• Kullanıcı:** ${client.users.cache.size} (${count})\n**• Ses kanalı:** ${client.voice.adapters.size}`, true)
.addField("» Sürüm:", `**• Node.js:** ${process.version} - ${process.release.lts || "A-LTS"}\n**• Discord.js:** v${Discord.version}`, true)
.addField("» Sistem:", `**• RAM:** ${usedMemory.toFixed(2)}MB ${getpercentage}\n**• OS:** ${os.version().split(" ", 3).join(" ")} ${os.arch()}\n**• CPU:** ${cpu[0].model} **X${cpu.length}**`)
.addField("» Çalıştırılma:", `**• Bot: **${parsems(client.uptime)}\n**• Sistem: **${parsems(os.uptime() * 1000)}`, false)
.addField("» Site kullanımı:", `**• Toplam:** ${site}`, true)
.addField("» Oturumdaki kullanımlar:", `**• Komut: **${komut}\n**• Interaction: **${interaction}\n`, false)
.addField("» Oturumdaki en çok kullanılanlar:", ilk10Komut || "İlk kullanım, senden", false)
.addField("» Önceki oturumların kullanımları:", `**• Başlangıç:** <t:${Math.trunc(enEski._id.getTime() / 1000)}:R>\n**• Sayı: **${sayi}\n**• Detaylı kullanım bilgisi için \`${prefix}istatistik\` komutunu kullanın.**`, false)
.addField("» Sahip:", `[${sahip.tag}](https://discord.com/users/${sahip.id})`, true)
const m = {
embeds: [embed], components: [client.BUTONLAR]
}

if (args[0] == "asb") {
m.embeds[0].title = "» Kapanış sinyali!"
return m;
}

return message.reply(m);
.addField("» Sahip:", `**[${sahip.username}](https://discord.com/users/${sahip.id})** -> ${client.ayarlar.sahip.map(s => `<@${s}>`).join(", ")}`, false)
.addField("» Komutların adları, günlere göre komutlar",
`Bu bilgilere erişmek için \`${prefix}istatistik\` / \`${prefix}günler\` komutlarını kullanabilirsiniz.`, false)

return message.reply({ embeds: [embed], components: [client.BUTONLAR] });
};
exports.help = {
name: ['botbilgi', "bot", "istatistik", "boy"],
native: true,
subcommand: "alair",
names: ['botbilgi', "bot", "istatistik", "boy"],
description: 'Bot hakkında bilgiler verir.',
usage: 'botbilgi'
};
3 changes: 2 additions & 1 deletion commands/bot/sor.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ exports.run = async (client, message, args, { prefix }) => {

}
exports.help = {
name: 'sor',
native: true,
names: ["sor"],
description: 'Bota soru sorar.',
usage: 'sor <soru>',
};
16 changes: 11 additions & 5 deletions commands/bot/teşekkür.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,24 @@ exports.run = (client, message) => {

const embed = new Discord.MessageEmbed()
.setTitle(`Yegane destekçilerimiz :heart:`)
.setDescription(`[**${message.author.username}**](https://discord.com/users/${message.author.id}) Alair seni cok seviyor, neden acaba ?? :heart:\n`
+ list.map(x => `[**${x.name}**](https://discord.com/users/${x.id}) ${x.text}`).join("\n")+
`\n\n**thesportstacker**, korona komutu ve komutların ilk handleri.
*Daha buraya adı yazılmayı hak eden kaç kişi var sayamayız...*`
.setDescription(
`${list.find(x => x.id === message.author.id) ? "İyi ki buradasın :heart:\n"
: `[**${message.author.username}**](https://discord.com/users/${message.author.id}) Alair seni cok seviyor, neden acaba ?? :heart:\n`}
${list.map(x => `[**${x.name}**](https://discord.com/users/${x.id}) ${x.text}`).join("\n")}
**thesportstacker**, korona komutu ve komutların ilk handleri.
*Daha buraya adı yazılmayı hak eden kaç kişi var sayamayız...*`
);


return message.reply({ embeds: [embed] });
}

exports.help = {
name: ["teşekkür", "adam"],
native: true,
subcommand: "alair",
names: ["teşekkür", "adam"],
description: "❤❤Bot ve sahibinin yegane destekçileri❤❤",
usage: 'teşekkür'
};
Loading

0 comments on commit 5a236ca

Please sign in to comment.