# Cinch - The IRC Bot Building Framework

**Category:** Standalone_Bot
**Original Author:** Lee Jarvis, Dominik Honnef

## Description
Cinch is a Ruby-based framework for building IRC bots that provides an easy-to-use interface and plugins for various functionalities.

## Key Features
- **Plugin System**: Allows users to create custom functionality through plugins.
- **Event Handling**: Supports events like `:join`, `:message`, and `:kick`.
- **Command Handling**: Implements commands such as `!google` and `!autovoice`.
- **Message Formatting**: Provides methods for formatting messages with colors and styles.

## File Analysis
- **LICENSE** — Grants permission to use, modify, and distribute the software.
- **README.md** — Documentation on how to set up and use Cinch.
- **CHANGELOG** — Logs of changes made in different versions.
- **Rakefile** — Defines tasks for testing and building the gem.
- **cinch.gemspec** — Metadata for packaging the gem.
- **bot_options.md** — Describes configuration options for bots.
- **common_tasks.md** — Lists common tasks like checking user online status.
- **encodings.md** — Explains how to handle different encodings in messages.
- **events.md** — Details various events and their usage.
- **logging.md** — Documentation on logging facilities.
- **migrating.md** — Guide for migrating between API versions.
- **autovoice.rb** — A bot that auto-voices visitors upon joining a channel.
- **google.rb** — Bot that performs Google searches.
- **hello.rb** — Simple greeting bot.
- **join_part.rb** — Manages joining and parting of channels based on user permissions.
- **memo.rb** — Stores and retrieves messages for users.
- **msg.rb** — Sends private messages to specified users.
- **seen.rb** — Tracks when users were last seen in a channel.
- **urban_dict.rb** — Retrieves definitions from Urban Dictionary.
- **url_shorten.rb** — Shortens URLs found in messages.
- **cinch.rb** — Core Ruby file containing the framework's classes and modules.
- **ban.rb** — Manages channel bans.
- **bot.rb** — Contains core bot functionality.
- **cached_list.rb** — Manages cached lists of objects.
- **callback.rb** — Encapsulates handlers to prevent instance variable overwrite.
- **channel.rb** — Represents a channel in the IRC network.
- **channel_list.rb** — Manages a list of channels.
- **configuration.rb** — Defines configuration options for bots.
- **constants.rb** — Contains standard and non-standard numeric replies used by IRC protocol.
- **dcc.rb** — Supports DCC commands.
- **exceptions.rb** — Collection of exceptions specific to Cinch.
- **formatting.rb** — Provides methods for adding colors and formatting to messages.
- **handler.rb** — Manages event handlers.
- **handler_list.rb** — Manages a list of handlers.
- **helpers.rb** — Contains helper methods for simplifying plugin development.