# Cinch IRC Bot Framework

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

## Description
Cinch is an IRC bot building framework for Ruby that allows users to create custom IRC bots with minimal effort by providing a simple interface based on plugins and rules.

## Key Features
- **Plugin System**: Users can define plugins using the `include Cinch::Plugin` directive.
- **Event Handling**: Bots can react to various IRC events such as messages, joins, parts, kicks, etc., via `match` methods.
- **Command Handling**: Plugins can handle commands with patterns defined in `match` methods.
- **Logging**: Provides a logging system for plugins using the `#debug`, `#info`, and other logging methods.

## File Analysis
- **LICENSE** — Copyright notice and permission details.
- **README.md** — Introduction to Cinch as an IRC bot building framework.
- **CHANGELOG** — List of changes made in different versions.
- **Rakefile** — Defines tasks for testing the gem.
- **cinch.gemspec** — Metadata for the Cinch gem.
- **bot_options.md** — Documentation on configuration options for bots.
- **common_tasks.md** — Common tasks and their solutions when using Cinch.
- **encodings.md** — Information on handling encodings in messages.
- **events.md** — Details about different events that can be handled by plugins.
- **logging.md** — Guide to logging within plugins.
- **migrating.md** — Migration guide for moving between API incompatible versions of Cinch.
- **plugins.md** — Placeholder for plugin documentation.
- **autovoice.rb** — Plugin that auto-voices users in a channel when they join, with commands to enable/disable it.
- **google.rb** — Plugin that searches Google and returns the first result directly to the sender.
- **hello.rb** — Simple plugin that responds with "Hello" to messages containing "hello".
- **join_part.rb** — Plugin for managing joining and parting channels based on admin permissions.
- **memo.rb** — Plugin that stores and sends memos from users.
- **msg.rb** — Plugin that allows sending messages directly to a user by their nick.
- **seen.rb** — Plugin that tracks when users were last seen in the channel.
- **urban_dict.rb** — Plugin that fetches definitions from Urban Dictionary.
- **url_shorten.rb** — Plugin that shortens URLs found in messages.