It's time to plan the next major update for Roxbot! I view the major versions of Roxbot almost like stages of growth. 0.x was the idea of Roxbot, 1.x was the child Roxbot. 2.x is a workable teenager of a bot that is quite spotty around the edges. I want 3.x to be the "final" major update to Roxbot. She should be a fully functional and powerful Discord bot. She shouldn't need any major rewrites from then forward. This is so I can work on other projects and also be proud of this one. I want to feel like I have made one of the best FOSS Discord bots you can find.
What will it take to get there? I want Roxbot to have a fully working web client that will aid the ability for users to interact with her. I want to try and gamify Roxbot to help with interaction and be able to replace that part of what bots provide to servers. I want to expand the image editing to a level I think is acceptable, I want to expand the admin tools to feature some really extensive and useful features, and I want to make more cogs and give her a lot more features. Above all else, i really want to tighten what we have at the moment. I feel that there is definitely a polish to Roxbot that is required for quite a bit of the features we already have.
With this, I am launching a Patreon to support me while I develop this version. This will help me put as much effort into launching this version as well as allow me to focus on it a lot more. I have also been operating Roxbot at a loss so far and I would like to at least breakeven in future.
Roadmap
Below is a rough feature wishlist to point out changes I want to do. It's a semi roadmap for 3.0. This doesn’t have all the changes and will not be a fully accurate list. It is a general concept at this moment.
Design
Roxbot is designed to be modular. All of the cogs within the cog folder are something you can disable. This is a two tier system. Roxbot has a core, which is the code that is built onto the discord.py stuff to make Roxbot work. Then the cogs. Extensions that actually provide the commands and a means to do stuff with Roxbot.
This is going to change. With 3.0, I intend move this to a three tier system. A Core, then move some of the already existing extensions into a closely knit bit of code. Not required and can be removed, but not 100% designed to be modular. Then a standalone extension system of top of that. This will allow me to do some of the changes required and highlight what I consider are key features.(This is being dumped in favour of just increasing the scope of core and making an api with features that can be turned off) It will allow me to design a api interaction with core Roxbot that can be used for easy extension making. This isn’t in place at the moment as each cog has been made to be seperate but, with this new design, I will be able to make this code cleaner and easier to write for.
For this, I will need to remodel how extensions are loaded into the bot. Maybe outer core cogs can be enabled and disabled in the config, and the extensions disabled in their metadata. This will also need me to make folders for extensions that include metadata and required configs for them on their own. This also will make writing new extensions easy and simple, only having to work on your own section without touching any of the main code for a plug in experience.
Meta
Meta changes are anything that is related to the project and repository itself rather than any code. Though this extends out to documentation and
[ ] Rewrite readme.md. It's mostly ok. I think it needs to sell features more and also mix in with the next point.
[ ] Create a contributors.md file to credit people for their code and contribution to the project. I also want to create a Patreon tier for listing them somewhere in the bot. If this goes in the readme.md it should end up popping up in the ;about command.
[ ] Create documentation and support for installing Roxbot on many platforms. She should work on virtually anything and I have evidence of this. Need to provide some documentation for it though.
[ ] Create a good issue and pr template to improve the quality of interactions.
[ ] For running Roxbot from source, adding a template for a service file and instructions on running her as a Linux service for systemd
[ ] Seek out professional graphics design rather than my hacked together GIMP work
[ ] Create a standard for extensions. Document it.
[ ] Change licenses from MIT to GPLv3 to move to a copyleft license
[ ] Seek QA testing for future releases to ensure minimal bugs.
[ ] Create a website to promote the bot as well. In addition, we can also reuse this as a homepage for the web client planned. Then the
[ ] Add support for localisation.
Core
[ ] Create a quasi api for Roxbot's features like the small few functions that already exist. Then we can document these and make it easier for extension making.
[ ] Create a web client that will be a companion to the Bot. Admin panels for instance owner, admins of a server, and a user section. This can supplement many of the config commands that Roxbot has and offer more customizability.
[ ] Make a system similar to other bots where we provide score and currency to users based off of messages in a guild. This should gamify the bot to a slight degree. I want to also include new fun commands to take advantage of this. Maybe some more gambling oriented games. Like a Roxbot Casino extension. I also want to provide tokens for participation in Trivia too.
[ ] In fitting with the Queer inclusion, I want to introduce a profile system that allows users to make profiles. It will also allow quick pronoun checking so that usage of all pronouns and multiple will be easier for users. It also alleviates issues with using roles for pronouns in servers. Maybe some pronouny.xyz integration? Need some ideas of sites that do that service.
[ ] Increase the usage of roxbot.conf to set variables and useful settings and config for the bot. Too many things are hardcoded in the bot and with the new changes the file will need expanding.
[ ] Restructure directories to remove settings folder. Move roxbot.conf to main directory and move db to a folder called db.
[ ] Add sharding support
[ ] Better __init__.py, remove cogs and dev mode to conf or somewhere else.
[ ] The ability to have translations and Roxbot in different languages. This would just use po files to store most Roxbot dialog. Focus on providing translations for all of Roxbot's Core features and the extensions made by me in the main repo.
[ ] Add a script that handles startup so that we can put logging in the stdout and then just view that via command line.
Trivia
[ ] A player list display at the start of games to ease UX as the game starts.
[ ] Include leaderboards with highscores for each server and user.
[ ] Leveling integration
Fun
Clean up cog in response to the gamifying. At the moment it is a large mix of commands that needs some more order and purpose.
NSFW
I really want to add onto this cog. It’s quite lacking in options and I think it can be expanded. I don’t have many concrete ideas on this other than a possible comic support.
ImageEditor
Another cog that could do with expanding on. There just needs to be way more options and ways to edit an image than what is provided at the moment. Just to bring it on the level as other bots.
Admin
Adding even more admin commands to aid in moderation is also on the todo. I think things like spam prevention, grey lists for certain phrases, a better member prune, and others are a good start.
Voice
The music bot is in a pretty good place. I think just to bring it up to what other music bots are like, I need to polish this cog a lil more. It struggles to be 100% stable and probably needs some more queue options with removing songs from the queue without having to play them.
JoinLeave and SelfAssign
I think these two can be cleaned up a little. Self assign role groups for ease of use and some general improvements in ease of use.
Documentation
Command Docs
[ ] Pride commands added since last update (aro, demiboy/girl/nb, polysexual, polygender)
What's this all about?
It's time to plan the next major update for Roxbot! I view the major versions of Roxbot almost like stages of growth. 0.x was the idea of Roxbot, 1.x was the child Roxbot. 2.x is a workable teenager of a bot that is quite spotty around the edges. I want 3.x to be the "final" major update to Roxbot. She should be a fully functional and powerful Discord bot. She shouldn't need any major rewrites from then forward. This is so I can work on other projects and also be proud of this one. I want to feel like I have made one of the best FOSS Discord bots you can find.
What will it take to get there? I want Roxbot to have a fully working web client that will aid the ability for users to interact with her. I want to try and gamify Roxbot to help with interaction and be able to replace that part of what bots provide to servers. I want to expand the image editing to a level I think is acceptable, I want to expand the admin tools to feature some really extensive and useful features, and I want to make more cogs and give her a lot more features. Above all else, i really want to tighten what we have at the moment. I feel that there is definitely a polish to Roxbot that is required for quite a bit of the features we already have.
With this, I am launching a Patreon to support me while I develop this version. This will help me put as much effort into launching this version as well as allow me to focus on it a lot more. I have also been operating Roxbot at a loss so far and I would like to at least breakeven in future.
Roadmap
Below is a rough feature wishlist to point out changes I want to do. It's a semi roadmap for 3.0. This doesn’t have all the changes and will not be a fully accurate list. It is a general concept at this moment.
Design
Roxbot is designed to be modular. All of the cogs within the cog folder are something you can disable. This is a two tier system. Roxbot has a core, which is the code that is built onto the discord.py stuff to make Roxbot work. Then the cogs. Extensions that actually provide the commands and a means to do stuff with Roxbot.
This is going to change. With 3.0, I intend move this to a three tier system. A Core, then move some of the already existing extensions into a closely knit bit of code. Not required and can be removed, but not 100% designed to be modular. Then a standalone extension system of top of that. This will allow me to do some of the changes required and highlight what I consider are key features.(This is being dumped in favour of just increasing the scope of core and making an api with features that can be turned off) It will allow me to design a api interaction with core Roxbot that can be used for easy extension making. This isn’t in place at the moment as each cog has been made to be seperate but, with this new design, I will be able to make this code cleaner and easier to write for.For this, I will need to remodel how extensions are loaded into the bot. Maybe outer core cogs can be enabled and disabled in the config, and the extensions disabled in their metadata. This will also need me to make folders for extensions that include metadata and required configs for them on their own. This also will make writing new extensions easy and simple, only having to work on your own section without touching any of the main code for a plug in experience.
Meta
Meta changes are anything that is related to the project and repository itself rather than any code. Though this extends out to documentation and
;about
command.Core
__init__.py
, remove cogs and dev mode to conf or somewhere else.Trivia
Fun
Clean up cog in response to the gamifying. At the moment it is a large mix of commands that needs some more order and purpose.
NSFW
I really want to add onto this cog. It’s quite lacking in options and I think it can be expanded. I don’t have many concrete ideas on this other than a possible comic support.
ImageEditor
Another cog that could do with expanding on. There just needs to be way more options and ways to edit an image than what is provided at the moment. Just to bring it on the level as other bots.
Admin
Adding even more admin commands to aid in moderation is also on the todo. I think things like spam prevention, grey lists for certain phrases, a better member prune, and others are a good start.
Voice
The music bot is in a pretty good place. I think just to bring it up to what other music bots are like, I need to polish this cog a lil more. It struggles to be 100% stable and probably needs some more queue options with removing songs from the queue without having to play them.
JoinLeave and SelfAssign
I think these two can be cleaned up a little. Self assign role groups for ease of use and some general improvements in ease of use.
Documentation
Command Docs