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!
As a calendar bot, DisCal reaches global use, and because of this , Discal allows users to select the language they wish to use.
If you are able to speak two languages (English and another language) we welcome you to translate the bot to that language!
For instructions on how to translate DisCal, continue reading below.
Do note however, that we are planning on making the translation system much more powerful and easier to maintain and contribute to in the future.
Follow the format provided in the TEMPLATE LANGUAGE JSON File. and submit a new translation by making adding a new JSON file with the naming scheme LANG_NAME.json
(Where "LANG_NAME" is the name of the language you translated it to).
We very much appreciate all of the translations we can get, but please follow the guidelines below so that we may ensure that we have high quality translations.
- Please be fluent in the language you are translating to. We will NOT accept any translations that are made through Google Translate as it cannot tell statement context and we want to maintain high standards for the bot.
- The general JSON format is
"key": "value"
, which means that the "key" must remain the same in all files, so DO NOT change the key, only the values. - In many files
%value%
or something similar is seen. These are replacement variables and will never be seen by the user. DO NOT CHANGE THE REPLACERS! - At the beginning of the file, you will see
"Language: "LANG_NAME_HERE"
Please changeLANG_NAME_HERE
to the language you are translating the file to! - Please run your translated language file through this Online JSON Parser If you cannot do that, the development team will.
- Contact the development team in our Discord guild for any additional help or info.