My App
Configuration Files

Language

Configuration reference for lang.json.

Introduction

The Language configuration file (lang.json) contains all messages, embeds, and text strings used by Athena Bot. This file allows you to customize every message the bot sends, translate the bot to other languages, or adjust wording to match your server's style.


File Structure

The language file is organized into several main sections:

{
    lang: {
        // Simple text strings
        unexpected_command_error: "...",
        no_reason_provided: "...",
    },
    embeds: {
        // Embed configurations
        help_default: { ... },
        ping: { ... },
    },
    warnings: {
        // Warning/error messages
        no_permission: "...",
    },
    interaction_names: {
        // Command and option names
    }
}

Available Placeholders

Finding Placeholders

Each embed and message configuration lists its available placeholders in a comment above it:

// Placeholder: %bot_latency%, %ws_latency%, %api_latency%, %request%
ping: {
    description: "Bot latency: %bot_latency%ms",
}

The comment shows which placeholders you can use for that specific message.


Global Placeholders

These placeholders work in all embed configurations throughout the file:

%custom_emoji_%     - Custom emojis (e.g., %custom_emoji_28%)
%user%                      - Username
%user_display%              - Display name
%user_id%                   - User ID
%user_mention%              - User mention (@user)
%user_icon%                 - User avatar URL
%user_created%              - Account creation date
%user_created_formatted%    - Formatted creation date
%user_joined%               - Server join date
%user_joined_formatted%     - Formatted join date
%guild%                     - Server name
%guild_id%                  - Server ID
%guild_icon%                - Server icon URL
%random_int_%   - Random integer (e.g., %random_int_100%)
%random_string_%    - Random string (e.g., %random_string_8%)
%current_date%              - Current date (YYYY-MM-DD)
%current_time%              - Current time (HH:mm)
%current_time_seconds%      - Current time (HH:mm:ss)
%current_datetime%          - Date and time (YYYY-MM-DD HH:mm)
%current_iso%               - ISO format date (2025-06-02T00:00:00Z)
%bot_user%                  - Bot username
%bot_user_id%               - Bot user ID
%bot_user_mention%          - Bot mention
%bot_user_icon%             - Bot avatar URL

Note: Global placeholders can be used in any message or embed. Specific placeholders (listed above each configuration) only work in their designated messages.


Configuring Embeds

Basic Embed Structure

Embeds under the embeds section support the full Discord embed JSON format. Here's how to configure an embed:

// Placeholder: %bot_latency%, %ws_latency%, %api_latency%, %request%
ping: {
    title: "🏓 Pong!",
    description: "Bot Latency: **%bot_latency%ms**\nWebSocket: **%ws_latency%ms**\nAPI: **%api_latency%ms**",
    color: "#00FF00",
    thumbnail: {
        url: "%bot_user_icon%"
    },
    footer: {
        text: "%guild% - Requested by %user%",
        iconURL: "%guild_icon%"
    },
    defaultTimestamp: true,
}

Available Embed Properties

You can use any Discord embed property in JSON format:

Basic Properties:

  • title - Embed title
  • description - Main embed text
  • color - Hex color code (e.g., "#FF0000") or decimal number
  • url - URL when clicking the title

Image & Thumbnail:

  • thumbnail: \{ url: "..." \} - Small image in top-right
  • image: \{ url: "..." \} - Large image at bottom

Author:

author: {
    name: "Author Name",
    iconURL: "https://...",
    url: "https://..."
}

Footer:

footer: {
    text: "Footer text",
    iconURL: "https://..."
}

Fields:

fields: [
    {
        name: "Field Title",
        value: "Field content",
        inline: true
    },
    {
        name: "Another Field",
        value: "More content",
        inline: false
    }
]

Special Properties:

  • defaultTimestamp: true - Adds current timestamp to embed
  • guildIcon: true - Uses server icon in footer

Example: Customizing the Help Embed

Here's an example of customizing the help command embed:

help_default: {
    title: "📚 %guild% - Command Help",
    description: "Welcome to the help menu, %user%!\n\nUse the buttons below to navigate through different command categories.\n\n**Your Highest Role:** %highest_role%",
    color: "#5865F2",
    thumbnail: {
        url: "%guild_icon%"
    },
    footer: {
        text: "Requested by %user%",
        iconURL: "%user_icon%"
    },
    defaultTimestamp: true,
}

Simple Text Strings

Not all messages use embeds. Simple text strings are configured under the lang section:

lang: {
    unexpected_command_error: "An **error** occurred while executing __command__ ``%command%``",
    no_reason_provided: "No reason provided",
    modal_placeholder: "Enter a value...",
    left_guild: "User left guild",
}

These are plain text strings (with optional Discord markdown formatting) that can include placeholders where specified.


Warning Messages

The warnings section contains error and warning messages:

warnings: {
    no_permission: "%user%, you **don't have** __permission__ to use this ``command``",
    cooldown: "%user%, please **wait** ``%time%`` before using this ``command`` again",
}

These follow the same format as simple text strings but are used for errors and warnings.


Best Practices

Customization Tips:

  • Test changes - Edit one message at a time and test before making more changes
  • Keep placeholders - Don't remove placeholders unless you're sure they're not needed
  • Maintain formatting - Keep Discord markdown (**bold**, __underline__, code) for consistency
  • Use global placeholders - Add server branding with %guild%, %guild_icon%, etc.
  • Check syntax - Invalid JSON will cause the bot to fail loading the config
  • Backup first - Save a copy of the original file before making changes

Common Mistakes:

  • Removing required placeholders (e.g., removing %user% from a user-specific message)
  • Invalid JSON syntax (missing commas, quotes, brackets)
  • Using placeholders that don't exist for that message
  • Breaking Discord's embed character limits (title: 256, description: 4096, field value: 1024)

Example: Complete Custom Embed

Here's a fully customized embed using multiple properties:

server: {
    title: "📊 Server Information",
    description: "**%guild%** Statistics",
    color: "#5865F2",
    thumbnail: {
        url: "%guild_icon%"
    },
    fields: [
        {
            name: "👥 Members",
            value: "Total: **%members%**\nOnline: **%online%**\nBots: **%bots%**",
            inline: true
        },
        {
            name: "📝 Channels",
            value: "Text: **%text_channels%**\nVoice: **%voice_channels%**\nCategories: **%categories%**",
            inline: true
        },
        {
            name: "🎭 Roles",
            value: "Total: **%roles%**",
            inline: true
        },
        {
            name: "👑 Owner",
            value: "%owner%",
            inline: true
        },
        {
            name: "📅 Created",
            value: "%created%",
            inline: true
        },
        {
            name: "🚀 Boosts",
            value: "Level **%boosts%**",
            inline: true
        }
    ],
    footer: {
        text: "Server ID: %guild_id%",
        iconURL: "%guild_icon%"
    },
    defaultTimestamp: true,
}

This creates a rich, informative embed with organized fields, custom colors, and relevant server information.

On this page