Skip to main content

How It Works

Scripts are written in JavaScript and executed by the Go client using Goja (embedded JS engine).

Features

Custom scripts can:
  • Listen to Discord events (messages, member joins, reactions, channels, roles)
  • Send and manage messages (send, edit, delete, pin)
  • Manage reactions (add, remove)
  • Create and manage channels (create, edit, delete)
  • Create and manage roles (create, edit, delete)
  • Edit guild members (nicknames, roles)
  • Moderate members (kick, ban, unban)
  • Create custom commands
  • Fetch Discord data (messages, guilds, channels, users)
  • Make HTTP requests
  • Perform file system operations via OS namespace (read, write, list directories, file info)
  • Store persistent data
  • Log information

Quick Start

ethone.on_command(
    "greet",              // name
    "Greet someone",      // description
    "greet <name>",       // usage
    function(ctx) {       // callback
        if (ctx.args.length === 0) {
            discord.send_message(ctx.channel.id, "Usage: .greet <name>");
            return;
        }
        var name = ctx.args.join(" ");
        var message = "Hello, " + name + "!";
        discord.send_message(ctx.channel.id, message);
    }
);

discord.on_message = function(ctx) {
    var content = ctx.content;
    var author = ctx.author.username;
    var logMessage = "Received: " + content + " from " + author;
    ethone.log(logMessage);
};

Recommendations

Don’t use blocking code at the top level:
// Bad - Will timeout
while (true) {
    ethone.log("This will freeze!");
}

// Bad - Will timeout
ethone.sleep(5000); // at top level

// Good - Inside event handler
discord.on_message = function(ctx) {
    ethone.sleep(1000); // Ok here!
    discord.send_message(ctx.channel.id, "Delayed response");
};

API Reference

  • Ethone Namespace - Core utilities (logging, sleep, events, storage)
  • OS Namespace - File system operations (read, write, directories, file info)
  • Discord Namespace - Discord API (messages, channels, roles, members)
  • Event Hooks - Discord events (messages, members, channels, roles)
  • Commands - Command system with auto-parsing

Examples

See Examples for code samples.