const { EmbedBuilder, ButtonBuilder, ButtonStyle, ActionRowBuilder, StringSelectMenuBuilder, PermissionsBitField } = require(“discord.js”);
const db = require(“croxydb”);
const config = require(“../config.json”);
const loadEmojis = async (client, guildId) => {
const emojiNames = [‘arrow’, ‘hareketli_arrow’, ‘robux_png’, ‘robux2_png’, ‘bildirim’, ‘nokta’, ‘giveaway’, ‘wumpus’, ‘nitrobasic’, ‘nitroboost’];
const emojis = {};
for (const name of emojiNames) {
const emojiId = db.get(`emoji_${name}_${guildId}`);
if (emojiId) {
const emoji = client.emojis.cache.get(emojiId);
if (emoji) {
emojis[name] = {
name: emoji.name,
id: emoji.id,
animated: emoji.animated
};
}
}
}
return emojis;
};
const clickTracker = {};
module.exports = {
name: “ödül-al-mesaj”,
description: ‘Ödül alma mesajını gönderir.’,
type: 1,
run: async (client, interaction) => {
if (!interaction.member.permissions.has(PermissionsBitField.Flags.ManageGuild)) {
return interaction.reply({ content: “Bu komutu kullanmak için gerekli yetkiye sahip deÄŸilsiniz.”, ephemeral: true });
}
const guildId = interaction.guild.id;
const channelId = interaction.channel.id;
const emojis = await loadEmojis(client, guildId);
const embed = new EmbedBuilder()
.setColor(“Red”)
.setTitle(“<a:snowflake:1332754919861518447> Limited Time Event <a:snowflake:1332754919861518447>”)
.setDescription(“<:emoji_21:1333869180251803761> This Holiday season, we’ve teamed up with **Discord** to give away FREE Nitro Rewards up until <t:1740769800:D>. Don’t miss out on this exclusive chance to win festive prizes!”)
.setTitle(“<a:ledGift:1332118208492343409> **__NITRO REWARDS__** <a:ledGift:1332118208492343409>”)
.setDescription(“> <:emoji_23:1333870326500691978> <@&1333812750069010502> `=` **Nitro Basic Monthly Gift** <:emoji_28:1333871348476284948>
> <:emoji_25:1333870350022213704> <@&1333812841584791663> `=` **Nitro Boost Monthly Gift** <:emoji_26:1333871309196628040>
> <a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027><a:xbar2:1333872892890579027>
> <:mor:1333084811585392690> <@&1333813046111371336> `=` **Nitro Temel Yıllık Hediye** <:emoji_29:1333872251933687858>
> <:emoji_22:1333870303897714791> <@&1333813136570187877> `=` **Nitro Boost Yıllık Hediyesi** <:emoji_26:1333871247120928788>”)
.setThumbnail(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261817539118366791/8189-wumpus-ooo.png?ex=669456a8&is=66930528&hm=9ca8e1153cccde10eeb8fbff45cbd676c4e06316ca91bca0636ba8c9f6f28889&’)
sabit düğme = yeni ButtonBuilder()
.setCustomId(‘odulAl’)
.setLabel(‘Ödül Al’) // Buton metni
.setStyle(ButtonStyle.Success) // Düğme stili
.setEmoji(‘1261820179713888338’); // Emoji ekleme
sabit satır = yeni ActionRowBuilder().addComponents(düğme);
const varolanMesajKimliği = db.get(`gömülüMesajKimliği_${kanalKimliği}`);
eÄŸer (mevcutMesajKimliÄŸi) {
denemek {
sabit ileti = await etkileşim.kanal.iletiler.getir(mevcutİletiKimliği);
mesajı bekleyin.düzenle({ gömler: [göm], bileşenler: [satır] });
etkileÅŸimi bekleyin.cevap({ içerik: “Gömülü güncellendi!”, geçici: true });
} (hata) yakala {
console.error(“Mesaj güncellenirken bir hata oluÅŸtu:”, error);
bekleme etkileÅŸimi.reply({ content: “Önceki mesaj güncellenemedi, yeni mesaj gönderiliyor.”, efemeral: true });
const gönderilenMesaj = await etkileşim.kanal.gönder({ gömler: [göm], bileşenler: [satır] });
db.set(`embedMessageId_${channelId}`, gönderilenMessage.id);
etkileÅŸimi bekliyor.reply({ content: “Mesaj gönderildi!”, geçici: true });
}
} baÅŸka {
const gönderilenMesaj = await etkileşim.kanal.gönder({ gömler: [göm], bileşenler: [satır] });
db.set(`embedMessageId_${channelId}`, gönderilenMessage.id);
etkileÅŸimi bekliyor.reply({ content: “Mesaj gönderildi!”, geçici: true });
}
istemci.on(‘etkileÅŸimOluÅŸtur’, async i => {
eÄŸer (i.customId === ‘odulAl’ && i.isButton()) {
sabit kullanıcıKimliği = i.kullanıcı.kimliği;
// Tıklama sınırları kontrol etme
eğer (!clickTracker[kullanıcıKimliği]) {
clickTracker[kullanıcıKimliği] = [];
}
const ÅŸimdi = Date.now();
clickTracker[kullanıcıId].push(şimdi);
// Son 20 kişiden kaç tıklama yapıldığını kontrol et
clickTracker[userId] = clickTracker[userId].filter(timestamp => ÅŸimdi – timestamp < 20000);
eğer (clickTracker[kullanıcıKimliği].length > 4) {
return i.reply({ content: “Bu kadar hızlı tıklamanız gerekir!”, ephemeral: true });
}
const loncaKimliÄŸi = i.guild.id;
const davetSayısı = db.get(`davetSayısı_${kullanıcıKimliği}_${guildKimliği}`) || 0;
sabit selectMenu = yeni StringSelectMenuBuilder()
.setCustomId(‘odulSec’)
.setPlaceholder(‘Hediye seçiniz!’)
.ekleSeçenekler([
{
etiket: `Nitro Basic`,
deÄŸer: ‘ntrbsc’,
açıklama: `3 Davet Karşılığında Nitro Basic`,
emoji: emojiler.nitrobasic ? { id: emojiler.nitrobasic.id } : tanımsız
},
{
etiket: `Nitro Boost`,
deÄŸer: ‘ntrbost’,
açıklama: `6 Davet Karşılığında Nitro Boost`,
emoji: emojis.nitroboost ? { id: emojis.nitroboost.id } : tanımsız
},
{
etiket: `10.000 Robux`,
deÄŸer: ‘10000rb’,
açıklama: `6 Davet Karşılığında 10.000 Robux`,
emoji: emojis.robux_png ? { id: emojis.robux_png.id } : tanımsız
},
{
etiket: `4.550 Robux`,
deÄŸer: ‘4550rb’,
açıklama: `3 Davet Karşılığında 4,550 Robux`,
emoji: emojis.robux_png ? { id: emojis.robux_png.id } : tanımsız
},
]);
sabit satır = yeni ActionRowBuilder().addComponents(selectMenu);
await i.reply({ content: ‘Hediyenizi Seçiniz!’, components: [row], ephemeral: true });
const selectFilter = i => i.customId === ‘odulSec’ && i.user.id === kullanıcıId;
const selectCollector = i.channel.createMessageComponentCollector({ filtre: selectFilter, zaman: 60000 });
selectCollector.on(‘topla’, async i => {
sabit seçiliDeğer = i.değerler[0];
const selectedLabel = selectedValue === ‘4550rb’ ? `4.550 Robux` :
seçiliDeÄŸer === ‘10000rb’ ? `10.000 Robux` :
seçiliDeÄŸer === ‘ntrbsc’ ? `Nitro Basic` :
seçiliDeÄŸer === ‘ntrbost’ ? `Nitro Boost` :
”;
eÄŸer ((seçiliDeÄŸer === ‘4550rb’ && davetSayısı < 3) || (seçiliDeÄŸer === ‘10000rb’ && davetSayısı < 6) || (seçiliDeÄŸer === ‘ntrbsc’ && davetSayısı < 3) || (seçiliDeÄŸer === ‘ntrbost’ && davetSayısı < 6)) {
return i.reply({ content: `${emojis.arrow ? `<:${emojis.arrow.name}:${emojis.arrow.id}>` : ”} Yeterli davetiniz yok. Åžu anda siz ** ${inviteCount}** davetiniz var.`, efemeral: true });
}
dmEmbed, kanalEmbed’e izin verin;
eÄŸer (seçilenDeÄŸer === ‘4550rb’) {
dmEmbed = yeni EmbedBuilder()
.setColor(“E1D094”)
.setDescription(`:tada: **Tebrikler 4.550 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} kazandınız!**\n\ Ödülünüze ulaÅŸmak için lütfen aÅŸağıdaki mesaja tıklayın ve ardından yetkilendirme butonuna basın!\n\n[4,550 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} için tıklayın.](https://discord.com)`);
kanalEmbed = yeni EmbedBuilder()
.setColor(“E1D094”)
.setTitle(`__4,550 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} Teslim Edildi__`)
.setDescription(`Bir üye, arkadaÅŸlarını davet ederek 4,550 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} kazandı. Siz de davet ederek $ {emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} yakala! 🎉\n\n_Ödülün tadını çıkarın! `<:${emojis.wumpus ? .name}:${emojis.wumpus.id}>` : ”}`)
.setThumbnail(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261805841393127497/1256702809471189134.webp?ex=66944bc3&is=6692fa43&hm=cd2eead4057d6553c5017e39cafc802643e83353f732fcee403b432dbfc0aae4&’);
} else if (seçiliDeÄŸer === ‘10000rb’) {
dmEmbed = yeni EmbedBuilder()
.setColor(“E1D094”)
.setDescription(`:tada: **Tebrikler 10.000 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} kazandınız!**\n\ Ödülünüze ulaÅŸmak için lütfen aÅŸağıdaki mesaja tıklayın ve ardından yetkilendirme butonuna basın!\n\n[10,000 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} için tıklayın.](https://discord.com)`);
kanalEmbed = yeni EmbedBuilder()
.setColor(“E1D094”)
.setTitle(`__10.000 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} Teslim Edildi__`)
.setDescription(`Bir üye, arkadaÅŸlarını davet ederek 10,000 ${emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} kazandı. Siz de davet ederek $ {emojis.robux_png ? `<:${emojis.robux_png.name}:${emojis.robux_png.id}>` : ”} yakala! 🎉\n\n_Ödülün tadını çıkarın! `<:${emojis.wumpus ? .name}:${emojis.wumpus.id}>` : ”}`)
.setThumbnail(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261805841393127497/1256702809471189134.webp?ex=66944bc3&is=6692fa43&hm=cd2eead4057d6553c5017e39cafc802643e83353f732fcee403b432dbfc0aae4&’);
} else if (seçiliDeÄŸer === ‘ntrbsc’) {
dmEmbed = yeni EmbedBuilder()
.setColor(“2A71D9”)
.setDescription(`:tada: **Tebrikler Nitro Basic ${emojis.nitrobasic ? `<:${emojis.nitrobasic.name}:${emojis.nitrobasic.id}>` : ”} kazandınız!**\n \nÖdülünüze ulaÅŸmak için lütfen aÅŸağıdaki mesaja tıklayın ve ardından yetkilendir butonuna basın!\n\n[Nitro Basic ${emojis.nitrobasic ? `<:${emojis.nitrobasic.name}:${emojis.nitrobasic.id}>` : ”} için tıklayın.](https://discord.com)`);
kanalEmbed = yeni EmbedBuilder()
.setColor(“2A71D9”)
.setTitle(`__Nitro Basic ${emojis.nitrobasic ? `<:${emojis.nitrobasic.name}:${emojis.nitrobasic.id}>` : ”} Teslim Edildi__`)
.setDescription(`Bir üye, arkadaÅŸlarını davet ederek Nitro Basic ${emojis.nitrobasic ? `<:${emojis.nitrobasic.name}:${emojis.nitrobasic.id}>` : ”} kazandı. Siz de davet ederek ${emojis.nitrobasic ? `<:${emojis.nitrobasic.name}:${emojis.nitrobasic.id}>` : ”} alın! 🎉\n\n_Ödülün tadını çıkarın! `<:${emojis.wumpus ? .name}:${emojis.wumpus.id}>` : ”}`)
.setThumbnail(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261805660262105198/1257188136132280452.webp?ex=66944b98&is=6692fa18&hm=e770f1722076049ac83f44cbdde919a3a47d57afcd87c58082e0feb9e8dc1cc8&’)
.setImage(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261811873435619409/image.png?ex=66945161&is=6692ffe1&hm=e6a2e1e22f8e01d138cdcef7abd88afc97e95a99529bba08a38be185ae34689f&’);
} else if (seçiliDeÄŸer === ‘ntrbost’) {
dmEmbed = yeni EmbedBuilder()
.setColor(“B74EAC”)
.setDescription(`:tada: **Tebrikler Nitro Boost ${emojis.nitroboost ? `<:${emojis.nitroboost.name}:${emojis.nitroboost.id}>` : ”} kazandınız!**\n \nÖdülünüze ulaÅŸmak için lütfen aÅŸağıdaki mesaja tıklayın ve ardından yetkilendir butonuna basın!\n\n[Nitro Boost ${emojis.nitroboost ? `<:${emojis.nitroboost.name}:${emojis.nitroboost.id}>` : ”} için tıklayın.](https://discord.com)`);
kanalEmbed = yeni EmbedBuilder()
.setColor(“B74EAC”)
.setTitle(`__Nitro Boost ${emojis.nitroboost ? `<:${emojis.nitroboost.name}:${emojis.nitroboost.id}>` : ”} Teslim Edildi__`)
.setDescription(`Bir üye, arkadaÅŸlarını davet ederek Nitro Boost ${emojis.nitroboost ? `<:${emojis.nitroboost.name}:${emojis.nitroboost.id}>` : ”} kazandı. Siz de davet ederek ${emojis.nitroboost ? `<:${emojis.nitroboost.name}:${emojis.nitroboost.id}>` : ”} alın! 🎉\n\n_Ödülün tadını çıkarın! `<:${emojis.wumpus ? .name}:${emojis.wumpus.id}>` : ”}`)
.setThumbnail(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261805692189413468/1257188160694124564.webp?ex=66944ba0&is=6692fa20&hm=f8c8c9591479b9089f7d7b1a7e1c0010b2f167faedd57881b421efe12552e51a&’)
.setImage(‘https://cdn.discordapp.com/attachments/1258855139922546691/1261811504341192806/image.png?ex=66945109&is=6692ff89&hm=a25741a526267794aec62b52114551da2071d5393604b32809956ca879c93af5&’);
}
const kanalId = config.channels.kanallarımız;
eÄŸer (!kanalId) {
console.error(“kanalId’inizi belirtin. Lütfen config.json dosyanızı kontrol edin.”);
return i.reply({ content: “Ödül mesajının gönderileceÄŸi kanala kaydedilmedi. Lütfen gizlie kalmayın.”, ephemeral: true });
}
denemek {
i.user.send’i bekleyin({ gömülür: [dmEmbed] });
wait i.reply({ content: `${emojis.arrow ? `<:${emojis.arrow.name}:${emojis.arrow.id}>` : ”} Seçiminiz için teÅŸekkürler! **SeçtiÄŸiniz ödül: __${selectedLabel}__**`, bileÅŸenler: [], geçici: true });
sabit kanal = await istemci.kanallar.fetch(kanalId);
wait kanal.send({ embeds: [kanalEmbed] });
} (hata) yakala {
console.error(‘DM gönderilirken bir hata oluÅŸtu:’, error);
wait i.reply({ content: ‘DM gönderilirken bir hata oluÅŸtu. Lütfen DM\’lerinizi kontrol edin.’, bileÅŸenler: [], ephemeral: true });
}
});
}
});
}
};