2e2378d3ee629d1b7eb6af8a701a37a665f6b888
All pure stdlib, zero external dependencies: - dns: raw UDP resolver with A/AAAA/MX/NS/TXT/CNAME/PTR/SOA - encode: base64, hex, URL, ROT13 encode/decode - hash: md5/sha1/sha256/sha512 generation + type identification - defang: IOC defanging/refanging for safe sharing - revshell: reverse shell one-liners for 11 languages - cidr: subnet calculator with IP membership check Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
derp
Asyncio IRC bot for Python 3.11+ with a decorator-based plugin system. Zero external dependencies.
Quick Start
git clone <repo> ~/git/derp && cd ~/git/derp
make install
# Edit config/derp.toml with your server details
make run
Features
- Async IRC over plain TCP or TLS
- Plugin system with
@commandand@eventdecorators - TOML configuration with sensible defaults
- Auto reconnect, nick recovery, PING/PONG handling
- Built-in commands:
!ping,!help,!version
Configuration
Edit config/derp.toml:
[server]
host = "irc.libera.chat"
port = 6697
tls = true
nick = "derp"
[bot]
prefix = "!"
channels = ["#test"]
plugins_dir = "plugins"
Writing Plugins
Create a .py file in plugins/:
from derp.plugin import command, event
@command("greet", help="Say hello")
async def cmd_greet(bot, message):
await bot.reply(message, f"Hello, {message.nick}!")
@event("JOIN")
async def on_join(bot, message):
if message.nick != bot.nick:
await bot.send(message.target, f"Welcome, {message.nick}")
Commands
| Command | Description |
|---|---|
make install |
Create venv and install |
make test |
Run test suite |
make lint |
Lint with ruff |
make run |
Start the bot |
make link |
Symlink to ~/.local/bin/ |
Documentation
License
MIT
Description
Languages
Python
98.9%
Shell
1%
Makefile
0.1%