- arviis.
- Katılım
- 13 Ocak 2023
- Mesajlar
- 1,113
- Tepkime puanı
- 172
- Şehir
- Antalya
JavaScript:
const { SlashCommandBuilder, PermissionFlagsBits, EmbedBuilder } = require("discord.js");
const zamanKatsayilari = {
saniye: 1000,
dakika: 60 * 1000,
saat: 60 * 60 * 1000,
gün: 24 * 60 * 60 * 1000
};
module.exports = {
data: new SlashCommandBuilder()
.setName("timeout")
.setDescription("Timeout işlemleri.")
.setDefaultMemberPermissions(PermissionFlagsBits.ModerateMembers)
.addSubcommand(subcommand =>
subcommand
.setName("at")
.setDescription("Belirtilen kullanıcıya Timeout atar.")
.addUserOption(option =>
option.setName("kişi")
.setDescription("Kişi seç.")
.setRequired(true)
)
.addIntegerOption(option =>
option.setName("sayı-gir")
.setDescription("SADECE sayı gir.")
.setRequired(true)
)
.addStringOption(option =>
option.setName("zaman-birimi-seç")
.setDescription("Seç.")
.setRequired(true)
.addChoices(
{ name: "Saniye", value: "saniye" },
{ name: "Dakika", value: "dakika" },
{ name: "Saat", value: "saat" },
{ name: "Gün", value: "gün" }
)
)
.addStringOption(option =>
option.setName("sebep")
.setDescription("Sebep gir.")
.setRequired(true)
)
)
.addSubcommand(subcommand =>
subcommand
.setName("kaldır")
.setDescription("Belirtilen kişinin Timeoutunu kaldırır.")
.addUserOption(option =>
option.setName("kişi")
.setDescription("Kişi seç.")
.setRequired(true)
)
),
async execute(interaction) {
const { guild, options, member: komutuKullanan } = interaction;
const subcommand = options.getSubcommand();
const user = options.getUser("kişi");
const member = await guild.members.fetch(user.id).catch(() => null);
const ikon = user.displayAvatarURL({ dynamic: true, size: 2048 });
if (!member) {
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Belirtilen kişi bu sunucuda bulunamıyor.**",
ephemeral: true
});
}
if (member.id === komutuKullanan.id) {
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Kendine bu işlemi uygulayamazsın.**",
ephemeral: true
});
}
if (member.roles.highest.position >= komutuKullanan.roles.highest.position && komutuKullanan.id !== guild.ownerId) {
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Bu kişi seninle aynı veya daha yüksek bir role sahip.**",
ephemeral: true
});
}
if (!guild.members.me.permissions.has(PermissionFlagsBits.ModerateMembers)) {
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Bu işlem için yetkiye ihtiyacım var.**",
ephemeral: true
});
}
if (subcommand === "at") {
const sureDeger = options.getInteger("sayı-gir");
const birim = options.getString("zaman-birimi-seç");
const reason = options.getString("sebep") || "Sebep belirtilmedi.";
const sureMs = sureDeger * zamanKatsayilari[birim];
if (sureDeger <= 0 || !sureMs || isNaN(sureMs)) {
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Geçerli bir pozitif süre gir.**",
ephemeral: true
});
}
if (sureMs > 2419200000) {//28 Gün - UNUTMArviS
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Timeout süresi maksimum __28 gün__ olabilir.**",
ephemeral: true
});
}
try {
await member.timeout(sureMs, reason);
const embed = new EmbedBuilder()
.setAuthor({ name: "TIMEOUT UYGULANDI", iconURL: guild.iconURL({ dynamic: true }) })
.setColor(0x337fb2)
.setThumbnail(ikon)
.addFields(
{ name: "<:kullanici_arviis:997610103865888768> Kişi", value: `${user}`, inline: true },
{ name: "<:hashtag_arviis:1051904217478070276> Sebep", value: reason, inline: true },
{ name: "<a:saat_arviis:1367655591560085535> Süre", value: `${sureDeger} ${birim}`, inline: true }
);
await interaction.reply({ embeds: [embed] });
} catch (err) {
console.error(err);
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Botun rolü bu kullanıcıya işlem yapacak kadar yüksek olmayabilir.**",
ephemeral: true
});
}
} else if (subcommand === "kaldır") {
if (!member.communicationDisabledUntilTimestamp || member.communicationDisabledUntilTimestamp < Date.now()) {
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Bu kişinin aktif bir Timeoutu yok.**",
ephemeral: true
});
}
try {
await member.timeout(null);
const embed = new EmbedBuilder()
.setAuthor({ name: "TIMEOUT KALDIRILDI", iconURL: guild.iconURL({ dynamic: true }) })
.setColor(0x57f287)
.setThumbnail(ikon)
.setDescription(`${user} **(** ${user.username} **)** adlı kişinin Timeoutu kaldırıldı.`);
await interaction.reply({ embeds: [embed] });
} catch (err) {
console.error(err);
return interaction.reply({
content: "<a:dikkat_arviis:997074866371039322> **Botun bu kullanıcı üzerinde işlem yapacak yetkisi olmayabilir.**",
ephemeral: true
});
}
}
}
};