# Moon-Moon IRC Bot

**Category:** Standalone_Bot
**Original Author:** Charles Heywood

## Description
Moon-Moon is an IRC bot written in MoonScript that uses Lua for configuration and runs with a coroutine-based asynchronous system to handle multiple tasks concurrently.

## Key Features
- Runs as an unattended bot with command triggers and user-level access.
- Manages IRC connections, joins channels, sends messages, and handles various events like JOIN, KICK, and PRIVMSG.
- Uses MoonScript for defining commands and handlers.
- Supports loading modules to extend functionality dynamically.

## File Analysis
- **compile.sh** — Compiles MoonScript files into Lua bytecode.
- **start.sh** — Starts the bot by compiling scripts and running the main script if `moon` is available, otherwise runs it with Lua.
- **LICENSE** — MIT License for the software.
- **README.md** — Documentation on project information, dependencies, and configuration details.
- **.editorconfig** — Editor configuration settings for code formatting.
- **.gitignore** — Ignored files and directories for version control.
- **.vimrc** — Vim configuration to automatically compile MoonScript files.
- **ISSUE_TEMPLATE.md** — Template for reporting issues with the software.
- **config.ld** — Configuration file for generating documentation using LDoc.
- **irc.moon** — Core IRC client class handling connections, commands, and events.
- **logger.moon** — Logging utility module for printing messages with color formatting.
- **logo** — ASCII art logo displayed at startup.
- **main.moon** — Main script that loads modules and manages bot operations.
- **irc.md** — API documentation for the IRC client class.
- **base.moon** — Base functions for handling IRC events like JOIN, PING, and ERROR.
- **cap.moon** — IRC capabilities management.
- **command.moon** — Command handling logic with async support.
- **data.moon** — Data structures and hooks for managing state during bot operations.
- **output.moon** — Output formatting and logging patterns.