Code Monkey home page Code Monkey logo

discal-discord-bot's Introduction

DisCal

Discord GitHub Workflow Status Website

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.

πŸ”— Quick Links

πŸ’Ž Core Features

  • 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

πŸŽ‰ Patron-Only Features

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.

πŸ“ Planned Features & Work in Progress Changes

  • 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!

πŸ“¦ Modules & Services

  • Core
    • The central inner workings shared across other modules
  • Server
    • The backend API responsible for network health monitoring and houses the RESTful API
  • Client
    • Does all the heavy lifting. This is the discord bot and runs a single shard per instance
  • Web
    • The official website. This houses all the frontend code and handles logging in with Discord for the Dashboard
  • C.A.M
    • The Central Authentication Manager. This service maintains the credentials for services used by DisCal

🧰 Technologies

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

βš™οΈ Developer RESTful API

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.

βœ’οΈ Contributing

DisCal is an open source project and is maintained in our free time. We always welcome and love contributions.

πŸ“š Code

  1. Fork this repo and make changes in your own copy
  2. Write your code and add any new tests if applicable
  3. Run the new and/or existing tests with mvn clean test to make sure they pass
  4. Commit your changes and push to your fork git push origin master
  5. Create a new pull request and submit it back to us!

πŸ—ΊοΈ Translations

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.

πŸ“– Conventions

  • 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
  • File contents is formatted as key=value where key should not be modified
  • Variables are input as {n} where n 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 place 1, 0, 3, 2...5.
    • If the english variant has a variable, the translated version must also have that somewhere in the string.

βœ’οΈ Adding Translations

  1. First fork this repository.
  2. 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.
  3. Finally, once you have completed your additions, open a pull request and submit it to us!

discal-discord-bot's People

Contributors

novafox161 avatar xaanit avatar codacy-badger avatar jlleitschuh avatar matthewwithanm avatar onyxgoldenbells avatar

Stargazers

Pavel Chekalov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.