Makecord

Discord botlarını gerçek bir IDE'de kur

Komutları görsel akışlarla birbirine bağla, botun çalıştırdığı her bloğun yandığını gör ve aynı klasörü kendi sunucuna taşı. Ücretsiz ve açık kaynak.

commands/greet
Çalışıyor
  1. Başlangıç/greet
  2. Koşul{{options.user}}
  3. Yanıt VerSelam {{user.displayName}},

19:42:07Bramble#4821, 3 sunucuda çevrimiçi

19:42:31commands/greet84 ms'de bitti

Mira kullandı /greet

BrambleAPPBugün 19:42

Selam Mira, sunucuya hoş geldin

İlk komuttan sunucundaki bota kadar

Bot yapmanın keyifsiz kısımlarını Makecord üstlenir, sen botun ne yaptığına odaklanırsın.

  1. 01

    Akışlar birer dosya

    Her komut ve event projende okunabilir bir JSON dosyası. Git ile versiyonla, incele, paylaş.

  2. 02

    Kaydettiğin anda canlı

    Bot çalışırken akışı değiştir, kaydedince devreye girer. Az önce çalışan blok editörde yanar.

  3. 03

    Token'ın projede durmaz

    Secret'lar sistem anahtar zincirinde şifrelenir ve sadece bot çalışırken ortam değişkeni olarak verilir.

  4. 04

    Sorunları çalıştırmadan gör

    Eksik intent, hiç çalışmayacak bir blok, yanlış yerde kullanılan bir eylem. Sorunlar paneli yakalar, çoğunu tek tıkla düzeltir.

Önce bilgisayarında, sonra sunucunda

Motor bağımsız bir npm paketi. Projeyi bir VPS'e kopyala, token'ı .env dosyasına yaz ve başlat. Docker ile tek satır.

Hesap yok, barındırma hizmeti yok. Discord API değiştiğinde motoru güncellemek bir npm update kadar kolay.

# sunucunda
cp .env.example .env   # DISCORD_TOKEN değerini gir
npm install
npm start

# ya da
docker compose up -d

● Bramble#4821, 3 sunucuda çevrimiçi
3 komut kaydedildi: /ping /greet /rank
import { defineNode, defineNodeMeta, definePlugin }
  from "@makecord/plugin-sdk";
import { z } from "zod";

const roll = defineNodeMeta({
  type: "dice.roll", title: "Roll Dice", category: "data",
  fields: z.object({ sides: z.number().default(6) }),
});

export default definePlugin({
  id: "makecord-plugin-dice", version: "1.0.0",
  engines: { makecord: "^0.1.0" },
  nodes: [defineNode(roll, (ctx, { sides }) =>
    ctx.vars.set("roll", 1 + Math.floor(Math.random() * sides)))],
});

Eksik bir blok mu var? Yaz

Bir plugin birkaç blok tanımı ve onları çalıştıran fonksiyonlardan ibaret. Alanlar Zod şemasıyla tanımlanır, IDE ayar formunu bunlardan kurar.

Plugin'ler sadece izin verdiğin secret'ları görür, bot token'ını asla. IDE içinde bir marketplace yolda: veritabanı ya da ekonomi sistemi eklemek tek tık olacak.