Discord js kullanılarak yazılmış bir süreli kanal oluşturma komutu. Böylece sunucu üyeleriniz için süreli metin kanalları oluşturabilirsiniz.
Kurulum için aşağıdaki adımları izleyin;
- Bu kod projenizdeki komutlar ya da commands adındaki klasöre atılmalıdır. Eğer eklemeyi bilmiyorsanız buraya tıklayın.
- Komut içerisindeki gerekli yerleri kendinize göre düzenleyebilirsiniz.
- Gerekli modüller; Discord.js
// Komutlar klasörüne atılmalıdır.
// Bu komut Staup tarafından hazırlanmıştır.
const { MessageActionRow, MessageButton } = require('discord.js');
module.exports = {
name: 'sürelikanal',
aliases: [''],
usage: "sürelikanal <süre (örnek; 5dk)> <kanal adı>",
description: 'Belirtilen süre boyunca bir metin kanalı oluşturur ve süre dolduktan sonra siler.',
execute(client, message, args) {
// Kullanıcının komutu doğru kullandığını kontrol et
if (args.length < 2) {
return message.reply('Lütfen geçerli bir süre (örnek: 5m) ve kanal adı belirtin.');
}
const timeString = args[0];
const channelName = args.slice(1).join('-'); // Boşlukları "-" ile değiştir
// Süre dönüşümünü yap (örneğin, 5m -> 5 dakika)
const regex = /^(\d+)\s*([smhdw])?$/; // s: saniye, m: dakika, h: saat, d: gün, w: hafta
const matches = timeString.match(regex);
if (!matches) {
return message.reply('Geçersiz süre formatı. Örnek: 5m');
}
const amount = parseInt(matches[1]);
const unit = matches[2];
if (isNaN(amount) || amount <= 0 || amount > 180) {
return message.reply('Süre, 5 dakikadan fazla ve 3 saatten az olmalıdır.');
}
const unitMap = {
's': 1000, // saniye
'm': 60000, // dakika
'h': 3600000, // saat
'd': 86400000, // gün
'w': 604800000, // hafta
};
const duration = amount * unitMap[unit];
const channelOptions = {
type: 'GUILD_TEXT',
parent: message.channel.parentId, // Aynı kategoriye yerleştir
permissionOverwrites: [
{
id: message.guild.id,
deny: ['VIEW_CHANNEL'],
},
],
};
// Kanalı oluştur ve süre sonunda sil
message.guild.channels.create(channelName, channelOptions)
.then((createdChannel) => {
message.reply(`**${channelName}** adında bir metin kanalı oluşturuldu ve ${timeString} süresi sonunda silinecektir.`);
setTimeout(() => {
createdChannel.delete()
.then(() => {
message.channel.send(`**${channelName}** adındaki metin kanalı süresi dolduğu için silindi.`);
})
.catch(console.error);
}, duration);
})
.catch(console.error);
},
};