DisCal is a discord bot that connects Discord and Google Calendar as seamlessly as possible with a wide feature set for calendar management and information.
- Powerful in-server integration of google calendar
- Custom Calendar creation and editing
- Event creation, editing, and deletion
- Automated announcement system to remind users of events
- Customizable prefix and mentionable commands
- Versatile and built for all communities
- Web dashboard for bot and calendar management
Patrons and supporters on the $5/month plans get access to work in progress and exclusive features.
- External Calendars
- Use an already existing calendar that is on your Google account with DisCal
- Web Dashboard (WIP)
- Use the web dashboard to manage the bot, calendar, and more without the need for commands.
- Still very early in development
- Server Branding
- Hide the DisCal name in favor of using your server's name on announcements and embeds.
- Announcement Publishing
- Announcements posted in news channels can be (optionally) automatically "published" so servers following the news channel receive them as well!
- Gif support for event images
- Automatically assign roles to users when RSVPing to an event.
- Multiple calendars per server (WIP)
- Advanced announcement configuration (WIP)
- Complex recurring event configuration (WIP)
- Proper patreon integration for automated setup.
- Better translation support (Right now using the JSON files is really messy and hard to maintain)
- And so much more!
DisCal is primarily written in Java with a TypeScript powered web-frontend. We use the following technologies throughout the project:
- Discord4J API wrapper
- Project Reactor for fully reactive code
- SpringBoot web backend
- MySQL with Redis caching
DisCal was written for the community, and to aid in that goal, DisCal has a fully functioning REST API to allow developers to bring their applications to DisCal.
Current API Version: v2
To get an API token, please contact the development team.
DisCal is an open source project and is maintained in our free time. We always welcome and love contributions.
- Fork this repo and make changes in your own copy
- Write your code and add any new tests if applicable
- Run the new and/or existing tests with
mvn clean test
to make sure they pass - Commit your changes and push to your fork
git push origin master
- Create a new pull request and submit it back to us!
This section is a work in progress. Thank you for your understanding
DisCal reaches far and wide, and to help reach more people, we want to support fully localized text throughout the bot and website. To do that, we use a simple but robust system. If you are fluent in English and another language, we welcome your help in translating the bot's text. Below are instructions and the conventions we use to keep translations orderly and working.
We ask that you do not use services like Google Translate as the context of a sentence can be lost or misinterpreted by software causing confusion for non-english speakers. Thank you.
- Language files are located in
/core/src/main/resources/i18n/
- All file names follow the format
name_lang-code.properties
- For example, the Spanish common file would use
common_es.properties
- For example, the Spanish common file would use
- File contents is formatted as
key=value
wherekey
should not be modified - Variables are input as
{n}
wheren
is the zero-indexed order it is passed through in code.- In english, these are always in order
0, 1, 2... 5
. Some languages these may be out of order in order to maintain the correct variables in the correct place1, 0, 3, 2...5
. - If the english variant has a variable, the translated version must also have that somewhere in the string.
- In english, these are always in order
- First fork this repository.
- Then to translate a file, create a new file in the same folder as the english variant, following our conventions above. Then translate each of the value strings from the original english into the new language.
- Finally, once you have completed your additions, open a pull request and submit it to us!