No description
  • Python 95.6%
  • Shell 2.6%
  • Makefile 0.9%
  • Dockerfile 0.9%
Find a file
2026-02-20 09:48:59 +01:00
.forgejo/workflows Add container build assets and Forgejo workflow 2025-12-24 04:22:05 +01:00
config feat(auth,plugins,feeds,moderation): hostmask-based auth, TOTP improvements 2026-02-07 22:37:45 +01:00
docs feat(auth,plugins,feeds,moderation): hostmask-based auth, TOTP improvements 2026-02-07 22:37:45 +01:00
licenses Add license folder and dependency license summary 2025-12-06 03:08:33 +01:00
novariusirc Release 0.1.5: i18n, feed list, module toggles, CertFP and config updates 2026-02-20 09:39:22 +01:00
plugins feat: Add plugin system and moderation core 2026-02-07 18:52:17 +01:00
.dockerignore Add container build assets and Forgejo workflow 2025-12-24 04:22:05 +01:00
.gitignore Ignore build artifacts 2026-02-18 01:00:21 +01:00
config.example.toml Release 0.1.5: i18n, feed list, module toggles, CertFP and config updates 2026-02-20 09:39:22 +01:00
Dockerfile refactor: Remove profile parameter from documentation and examples 2026-02-07 17:44:16 +01:00
install.sh Fix: Install-Script nutzt jetzt Virtual Environment 2026-02-10 00:45:53 +01:00
LICENSE Make LICENSE a symlink to license text 2025-12-06 03:17:51 +01:00
Makefile Fix: Install-Script nutzt jetzt Virtual Environment 2026-02-10 00:45:53 +01:00
poetry.lock chore(release): v0.1.4 - Plugin system and moderation core 2026-02-07 19:00:12 +01:00
pyproject.toml Release 0.1.5: i18n, feed list, module toggles, CertFP and config updates 2026-02-20 09:39:22 +01:00
README.md Release 0.1.5: i18n, feed list, module toggles, CertFP and config updates 2026-02-20 09:39:22 +01:00
secrets.example.toml Release 0.1.5: i18n, feed list, module toggles, CertFP and config updates 2026-02-20 09:39:22 +01:00

NovariusIRC

NovariusIRC is a modular, multilingual IRC bot/daemon in the classic Eggdrop style. One process connects to exactly one IRC network; multi-network setups run multiple instances (or containers). The project targets Python 3.12+, ships a Poetry configuration, and exposes a CLI entry point novariusirc.

Status

This repository contains the first MVP skeleton: async IRC core with reconnect logic, config loading and validation, structured logging, i18n hooks, a command registry with role checks, a feed engine, and sample modules for moderation (warn-only) and RSS announcements. Worker pools use ProcessPoolExecutor with an optional aioprocessing extra for long-lived workers.

Quickstart

  1. Recommended installation path:
    make install
    
  2. Copy config.example.toml to config.toml and adjust values or environment variables.
  3. Optional feature files are configured explicitly via [includes] in config.toml; entries are relative to config.toml (or absolute). Templates are in config/*.example.toml. workers stays in the main config by default.
  4. Add the installed binary location to your shell PATH:
    export PATH="$HOME/NovariusIRC/bin:$PATH"
    
  5. Run the example instance:
    novariusirc ~/NovariusIRC/instances/example/config.toml
    

Development workflow (optional)

For local development in the project workspace, use Poetry:

poetry install

Then run the bot:

poetry run novariusirc --config ./config.toml

Container

Build a local image:

docker build -t novariusirc:local .

Run the container (mount your config):

docker run --rm -v "$(pwd)/config.toml:/app/config.toml:ro" novariusirc:local

Podman with SELinux label:

podman run --rm -v "$(pwd)/config.toml:/app/config.toml:ro,Z" novariusirc:local

Project Layout

  • novariusirc/core: core services (client, config, auth, commands, logging, i18n, feeds, plugins, workers)
  • novariusirc/modules: built-in modules (moderation, rss_announcer)
  • novariusirc/__main__.py: CLI entry point
  • config.example.toml: starter configuration
  • config/*.example.toml: optional feature snippets (feeds, moderation, workers)
  • licenses/Novara-Software-Freedom-License-EN.md: project license text

Notes

  • Structured STDOUT logging plus rotating files under logs/; optional journald if installed.
  • IRC connection settings and secrets can be overridden via env vars (e.g. NOVARIUSIRC_SERVER, NOVARIUSIRC_NICK, NOVARIUSIRC_SASL_PASSWORD).
  • Env-only startup is supported; set NOVARIUSIRC_SERVER and NOVARIUSIRC_NICK (others optional) or pass --config env.
  • Feed engine caches ETag/Last-Modified, tracks seen item ids per feed, supports custom templates ({feed}, {title}, {summary}, {link}, {published}), per-feed enable/disable, and User-Agent rotation/TLS settings (see config/feeds.example.toml).
  • Feed overview command is available when rss_announcer is enabled: !feed list [query] (shows channels and active limits/options).
  • Built-in modules are configurable via [modules].enabled (e.g. moderation, rss_announcer).
  • Multi-bot IRC environments should use different prefixes per bot (recommended) to avoid command collisions.
  • Moderation module operates in warn-only mode for the MVP.