A discord bot for administrative and notification purposes.
- Features can be disabled individually
- Creates and manages names and automatically assigns the aspiring member role once they have submitted their name and rose-hulman email address.
- Based on the Google Calendar (updated hourly) provided, it will create a message in channel to react to. This will automatically mark down the hours worked log for an hour (default) or special by an admin.
-
In the event someone hasn't updated their profile to have their name, you can get a list of users with that name. It will not ping them from this command.
-
This also manages the
Active
orAspiring
member status. -
If the member has not submitted attendance for a quarter they will be demoted to
Aspiring
member. -
This rule does not apply to admin.
- When a launch day is coming up or arrived, a generated report for drive time, weather, and other information will be sent in announcements.
- Reminds us of upcoming due dates for USLI reports.
- Motor class conversion.
/classconvert [newton-seconds]
- Fire cabinent explosive power.
/explosive_cabinent
There are two main programs this bot needs to work correctly.
- The database/web host
- The bot system itself.
This is what stores the member database and how we can more granularly manage the bot without having to resort to commands (useful for debugging). The front end does not matter much.
- Django
- Redis
- PostgreSQL
- Docker
- Discord.py
- Asnycio
This repository is built using Docker and Remote-Containers. This way the environment can be shipped to whatever computer we decide to host the project on.
First you need to install Docker/Docker Desktop. Visit Docker and follow the links to install. Second, I would make sure that you have an up-to-date Visual Studio Code with the following extensions:
- Remote Development (Pack)
- Docker
- Python (Pack) Third to make source control easier, I use GitHub Desktop.
Questions I think I might be asked a lot, for now.
In .devcontainer, there is a devcontainer.json. In one of the fields, there is a field called service
, which you can set to either bot
and app
.
Having the bot separated from the platform that controls it, we can have more reliability.