@elecusdev/opencord
v1.0.5
Published
Discord.js Components V2 wrappers in Turkish and an automatic Embed converter.
Downloads
1,163
Maintainers
Readme
opencord
Discord.js Components V2 (Yeni Nesil Bileşenler) yapısını basitleştiren, tamamen Türkçe sarmalayıcı (wrapper) sınıflar, "new" anahtar kelimesini ve uzun zincirleri yok eden kolaylaştırıcı metotlar ve eski Embed kodlarını tek tuşla bu sisteme dönüştüren bir CLI dönüştürücü içeren geliştirici dostu bir npm paketidir.
Created by elecusdev - If you find this helpful, please leave a ⭐ on the repo!
🚀 Öne Çıkan Özellikler
- 🇹🇷 Tamamen Türkçe ve Prefix-Free API: Tüm Components V2 builder yapıları Türkçe isimlerle eşleştirilmiştir.
setön ekleri (setRenk,setIcerikvb.) kaldırılarak daha modern ve akıcı.renk(),.içerik()metod zinciri yapısı kurulmuştur. - ⛓️ Zincirleme Kısayollar (Chain Shortcuts): Satır içi bileşen tanımlarken sürekli
newyazma zorunluluğu kaldırılmıştır..altsatır("Metin")ve.ayraç("kucuk", true)gibi metotlarla doğrudan Konteyner ve Bölümler içinden yeni bileşenler ekleyebilirsiniz. - 🛠️ Otomatik Embed Dönüştürücü CLI (
@elecusdev/opencord all emmbeds): Projenizdeki eski tipnew EmbedBuilder()kodlarını tek komutla bu paketin modern Türkçe Components V2 yapısına çevirir. Importları otomatik düzenler ve reply parametreleriniMessageFlags.IsComponentsV2ile uyumlu hale getirir. - ⚙️ Bildirimsel JSON/Object Tasarım Sürümü (
tasarla): Hiç kod yazmadan, JSON formatında bir nesne ile tüm karmaşık mesaj tasarımlarını hızlıca hazırlayabilirsiniz.
📦 Kurulum
Paketi projenize eklemek için:
npm install @elecusdev/opencord[!NOTE] Projenizde discord.js v14.16.0 veya üzeri bir sürümın kurulu olduğundan emin olun.
📖 Kullanım ve Sınıflar Kılavuzu
Paketten yeni nesnesini import ederek tüm sınıfları new anahtar kelimesi kullanmadan pratik bir şekilde oluşturabilirsiniz:
const { yeni } = require('@elecusdev/opencord');1. Türkçe Sınıf Karşılıkları
| Discord.js Builder Sınıfı | Türkçe Karşılığı (yeni.) | Açıklama |
| --- | --- | --- |
| ContainerBuilder | Konteyner() | Tüm bileşenleri içine alan ana kapsayıcı. |
| SectionBuilder | Bölüm() (veya Bolum()) | Metinleri, butonları veya küçük resimleri gruplayan blok. |
| TextDisplayBuilder | Yazı() (veya Altsatır()) | Markdown destekli statik metin satırı. |
| SeparatorBuilder | Ayraç() (veya Ayrac()) | Bileşenler arasındaki boşluk veya çizgi bölücü. |
| ThumbnailBuilder | KüçükResim() (veya KucukResim()) | Bölüm kenarında duran görsel nesnesi. |
| ButtonBuilder | Buton() | Etkileşimli buton veya link düğmesi. |
| ChannelSelectMenuBuilder | KanalSecim() | Sunucu kanallarını seçtiren dropdown menü. |
| MediaGalleryBuilder | Galeri() | Birden fazla resim barındıran görsel kaydırıcı. |
| FileBuilder | Dosya() | Mesaja eklenen veya referans verilen dosya. |
🛠️ Metot Kılavuzu (Prefix-Free)
Sınıfların tüm metotları set ön eki olmadan Türkçe olarak yazılmıştır:
yeni.Konteyner() Metotları
.renk(hexRengi veya int): Konteynerın solundaki vurgu rengini belirler. (Örn:.renk("#5865F2")veya.renk(0x5865F2)).bölümEkle(...bölümler): Konteyner içineBölümekler..galeriEkle(...galeriler): Konteyner içine resimGalerisi ekler..dosyaEkle(...dosyalar): Konteyner içine eklenmişDosyareferansı koyar.- Kısayol
.altsatır(metin): Konteyner içine doğrudan yeni bir metin satırı ekler (arka plandaYazısınıfı oluşturur). - Kısayol
.ayraç(boşluk, çizgi): Konteyner içine doğrudan ayraç çizgisi ekler.boşlukparametresi'kucuk','orta','buyuk'değerlerini alabilir. (Örn:.ayraç('kucuk', true))
yeni.Bölüm() Metotları
.metinEkle(...metinler): Bölüm içerisine metin satırları ekler..küçükResimEkle(kucukResimNesnesi veya url): Bölümün kenarına küçük görsel ekler..butonEkle(butonNesnesi): Bölümün altına aksiyon butonu ekler.- Kısayol
.altsatır(metin): Bölüm içerisine doğrudan metin satırı ekler. - Kısayol
.küçükResim(url): Bölüm kenarına doğrudan link üzerinden küçük resim yerleştirir. - Kısayol
.buton(etiket, tarz, urlVeyaOzelId): Bölüme doğrudan buton ekler. Tarz olarak'mavi','gri','yesil','kirmizi','link'değerlerini kullanabilirsiniz.
Diğer Sınıf Metotları
yeni.Altsatır().içerik(metin): Metin içeriğini belirler.yeni.Ayraç().bölücü(true/false).boşluk('kucuk'/'orta'/'buyuk'): Ayraç ayarlarını yapar.yeni.KüçükResim().medya(url): Resim linkini belirler.yeni.Buton().etiket(metin).link(url).tarz(tarz).özelId(id).pasif(true/false): Buton özelliklerini ayarlar.yeni.Galeri().öğeEkle(url): Galeriye görsel ekler.
🖼️ yeni.GörselKart() Metotları (Canvas Görsel Kart Oluşturucu)
Paket içindeki dahili Canvas desteği sayesinde hoş geldin, veda veya profil kartları gibi görselleri dinamik olarak çizdirebilir ve Components V2 içinden doğrudan paylaşabilirsiniz:
.boyut(genişlik, yükseklik): Kart boyutunu belirler (Varsayılan:800x350)..arkaPlan(renk, gradyan veya görselUrl): Arka planı düz renk, linear-gradient veya bir görsel yapar..avatar(görselUrl): Kullanıcının profil resmini dairesel ve kenarlıklı şekilde yerleştirir..baslik(metin): Kartın başlık yazısı..aciklama(metin): Kartın açıklama yazısı..altMetin(metin): Kartın en altında yer alan küçük metin..yazıRengi(renk)/.vurguRengi(renk): Metin renklerini ayarlar..çiz(dosyaAdı): Resmi çizer ve Discord.jsAttachmentBuilder(dosya eki) olarak döndürür. (Asenkron - asgari@napi-rs/canvasgerektirir).
Örnek Görsel Kart Oluşturma:
const kart = await yeni.GörselKart()
.arkaPlan('https://example.com/arka-plan.png')
.avatar(interaction.user.displayAvatarURL({ extension: 'png' }))
.baslik('SUNUCUYA HOŞ GELDİN!')
.aciklama(`${interaction.user.username} aramıza katıldı.`)
.altMetin(`Seninle birlikte ${interaction.guild.memberCount} kişiyiz!`)
.vurguRengi('#5865F2')
.çiz('hosgeldin.png'); // Discord Attachment nesnesi döner
// Bu kartı mesaja eklemek için:
await interaction.reply({
files: [kart]
});💻 Örnek Uygulamalar
1. El ile Yazım (OOP Stil)
const { Client, GatewayIntentBits } = require('discord.js');
const { yeni, MessageFlags } = require('@elecusdev/opencord');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.on('interactionCreate', async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === 'yardim') {
// Türkçe zincirleme metotlarla hızlıca mesaj oluşturun
const mesaj = yeni.Konteyner()
.renk('#5865F2')
.bölümEkle(
yeni.Bölüm()
.altsatır('🤖 **Bot Yardım Menüsü**')
.altsatır('Aşağıdaki menüden komut listesine ulaşabilirsiniz.')
.küçükResim('https://example.com/bot-logo.png')
)
.ayraç('kucuk', true)
.altsatır('Detaylı yardım almak için aşağıdaki düğmeyi kullanın:')
.bölümEkle(
yeni.Bölüm()
.buton('Dokümantasyon', 'link', 'https://discord.gg')
);
await interaction.reply({
flags: MessageFlags.IsComponentsV2,
components: [mesaj]
});
}
});2. Bildirimsel Tasarım (tasarla)
Komplike kodlarla uğraşmak istemiyorsanız, sadece bir ayar objesi göndererek tasarım yapabilirsiniz:
const { tasarla } = require('@elecusdev/opencord');
const tasarim = tasarla({
kutu: {
renk: '#FF0000',
metinler: ['Yardım Paneli', 'Hoş geldiniz!'],
bolumler: [
{
metinler: ['Bölüm Başlığı', 'İçerik buraya yazılır.'],
thumbnail: 'https://example.com/logo.png',
buton: { etiket: 'Destek Al', tarz: 'mavi', ozelId: 'btn_destek' }
}
],
ayraclar: [
{ cizgi: true, bosluk: 'kucuk' }
]
}
});
// interaction.reply içinde kullanımı
await interaction.reply({
flags: tasarim.flags,
components: tasarim.components
});⚡ CLI Kullanımı ve Etkileşimli Yönetim Paneli
Kütüphane, projenizdeki eski tip new EmbedBuilder() kodlarını tek tuşla yeni Components V2 kodlarına dönüştürmek ve özellikleri görüntülemek için etkileşimli bir terminal arayüzü (CLI) içerir.
1. Etkileşimli Ana Menüyü Açmak (Önerilen)
Terminalinizde herhangi bir argüman vermeden doğrudan komutu çalıştırarak Türkçe kontrol panelini açabilirsiniz:
npx @elecusdev/opencordKontrol Panelindeki Seçenekler:
[1] 🔄 Tüm Embedleri Components V2'ye Dönüştür: Projenizdeki tüm dosyaları tarar ve otomatik dönüştürme işlemini başlatır.[2] 📦 Türkçe Wrapper Modülleri ve Metotları Görüntüle: Türkçe sınıf ve metod rehberini terminalde listeler.[3] 📄 Örnek Menü / Taslak Kodu Göster: Kopyalayıp kullanabileceğiniz örnek bir Components V2 şablon kodu gösterir.[4] ❌ Çıkış
2. Doğrudan Dönüştürme Komutu
Eğer menüyle uğraşmadan doğrudan tüm projedeki embedleri dönüştürmek isterseniz:
npx @elecusdev/opencord all emmbeds(Yerel test aşamasında node src/cli.js veya node src/cli.js all emmbeds komutuyla da çalıştırılabilir).
Neler Değişir? (Öncesi / Sonrası)
🛑 Öncesi (Klasik Embed):
const { Client, EmbedBuilder, GatewayIntentBits } = require('discord.js');
const embed = new EmbedBuilder()
.setTitle("Giriş Yapıldı")
.setDescription("Başarıyla sisteme giriş yaptınız. Hoş geldiniz!")
.setColor(0x5865F2)
.setThumbnail("https://example.com/avatar.png")
.setImage("https://example.com/banner.png")
.addFields(
{ name: "Kullanıcı", value: interaction.user.username }
)
.setFooter({ text: "Opendata v1.0.0" });
await interaction.reply({ embeds: [embed] });🎉 Sonrası (Otomatik Çıktı):
const { Client, GatewayIntentBits } = require('discord.js');
const { yeni, MessageFlags } = require('@elecusdev/opencord');
const embed = yeni.Konteyner()
.renk(0x5865F2)
.bölümEkle(
yeni.Bölüm()
.altsatır(`📄 **${"Giriş Yapıldı"}**`)
.altsatır("Başarıyla sisteme giriş yaptınız. Hoş geldiniz!")
.küçükResimEkle(
yeni.KüçükResim({ media: { url: "https://example.com/avatar.png" } })
)
)
.galeriEkle(
yeni.Galeri().öğeEkle("https://example.com/banner.png")
)
.bölümEkle(
...[{ name: "Kullanıcı", value: interaction.user.username }].flat().map(f =>
yeni.Bölüm()
.altsatır(`**${f.name}**`)
.altsatır(f.value)
)
)
.ayraç('kucuk', true)
.altsatır("Opendata v1.0.0");
await interaction.reply({ flags: MessageFlags.IsComponentsV2, components: [embed] });🛠️ Geliştirici & Katkıda Bulunma
Eğer kütüphaneyi yerel olarak test edip katkıda bulunmak isterseniz:
- Unit testleri çalıştırmak için:
npm run test - Kendi bot projeleriniz üzerinde denemek için paketi yerel olarak linkleyebilir.
Lisans: MIT
