npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@elecusdev/opencord

v1.0.5

Published

Discord.js Components V2 wrappers in Turkish and an automatic Embed converter.

Downloads

1,163

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

  1. 🇹🇷 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, setIcerik vb.) kaldırılarak daha modern ve akıcı .renk(), .içerik() metod zinciri yapısı kurulmuştur.
  2. ⛓️ Zincirleme Kısayollar (Chain Shortcuts): Satır içi bileşen tanımlarken sürekli new yazma 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.
  3. 🛠️ Otomatik Embed Dönüştürücü CLI (@elecusdev/opencord all emmbeds): Projenizdeki eski tip new EmbedBuilder() kodlarını tek komutla bu paketin modern Türkçe Components V2 yapısına çevirir. Importları otomatik düzenler ve reply parametrelerini MessageFlags.IsComponentsV2 ile uyumlu hale getirir.
  4. ⚙️ 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çine Bölüm ekler.
  • .galeriEkle(...galeriler): Konteyner içine resim Galerisi ekler.
  • .dosyaEkle(...dosyalar): Konteyner içine eklenmiş Dosya referansı koyar.
  • Kısayol .altsatır(metin): Konteyner içine doğrudan yeni bir metin satırı ekler (arka planda Yazı sınıfı oluşturur).
  • Kısayol .ayraç(boşluk, çizgi): Konteyner içine doğrudan ayraç çizgisi ekler. boşluk parametresi '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.js AttachmentBuilder (dosya eki) olarak döndürür. (Asenkron - asgari @napi-rs/canvas gerektirir).

Ö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/opencord

Kontrol 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:

  1. Unit testleri çalıştırmak için: npm run test
  2. Kendi bot projeleriniz üzerinde denemek için paketi yerel olarak linkleyebilir.

Lisans: MIT