No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
zevaryx 05ca122f75
All checks were successful
CI / precommit (push) Successful in 28s
CI / test (3.12) (push) Successful in 5m15s
CI / test (3.13) (push) Successful in 5m29s
CI / test (3.15) (push) Successful in 4m20s
CI / test (3.14) (push) Successful in 6m34s
CI / image (push) Successful in 1m0s
build: bump the version to 3.2.0 and pin the jarvis-core 3.2.0
2026-11-06 01:01:20 -07:00
.forgejo/workflows ci: drop the interactions-py override now that the lock uses 6.0.0rc1 2026-11-02 21:42:05 -07:00
jarvis build: bump the version to 3.2.0 and pin the jarvis-core 3.2.0 2026-11-06 01:01:20 -07:00
tests feat(stats): store a statistic's value beside its time, keep a year, and record each sample once 2026-11-06 00:36:40 -07:00
.dockerignore build: switch from Poetry to uv 2026-11-02 14:16:59 -07:00
.flake8 Fix some breakages related to beanie 2023-03-24 19:55:03 +00:00
.gitattributes chore: normalise line endings to LF 2026-11-03 10:23:48 -07:00
.gitignore [fix] Pre-commit CI 2024-03-17 00:11:11 -06:00
.pre-commit-config.yaml build(pre-commit): update hooks to their latest releases and clean up what ruff now flags 2026-11-02 19:19:24 -07:00
compose.env docs: add the website to the compose file, and describe retention and appeal notices in the privacy policy 2026-11-03 10:45:13 -07:00
compose.yaml docs: add the website to the compose file, and describe retention and appeal notices in the privacy policy 2026-11-03 10:45:13 -07:00
Dockerfile build: use Python 3.14 in the Docker images 2026-11-04 09:43:27 -07:00
jarvis.png More logo updates 2022-02-03 14:43:21 -07:00
jarvis.svg More logo updates 2022-02-03 14:43:21 -07:00
jarvis_small.png More logo updates 2022-02-03 14:43:21 -07:00
LICENSE Add LICENSE, PRIVACY, TERMS 2022-03-10 22:42:34 -07:00
PRIVACY.md docs: say operators can see which accounts are signed in to the website 2026-11-04 10:48:08 -07:00
pyproject.toml build: bump the version to 3.2.0 and pin the jarvis-core 3.2.0 2026-11-06 01:01:20 -07:00
README.md docs: add the website to the compose file, and describe retention and appeal notices in the privacy policy 2026-11-03 10:45:13 -07:00
requirements.precommit.txt build(pre-commit): update hooks to their latest releases and clean up what ruff now flags 2026-11-02 19:19:24 -07:00
run.py fix(startup): keep logs across restarts, make jurigged optional, drop nest_asyncio 2026-11-02 19:09:37 -07:00
sample.env feat(operator): heartbeat, warning log, maintenance mode, feature switches and the blocklist 2026-11-04 06:39:51 -07:00
schema.yaml Add extra checks on mute/ban/unmute loop. Add unmute command, closes #25 2021-07-02 21:26:51 -06:00
TERMS.md docs: describe the website, its cookies and sessions in the privacy policy and terms 2026-11-03 07:42:43 -07:00
uv.lock build: bump the version to 3.2.0 and pin the jarvis-core 3.2.0 2026-11-06 01:01:20 -07:00

JARVIS

Just Another Rather Very Intelligent System


python 3.12+ discord chat widget

ko-fi

Welcome to the JARVIS Initiative, an open-source multi-purpose bot

Features

JARVIS currently offers:

  • 👩‍💼 Administration: verify, ban/unban, kick, purge, mute/unmute and more!
  • 🚓 Moderation: lock/unlock, lockdown, warn, autoreact, and also more!
  • 🔧 Utilities: remindme, rolegiver, temprole, image, and so many more!
  • 🏷️ Tags: Custom tags! Useful for custom messages without the hassle!

Contributing

Before creating an issue, please ensure that it hasn't already been reported/suggested. If you have a question, please join the community Discord before opening an issue.

If you wish to contribute to the JARVIS codebase or documentation, join the Discord! The recognized developers there will help you get started.

Community

Join the Stark R&D Department Discord server to be kept up-to-date on code updates and issues.

Versions

jarvis-bot, jarvis-tasks and jarvis-core are released together and share a version number: 3.x of each work with 3.x of the others. A change that needs matching releases of the other two bumps the major version of all three.

Requirements

  • MongoDB 7.0 or higher
  • Redis
  • Python 3.12 or higher
  • interactions.py 6.0 (currently a release candidate)
  • uv for installing dependencies

Running

uv sync --no-dev
cp sample.env .env   # fill in TOKEN, ERAPI and the database settings
uv run python run.py

Discord IDs are stored as integers since jarvis-core 2.0. When upgrading a database that was written by an older version, run uv run jarvis-migrate once, before starting the bot.

Optional settings (see sample.env): PHISHLIST_CHANNEL, ERROR_CHANNEL, PASTE_SITE and OWNER_PREFIX, which enables the owner-only text commands (echo, tail, log, sysinfo, crash).

Development

uv sync
JARVIS_TEST_MONGO_URI=mongodb://localhost:27017 JARVIS_TEST_MONGO_DB=jarvis_test uv run pytest

The tests use a real MongoDB and wipe the collections of JARVIS_TEST_MONGO_DB, so point it at a throwaway database.

JARVIS Features

Core Features

  • Reminders!
    • Set a reminder using human wording
    • Repeat daily, weekly or monthly with one click, or use cron for anything else!
    • Choose to get it as a DM right in the form
    • Copy reminders that other users make so that you can also be reminded of it
  • Server, User, and Role info!
  • List all the emotes in the server!
  • Check the bot status and see the logo!
  • Install the bot to your own account to use the utility commands (/pw, /timestamp, /calc, /dev, /avatar, /pigpen, /lmgtfy, /rc) in DMs, group chats and servers the bot is not in!
  • Secure password generation!
  • Timestamp conversions!

Admin Features

  • Track administrative actions taken against users!
    • Bans, mutes, and more!
    • Custom warnings
    • Moderation cases
  • Warn for pinging too many people/specific roles!
  • Raid and spam alerts: a channel of your choice hears about joins at raid speed, someone posting in channel after channel, or many people posting the same thing, with buttons to mute, kick, ban or dismiss. Thresholds can be tuned per server with /settings set alert_options. JARVIS only alerts; it never locks down or acts on its own
  • Warning escalation: mute, kick or ban automatically when a member reaches a number of active warnings
  • Members can report a message to the moderators with the Report Message menu
  • Discord AutoMod actions show up in the activity log next to the bot's own filter hits
  • Server lockdowns to help with raids/spam, with channels and categories you can leave open
  • Custom filters to prevent certain messages/phrases!
  • Automated purging of channels, and /purge filters (user, bots, text, links, attachments, message range)
  • Verification system

Extra Features

  • Calculator!
    • Calculate basic math expressions
    • Convert to and from many different units
      • All conversions supported by the Microsoft calculator are supported!
    • Live currency conversions
  • Developer Tools!
    • Hash using any Python-supported hash function!
      • You can even hash URLs and uploads!
    • Base-n encoding and decoding!
    • Unique ID generation via ULIDs, UUIDs, and ObjectIDs!
  • Image processing!
    • Shrink an image to fit a certain size! Useful for making emotes
  • Pinboard!
    • Run out of pins? Use the pinboard!
    • Dedicated channel for pinning messages
    • Optionally pin automatically once a message gets enough reactions
  • Rolegiver!
    • Advanced self-assigned roles
    • Group together roles for better organization!
    • Add several roles to a group at once with /rolegiver bulk
    • Pick-one groups, groups that need a role first, and role menus that stay in a channel for anyone to use
  • Tags!
    • Custom text responses from the bot
    • Editing can be done by the author or a moderator!
    • Aliases, search, and a most-used list