diff --git a/README.md b/README.md
index 46846ce..84759dd 100644
--- a/README.md
+++ b/README.md
@@ -6,13 +6,14 @@
[]()
-[](https://git.zevaryx.com/stark-industries/jarvis/jarvis-bot)
+[](https://git.zevaryx.com/stark-industries/jarvis/jarvis-bot)
[](https://discord.gg/VtgZntXcnZ)
[](https://ko-fi.com/zevaryx)
-
-Welcome to the JARVIS Initiative, an open-source multi-purpose bot
+### Welcome to the JARVIS Initiative, an open-source multi-purpose bot
+
+
## Features
@@ -36,80 +37,57 @@ Join the [Stark R&D Department Discord server](https://discord.gg/VtgZntXcnZ) to
## Requirements
-- MongoDB 6.0 or higher
-- Python 3.10 or higher
+- MongoDB 7.0 or higher
+- Python 3.12 or higher
- [tokei](https://github.com/XAMPPRocky/tokei) 12.1 or higher
- Everything in `requirements.txt`
-## JARVIS Cogs
+## JARVIS Features
-Current cogs that are implemented:
+### Core Features
-- `AdminCog`
- - Handles all admin commands
-- `AutoreactCog`
- - Handles autoreaction configuration
-- `BotutilCog`
- - Handles internal bot utilities (private use only)
-- `DevCog`
- - Developer utilities, such as hashing, encoding, and UUID generation
-- `GitlabCog`
- - Shows Gitlab information about J.A.R.V.I.S.
-- `ImageCog`
- - Image-processing cog.
-- `RedditCog`
- - Reddit lookup and following commands
-- `RemindmeCog`
- - Manage reminders
-- `RolegiverCog`
- - Configure selectable roles
-- `SettingsCog`
- - Manage Guild settings
-- `StarboardCog`
- - Configure and add starboards and stars
-- `TagCog`
- - For managing tags
-- `TemproleCog`
- - For managing and assigning temporary roles
-- `TwitterCog`
- - Twitter following commands
-- `UtilCog`
- - Generic utilities, like userinfo and roleinfo
-- `VerifyCog`
- - Guild verification
+- Reminders!
+ - Set a reminder using human wording
+ - Use cron to have it repeat!
+ - 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!
+- Secure password generation!
+- Timestamp conversions!
-## Directories
+### Admin Features
-### `jarvis`
+- Track administrative actions taken against users!
+ - Bans, mutes, and more!
+ - Custom warnings
+ - Moderation cases
+- Warn for pinging too many people/specific roles!
+- Server lockdowns to help with raids/spam
+- Custom filters to prevent certain messages/phrases!
+- Automated purging of channels
+- Verification system
-The bot itself
+### Extra Features
-#### `jarvis.cogs`
-
-All of the cogs listed above are stored in this directory
-
-##### `jarvis.cogs.admin`
-
-Contains all AdminCogs, including:
-
-- `BanCog`
-- `KickCog`
-- `LockCog`
-- `LockdownCog`
-- `ModcaseCog`
-- `MuteCog`
-- `PurgeCog`
-- `RolepingCog`
-- `WarningCog`
-
-#### `jarvis.data`
-
-Contains data relevant to J.A.R.V.I.S., such as emoji lookups and dbrand data
-
-##### `jarvis.data.json`
-
-Any JSON files that are needed are stored here
-
-#### `jarvis.utils`
-
-Generic utilities
+- 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
+- Rolegiver!
+ - Advanced self-assigned roles
+ - Group together roles for better organization!
+- Tags!
+ - Custom text responses from the bot
+ - Editing can be done by the author or a moderator!
diff --git a/pyproject.toml b/pyproject.toml
index 5fcdd60..7029c03 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,20 +6,15 @@ authors = ["Zevaryx "]
[tool.poetry.dependencies]
python = ">=3.11,<4"
-PyYAML = "^6.0"
-GitPython = "^3.1.26"
opencv-python = "^4.5.5"
Pillow = "^9.0.0"
psutil = "^5.9.0"
-python-gitlab = "^3.1.1"
ulid-py = "^1.1.0"
-tweepy = "^4.5.0"
jarvis-core = { git = "https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git", rev = "main" } # Mine
aiohttp = ">=3.9.0b0"
pastypy = "^1.0.3.post1" # Mine
dateparser = "^1.1.1"
aiofile = "^3.8.1"
-asyncpraw = "^7.5.0"
rich = "^12.3.0"
jurigged = "^0.5.3" # Contributed
ansitoimg = "^2022.1"
diff --git a/requirements.txt b/requirements.txt
index 7a93f10..f2b5efa 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,95 +1,81 @@
-aiofile==3.7.4; python_version > "3.4" and python_version < "4"
-aiofiles==0.6.0; python_version >= "3.6"
-aiohttp==3.8.1; python_version >= "3.6"
-aioredis==2.0.1; python_version >= "3.6"
-aiosignal==1.2.0; python_version >= "3.10" and python_version < "4.0"
-aiosqlite==0.17.0; python_version >= "3.6"
-ansicon==1.89.0; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows"
-ansitoimg==2022.1; python_version >= "3.7" and python_version < "4.0"
-appdirs==1.4.4; python_version >= "3.7" and python_version < "4.0"
-async-generator==1.10; python_version >= "3.6"
-async-timeout==4.0.2; python_version >= "3.10" and python_version < "4.0"
-asyncio-extras==1.3.2; python_version >= "3.6"
-asyncpraw==7.5.0; python_version >= "3.6"
-asyncprawcore==2.3.0; python_version >= "3.6"
-attrs==21.4.0; python_version >= "3.10" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.10" and python_version < "4.0" and python_full_version >= "3.5.0"
-beautifulsoup4==4.11.1; python_full_version >= "3.6.0"
-blessed==1.19.1; python_version >= "3.8" and python_version < "4.0"
-caio==0.9.5; python_version >= "3.5" and python_version < "4"
-certifi==2021.10.8; python_full_version >= "3.7.0" and python_version >= "3.10" and (python_version >= "3.10" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.10") and python_version < "4.0"
-charset-normalizer==2.0.12; python_version >= "3.10" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") and (python_version >= "3.10" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.10")
-click==8.1.3; python_version >= "3.10" and python_version < "4.0"
-codefind==0.1.3; python_version >= "3.8" and python_version < "4.0"
-colorama==0.4.4; python_version >= "3.10" and python_full_version < "3.0.0" and python_version < "4.0" and platform_system == "Windows" or python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" and python_full_version >= "3.5.0"
-commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.10" and python_version < "4.0"
-dateparser==1.1.1; python_version >= "3.5"
-discord-typings==0.5.1; python_version >= "3.10" and python_version < "4.0"
-distro==1.7.0; python_version >= "3.6"
-frozenlist==1.3.0; python_version >= "3.10" and python_version < "4.0"
-funcsigs==1.0.2
-gitdb==4.0.9; python_version >= "3.7"
-gitpython==3.1.27; python_version >= "3.7"
-h11==0.13.0; python_version >= "3.10" and python_version < "4.0"
-idna==3.3; python_full_version >= "3.7.0" and python_version >= "3.10" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") and (python_version >= "3.10" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.10") and python_version < "4.0"
-importlib-metadata==4.11.4; python_version >= "3.7" and python_version < "4.0"
-jarvis-core @ git+https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git@main ; python_version >= "3.10" and python_version < "4.0"
-jinxed==1.2.0; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows"
-jurigged==0.5.3; python_version >= "3.8" and python_version < "4.0"
-marshmallow==3.16.0; python_version >= "3.10" and python_version < "4.0"
-mongoengine==0.23.1; python_version >= "3.6"
-motor==2.5.1; python_version >= "3.10" and python_version < "4.0" and python_full_version >= "3.5.2"
-multidict==6.0.2; python_version >= "3.10" and python_version < "4.0"
-naff==1.11.1; python_version >= "3.10"
-nafftrack @ git+https://github.com/artem30801/nafftrack.git@master ; python_version >= "3.10" and python_version < "4.0"
-nanoid==2.0.0; python_version >= "3.10" and python_version < "4.0"
-nest-asyncio==1.5.5; python_version >= "3.5"
-numpy==1.22.4; python_version >= "3.10" and platform_system == "Linux" and platform_machine == "aarch64" or python_version >= "3.10" or python_version >= "3.9" and platform_system == "Darwin" and platform_machine == "arm64"
-oauthlib==3.2.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-opencv-python==4.6.0.66; python_version >= "3.6"
-orjson==3.7.2; python_version >= "3.10" and python_version < "4.0"
-ovld==0.3.2; python_version >= "3.8" and python_version < "4.0"
-packaging==21.3; python_version >= "3.10" and python_version < "4.0"
-pastypy==1.0.2; python_version >= "3.10"
-pillow==9.1.1; python_version >= "3.7"
-prometheus-client==0.14.1; python_version >= "3.10" and python_version < "4.0"
-protobuf==3.20.1; python_version >= "3.7"
-psutil==5.9.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
-pycryptodome==3.14.1; python_version >= "3.10" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.10"
-pyee==8.2.2; python_version >= "3.7" and python_version < "4.0"
-pygments==2.12.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.10" and python_version < "4.0"
-pymongo==3.12.3; python_version >= "3.10" and python_version < "4.0" and python_full_version >= "3.5.2"
-pyparsing==3.0.9; python_version >= "3.10" and python_version < "4.0" and python_full_version >= "3.6.8"
-pyppeteer==1.0.2; python_version >= "3.7" and python_version < "4.0"
-python-dateutil==2.8.2; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5"
-python-gitlab==3.5.0; python_full_version >= "3.7.0"
-python-levenshtein==0.12.2
-pytz==2022.1; python_version >= "3.10" and python_version < "4.0"
-pytz-deprecation-shim==0.1.0.post0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
-pyyaml==6.0; python_version >= "3.6"
-regex==2022.3.2; python_version >= "3.6"
-requests==2.27.1; python_full_version >= "3.7.0" and python_version >= "3.7" and (python_version >= "3.10" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.10") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
-requests-oauthlib==1.3.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
-requests-toolbelt==0.9.1; python_full_version >= "3.7.0"
-rich==12.4.4; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
-rook==0.1.175
-six==1.16.0; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.3.0" and python_version >= "3.8" and python_version < "4.0"
-smmap==5.0.0; python_version >= "3.7"
-soupsieve==2.3.2.post1; python_version >= "3.6" and python_full_version >= "3.6.0"
-thefuzz==0.19.0
-tomli==2.0.1; python_version >= "3.10" and python_version < "4.0"
-tqdm==4.64.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.4.0"
-tweepy==4.10.0; python_version >= "3.7"
-typing-extensions==4.3.0; python_version >= "3.10"
-tzdata==2022.1; platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
-tzlocal==4.2; python_version >= "3.6"
-ulid-py==1.1.0
-umongo==3.1.0; python_version >= "3.10" and python_version < "4.0"
-update-checker==0.18.0; python_version >= "3.6"
-urllib3==1.26.8; python_full_version >= "3.7.0" and python_version < "4" and python_version >= "3.10" and (python_version >= "3.10" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.10") and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.7")
-uvicorn==0.18.2; python_version >= "3.10" and python_version < "4.0"
-watchdog==2.1.8; python_version >= "3.8" and python_version < "4.0"
-wcwidth==0.2.5; python_version >= "3.8" and python_version < "4.0"
-websocket-client==1.3.2; python_version >= "3.7"
-websockets==10.3; python_version >= "3.7" and python_version < "4.0"
-yarl==1.7.2; python_version >= "3.10" and python_version < "4.0"
-zipp==3.8.0; python_version >= "3.7" and python_version < "4.0"
+aiofile==3.8.8 ; python_version >= "3.11" and python_version < "4"
+aiohttp==3.9.3 ; python_version >= "3.11" and python_version < "4"
+aiosignal==1.3.1 ; python_version >= "3.11" and python_version < "4"
+annotated-types==0.6.0 ; python_version >= "3.11" and python_version < "4"
+ansicon==1.89.0 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Windows"
+ansitoimg==2022.2 ; python_version >= "3.11" and python_version < "4.0"
+appdirs==1.4.4 ; python_version >= "3.11" and python_version < "4.0"
+async-timeout==4.0.3 ; python_version >= "3.11" and python_full_version <= "3.11.2"
+attrs==23.2.0 ; python_version >= "3.11" and python_version < "4"
+beanie==1.25.0 ; python_version >= "3.11" and python_version < "4.0"
+beautifulsoup4==4.12.3 ; python_version >= "3.11" and python_version < "4"
+blessed==1.20.0 ; python_version >= "3.11" and python_version < "4.0"
+caio==0.9.13 ; python_version >= "3.11" and python_version < "4"
+calculator @ git+https://git.zevaryx.com/zevaryx/calculator.git@b317d35788c6a06f2b496844d5fdf4e3414453e6 ; python_version >= "3.11" and python_version < "4"
+certifi==2024.2.2 ; python_version >= "3.11" and python_version < "4"
+charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "4"
+click==8.1.7 ; python_version >= "3.11" and python_version < "4.0"
+codefind==0.1.3 ; python_version >= "3.11" and python_version < "4.0"
+colorama==0.4.6 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Windows"
+commonmark==0.9.1 ; python_version >= "3.11" and python_version < "4"
+croniter==1.4.1 ; python_version >= "3.11" and python_version < "4"
+dateparser==1.2.0 ; python_version >= "3.11" and python_version < "4"
+discord-typings==0.7.0 ; python_version >= "3.11" and python_version < "4"
+dnspython==2.6.1 ; python_version >= "3.11" and python_version < "4"
+emoji==2.10.1 ; python_version >= "3.11" and python_version < "4"
+erapi @ git+https://git.zevaryx.com/zevaryx-technologies/erapi.git@0f13217902aaf3e575f3afabb09bd76e1134833b ; python_version >= "3.11" and python_version < "4"
+frozenlist==1.4.1 ; python_version >= "3.11" and python_version < "4"
+idna==3.6 ; python_version >= "3.11" and python_version < "4"
+importlib-metadata==7.0.1 ; python_version >= "3.11" and python_version < "4.0"
+interactions-py==5.11.0 ; python_version >= "3.11" and python_version < "4"
+jarvis-core @ git+https://git.zevaryx.com/stark-industries/jarvis/jarvis-core.git@d598ec8b49fc260e5c03fda2b1ffc15521abaf45 ; python_version >= "3.11" and python_version < "4"
+jinxed==1.2.1 ; python_version >= "3.11" and python_version < "4.0" and platform_system == "Windows"
+jurigged==0.5.7 ; python_version >= "3.11" and python_version < "4.0"
+lazy-model==0.2.0 ; python_version >= "3.11" and python_version < "4.0"
+levenshtein==0.25.0 ; python_version >= "3.11" and python_version < "4"
+motor==3.3.2 ; python_version >= "3.11" and python_version < "4"
+multidict==6.0.5 ; python_version >= "3.11" and python_version < "4"
+nanoid==2.0.0 ; python_version >= "3.11" and python_version < "4"
+nest-asyncio==1.6.0 ; python_version >= "3.11" and python_version < "4"
+numpy==1.26.4 ; python_version >= "3.11" and python_version < "4"
+opencv-python==4.9.0.80 ; python_version >= "3.11" and python_version < "4"
+orjson==3.9.15 ; python_version >= "3.11" and python_version < "4"
+ovld==0.3.2 ; python_version >= "3.11" and python_version < "4.0"
+pastypy==1.0.3.post1 ; python_version >= "3.11" and python_version < "4"
+pillow==9.5.0 ; python_version >= "3.11" and python_version < "4"
+psutil==5.9.8 ; python_version >= "3.11" and python_version < "4"
+pycryptodome==3.20.0 ; python_version >= "3.11" and python_version < "4"
+pydantic-core==2.16.3 ; python_version >= "3.11" and python_version < "4"
+pydantic-settings==2.2.1 ; python_version >= "3.11" and python_version < "4"
+pydantic==2.6.3 ; python_version >= "3.11" and python_version < "4"
+pyee==8.2.2 ; python_version >= "3.11" and python_version < "4.0"
+pygments==2.17.2 ; python_version >= "3.11" and python_version < "4"
+pymongo==4.6.2 ; python_version >= "3.11" and python_version < "4"
+pyppeteer==1.0.2 ; python_version >= "3.11" and python_version < "4.0"
+python-dateutil==2.9.0.post0 ; python_version >= "3.11" and python_version < "4"
+python-dotenv==0.21.1 ; python_version >= "3.11" and python_version < "4"
+python-levenshtein==0.25.0 ; python_version >= "3.11" and python_version < "4"
+pytz==2022.7.1 ; python_version >= "3.11" and python_version < "4"
+pyyaml==6.0.1 ; python_version >= "3.11" and python_version < "4"
+rapidfuzz==3.6.1 ; python_version >= "3.11" and python_version < "4"
+redis==4.6.0 ; python_version >= "3.11" and python_version < "4"
+regex==2023.12.25 ; python_version >= "3.11" and python_version < "4"
+requests==2.31.0 ; python_version >= "3.11" and python_version < "4"
+rich==12.6.0 ; python_version >= "3.11" and python_version < "4"
+six==1.16.0 ; python_version >= "3.11" and python_version < "4"
+soupsieve==2.5 ; python_version >= "3.11" and python_version < "4"
+statipy @ git+https://github.com/zevaryx/statipy@25cef25df0b69c1fef221db6784b239b685e8d01 ; python_version >= "3.11" and python_version < "4"
+thefuzz[speedup] @ git+https://github.com/zevaryx/thefuzz.git@e4ab69d3d44cc3dd67221cba53e6a614786b0d7c ; python_version >= "3.11" and python_version < "4"
+toml==0.10.2 ; python_version >= "3.11" and python_version < "4.0"
+tomli==2.0.1 ; python_version >= "3.11" and python_version < "4"
+tqdm==4.66.2 ; python_version >= "3.11" and python_version < "4.0"
+typing-extensions==4.10.0 ; python_version >= "3.11" and python_version < "4"
+tzdata==2024.1 ; python_version >= "3.11" and python_version < "4" and platform_system == "Windows"
+tzlocal==5.2 ; python_version >= "3.11" and python_version < "4"
+ulid-py==1.1.0 ; python_version >= "3.11" and python_version < "4"
+urllib3==1.26.18 ; python_version >= "3.11" and python_version < "4"
+watchdog==4.0.0 ; python_version >= "3.11" and python_version < "4.0"
+wcwidth==0.2.13 ; python_version >= "3.11" and python_version < "4.0"
+websockets==10.4 ; python_version >= "3.11" and python_version < "4.0"
+yarl==1.9.4 ; python_version >= "3.11" and python_version < "4"
+zipp==3.17.0 ; python_version >= "3.11" and python_version < "4.0"