A modular XMPP bot built with Python 3 and slixmpp.
Mirrors:
envsbot is developed with the envs pubnix environment in mind, but is not limited to it. It takes the tildebot IRC bot as model and hopefully will include all of its features and more (especially in XMPP groupchats and DMs).
envsbot is now in a usable state: the core framework is mostly stable, although probably not bug-free, supports dynamic plugin loading, and provides a structured command system. We are now developing new plugins and features on top of it.
- Plugin-based architecture
- Dynamic plugin loading/reloading
- Command decorators
- SQLite-backed database layer
- Test suite for core and plugins
Below is a list of available plugins in plugins/ and their descriptions.
Descriptions are derived from plugin docstrings or, if needed, from code analysis.
-
_admin
Admin management commands.
Exposes administrative commands for bot management, such as restart, shutdown, and status monitoring. Lets OWNERs restart or gracefully shut down the bot, and ADMINs view detailed resource and thread status. -
_reg_profile
Bot profile initialization plugin.
Manages the bot’s public XMPP profile and its own database profile during startup or reload. No user commands; sets DB profile, vCard, and avatar as needed. -
birthday_notify
Birthday notification plugin.
Parses user birthday data, stores it, and automatically sends birthday notifications to users in group chats or private messages based on configured dates. -
dice
Dice rolling plugin.
Roll dice with optional modifiers and success conditions (e.g.,,dice 3d20 -5 >= 30). Useful for games and randomization. -
help
📚 Help system for the bot.
Dynamic help for plugins and commands, showing documentation in private messages based on user role. -
information
Info plugin.
Commands for fetching the latest toots from Fediverse users and Urban Dictionary term search. -
plugins
Plugin management commands.
Administrative commands for managing plugins at runtime, including load, unload, reload, and listing plugins. -
profile
Profile management plugin.
Allows users to set and display their NAME, LOCATION, TIMEZONE, BIRTHDAY, PRONOUNS, SPECIES, EMAIL, and personal URLs. Fields can be queried for yourself or others. -
reminder
Reminder system plugin.
Lets users schedule reminders (one-time or repeating) and sends reminders as private messages or group chat notices at the appropriate time. -
rooms
Room management and persistence.
Administrative commands for managing XMPP MUC rooms stored in the bot's database, including adding, updating, joining, syncing rooms, and setting rooms to autojoin. -
rss
RSS Feed watcher plugin.
Checks configured RSS/Atom feeds periodically and posts updates to rooms. Allows adding, deleting, and listing feeds per room. -
sed
Substitute/replace command plugin.
Enables IRC/Slack-style “s/foo/bar/” corrections for previous messages in the same room or private conversation. -
status
Bot presence and status management.
Lets moderators change the bot's XMPP presence (online, away, DND, etc.) and allows users to view the bot's current presence and status. -
tools
Utility tools and core bot commands.
Provides ping/pong, echo, timezone-aware time and date lookup, UTC time, and Unix timestamp conversion. The{prefix}timeand{prefix}datecommands are now part of this plugin. -
urlcheck
URL Check plugin.
Automatic URL title and YouTube info fetching for group chats with spam avoidance/cooldown. Moderators may enable or disable this per room. -
users
Users plugin.
Manages automatic user registration by JID, tracks last-seen and per-room nickname history, allows lookup and administrative updating of user roles. -
weather
Weather info plugin.
Shows current weather for a user’s configured location via wttr.in, supporting group chat and private queries. -
xkcd
XKCD comic plugin.
Fetches and displays XKCD web comics and explanations for given comic numbers or random selections. -
xmpp
XMPP protocol extension plugin.
Handles protocol-specific actions, possibly including advanced XMPP commands, pubsub, message carbons, or XMPP integration features for core bot or plugin functionality.
-
Clone the repository:
git clone https://github.com/yourusername/envsbot.git cd envsbot -
Create a virtual environment (recommended):
python3 -m venv venv source venv/bin/activate -
Install dependencies:
pip install -r requirements.txt
-
Configure the bot:
- Copy
config_sample.jsontoconfig.jsonand edit with your XMPP credentials and settings.
- Copy
-
Run the bot:
python envsbot.py
- Plugin Management Plugin [core]
- User Management Plugin [core]
- Room Management Plugin [core]
- Profile Management Plugin [core]
- Add more plugins
- Improve documentation and usage examples
- Enhance error handling and logging
- Choosable Plugins on startup in configuration file
- Improve documentation for configuration file
This project is licensed under the GPL-3.0-only License. See the LICENSE file for details. Future versions of the GPL License are explicitly