Don't let the fear of the time it will take to accomplish something stand in the way of your doing it. The time will pass anyway; we might just as well put that passing time to the best possible use. - Earl Nightingale
ScheduleBot.mp4
ScheduleBot is a Python application that helps you calendarize events and work through a Discord bot. Want to try it out? Simply follow the steps outlined in the For Developers section. ScheduleBot can be configured to run on your Discord server by adding just one line of code!
With ScheduleBot you can quickly schedule events, state your prefered times for certain types of activities (exercise, homework, meetings, etc.) and quickly find out which times you have available to do more stuff.
To get a list of commands, DM the bot the command:
!help
The bot will reply back you with the list of available commands.
ScheduleBot's unit of work is the event. When you use ScheduleBot to organize your activities, it keeps track of your registered events. Each event consists of a period of time, comprised between a starting and ending date/time, event type, event priority and optional notes.
To schedule a new event, just DM the bot:
!schedule
The bot will ask you the details of your new event.
You can take a look at your events scheduled for a specfic date with the command:
!day today(or tomorrow\yesterday)
!day 3 (3 days from now)
!day -3 (3 days ago)
!day 4/20/22 (On Apr 20, 2022)
The bot will show you what you have scheduled for the date. This includes events that start before, or end after this date.
You can create custom event types to further organize your schedule. You can define your preferred times by creating a new event type:
!typecreate
The bot will ask you for the name of the type and your preferred times.
You can import or export their calendar events as a CSV file through the bot. You can also import ICS files downloaded from Google Calendar.
!exportfile
!importfile
Then drag the file to the Schedulebot.
ScheduleBot will help you find your free times. Just write:
!freetime
When you look for available times, you now can use !find
to find only the available times in your preferred hours.
Follow this tutorial to create your discord bot account.
To "login" to your bot through our program, place a file named config.py
in your src directory with the content:
TOKEN = ************(your discord bot token)
pip install -r requirements.txt
- Create a Project
- Setup Billing
- Enable geocoding API and distancematrix API
- Generate API key- Refer to this link for more information about the same.
- Store the API key in the following format-
File name: key.json
File Content:{"key": "your api key here"}
- Key needs to be stored in the json folder.
python3 schedulebot.py
Then your scheduleBot should start working.
- v1.1: First functional release
- v2.0: First version 2 release with import/export events function, find available time feature, also supports 24 hour time format and event priority.
- v2.1: Finalized version 2, check what's new in V2
- v3.0 Finalized version 3, check out what's new in V3
Please note that this is not an exhaustive list, however it does include all major improvements. For a complete list of all changes and bug fixes, please see our closed github issues or commit history.
The user can now import or export their calendar events as a CSV file through the bot. The user can also import ICS files downloaded from Google Calendar.
ScheduleBot can help you find available times for a type of event based on your schedule and preferred time for the event type.
Users can now assign a priority value for each event. This will help them keep track of important events. It also provides a foundation for future improvements, such as suggesting event removals based on the priority of events.
We support 24-hour time format input now, in addition to the 12-hour format.
User's data is now encrypted when it is stored in the host server, so the host will not be able to see other users' schedules as easily. This improves user's privacy when using Schedulebot.
Users are able to check the schedule for any specific day in addition to today. Previously, only the events occurring today could be retrieved by the user.
In this version, we improved the project's code coverage from 39% to 54%.
Code coverage remains low in this project because many sections of code require a Discord channel, and responses from a non-bot user through Discord. However, we were able to create a mock discord channel and user for several tests by using the "dpytest" library.
At startup, the bot now sends an on_ready welcome message to all servers the bot is currently listening to, instead of just one specific server. The bot also no longer attempts to respond to reactions to the welcome message made by itself or other bots.
!freetime function was not working under certain circumstances, such as when there was only one event in the schedule. This has been fixed in the latest version.
Thank you for caring for this project and getting involved. To start, please check out contributing and code of conduct. For more technical detail of implementation of code, you can check out the documentation. When you want to get your hands on the project, take a peek into the github project, assign yourself a task, move it to To-Do, and convert it into an issue and assign it to yourself.
Check out the internal documentation if you want to contribute or find out about the inner workings of ScheduleBot.
Following are the new features that we have implemented for version 3 :
We have added the functionality to connect the account to google calendar
We are now storing the location data of the events
The bot adds a separate event to block of travel time to an event
User can delete events from their schedule
Ability to view the daily summary of events
For this version, we have improved the project's code coverage from 54% to 65%.
User can check their next 10 events in the google calendar
These are example features that could be added to ScheduleBot in the future.
You can quickly create a new event with the command
!schedulefind type X
It will find and schedule the first available X contiguous hours, on your preferred hours of the specified type
.
When Your entire day is scheduled You have event 1 of priority 4 You try to find time for another event of priority 3 ScheduleBot should say there is no time, but can suggest replacing event 1 as it has less priority.
You can edit the event you created:
!eventedit