# SnekBot: Your Instant Chat Companion
## Create Your Own Bot in Minutes
### Overview
SnekBot is designed for rapid deployment and customization, providing a fully asynchronous and production-ready chat bot solution. It is built to handle network issues effectively, ensuring a reliable user experience.
### Prerequisites
- Python 3.8 or higher
- Basic understanding of Python programming
### Installation Instructions
#### 1. Prepare Your Environment
```bash
# For Ubuntu/Debian users:
sudo apt install python3 python3-venv python3-pip -y
# Create a virtual environment for your bot
python3 -m venv venv
source venv/bin/activate
```
#### 2. Install SnekBot
```bash
pip install git+https://molodetz.nl/retoor/snekbot.git
```
### Bot Development
To create your bot, use the following template:
```python
import asyncio
from snekbot.bot import Bot
class CustomSnekBot(Bot):
async def on_join(self, channel_uid):
await self.send_message(
channel_uid,
"Hello! I am here to assist you."
)
async def on_message(self, sender_username, sender_nick, channel_uid, message):
message = message.lower()
if "hello" in message:
await self.send_message(channel_uid, f"Greetings, {sender_nick}!")
elif "bye" in message:
await self.send_message(channel_uid, f"Goodbye, {sender_nick}!")
# Initialize your bot
bot = CustomSnekBot(
url="wss://your-snek-instance.com/rpc.ws",
username="your_bot_username",
password="your_secure_password"
)
asyncio.run(bot.run())
```
### Running Your Bot
```bash
python your_bot_script.py
```
### Event Handlers
You can override the following event handlers:
- `on_join`: Triggered when the bot joins a channel
- `on_leave`: Triggered when the bot leaves a channel
- `on_ping`: Responds to ping messages
- `on_mention`: Handles direct mentions
- `on_message`: Processes incoming messages
### Additional Information
- For detailed logging, include `logging.basicConfig(level=logging.DEBUG)` in your code.
- The bot is designed to automatically reconnect in case of connection drops.
- Feel free to customize the bot to meet your specific requirements.
### Contribution Guidelines
Contributions are welcome. Please submit pull requests for any enhancements or bug fixes.
### License
This project is licensed under the MIT License.