diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 2e35a6b..ad73195 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -15,19 +15,20 @@ jobs: steps: - uses: actions/checkout@main - - uses: codecov/codecov-action@v2 + - uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} - name: Generate coverage report - run: | - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - pip install pytest - pip install pytest-cov - export PYTHONPATH=src - pytest --cov=./ --cov-report=xml + run:| + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + pip install pytest + pip install pytest-cov + export PYTHONPATH=src + pytest --cov=./ --cov-report=xml + - name: Upload coverage to Codecov - uses: codecov/codecov-action@v2 + uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} directory: ./coverage/reports/ diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml index 2c1ade1..a4a8695 100644 --- a/.github/workflows/pylint.yml +++ b/.github/workflows/pylint.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9"] + python-version: ["3.11"] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 65f7753..dbe4fff 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up Python 3.9 + - name: Set up Python 3.11 uses: actions/setup-python@v2 with: - python-version: 3.9 + python-version: 3.11 - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/.gitignore b/.gitignore index a5d1129..17bd44f 100644 --- a/.gitignore +++ b/.gitignore @@ -143,3 +143,4 @@ schedulebot\ copy.py # .gitignore config.py +apifile.txt diff --git a/Project 2/Readme.md b/Project 2/Readme.md new file mode 100644 index 0000000..2f86c9a --- /dev/null +++ b/Project 2/Readme.md @@ -0,0 +1,5 @@ +#Youtube video link +https://youtu.be/crmKjaHUw_E + +Group No: 6 + diff --git a/Project 2/SE Proj2 Rubrics.csv b/Project 2/SE Proj2 Rubrics.csv new file mode 100644 index 0000000..afa2c5a --- /dev/null +++ b/Project 2/SE Proj2 Rubrics.csv @@ -0,0 +1,160 @@ +"For each items, score yourself zero (none), one (a litte), two (somewhat), three (a lot).",,, +,,, +S.No.,Items,Self-Assessment,Evidence +,Total points in rubric,90, +,Total points after assessment,73, +1,Video,3,The Version 4 submission video was detailed and made it easy for us to follow the steps. +,,,Version 4 video +,,, +,,, +,,,The 4 min video of new functionality shows a significant delta from prior. +2,Workload is spread over the whole team (one team member is often X times more productive than the others,2,Contributors +,,, +,,,Although this is not an accurate estimate of the workload distribution. +3,"But nevertheless, here is a track record that everyone is contributing a lot)",2,Contributors +,,, +,,,Although this is not an accurate estimate of the workload distribution. +4,Number of Commits,3,Total Number of Commits - 626 +5,Number of Commits: by different people,2,Apoorva Iyer - 8 +,,,Sai Charitha - 12 +,,,Snigdha Kotharu - 10 +,,,Yashwanth Tanguturi - 6 +,,, +,,,Command:git shortlog -sn --all +6,Issues reports: there are many,2,0- total number of issues. +7,Issues are being closed,2,6 - closed issues +8,DOI Badge: exists,3,README +,,,Zenodo +9,"Docs: doco generated, format not ugly",3,Docs +10,Docs: what: point descriptions of each class/function (in isolation),3,Functionality +,,,Function Description +,,, +,,,Each class/function is distinctly organized and made easy to understand. +11,"Docs: how: for common use cases X,Y,Z mini-tutorials showing worked examples on how to do X,Y,Z",3,Mini-tutorials +,,, +,,,Each possible use case has been demonstrated and properly documented. +12,"Docs: why: docs tell a story, motivate the whole thing, deliver a punchline that makes you want to rush and use the thing",3,Version 4 video +,,, +,,,"Elaborate documentation,  detailed explanation of the functionality and how to use the bot has made it easy to understand and utilize it to its full capacity." +13,"Docs: short video, animated, hosted on your repo. That convinces people why they want to work on your code.",2,README +,,, +,,,"The documentation, along with a detailed description of the project, has a version 3 submission video and an animated video that made us want to take on this project immediately. " +,,, +,,,"The project is already well executed, but there’s a lot of scope for improvement. " +14,Use of version control tools,3,Version Control +,,, +,,,Each release has been properly documented. +15,Use of style checkers,2,Style Checkers +16,Use of code formatters,2,"There’s no direct evidence on Github. But, they would have most probably used Prettier in VS Code." +17,Use of syntax checkers,3,Syntax Checkers +18,Use of code coverage,1,Code Coverage +19,Other automated analysis tools,1,Workflows +20,Test cases exist,3,Test Cases +21,Test cases are routinely executed,1,GitHub Actions +22,The files CONTRIBUTING.md lists coding standards and lots of tips on how to extend the system without screwing things up,3,Contributiing.md +23,Issues are discussed before they are closed,2,Discussions +,,,Few discussions shown on the repository. +24,Chat channel: exists,3,Discussions Chat seen on the repository. +25,Test cases: a large proportion of the issues related to handling failing cases.,3,Issues +,,,There are closed issues whic are handled +26,Evidence that the whole team is using the same tools: everyone can get to all tools and files,3,Requirements +27,"Evidence that the whole team is using the same tools (e.g. config files in the repo, updated by lots of different people)",3,Requirements +28,"Evidence that the whole team is using the same tools (e.g. tutor can ask anyone to share screen, they demonstrate the system running on their computer)",3,Requirements +,,, +,,,There is no proof that everyone would be able to run it on their systems. +29,Evidence that the members of the team are working across multiple places in the code base,2,Commits +30,Short release cycles,2,Commits +,,,Release +,Total items in sustainability evaluation,71, +,Q1 - What your software does,, +Q1.1,"Does your website and documentation provide a clear, high-level overview of your software?",Yes, +Q1.2,Does your website and documentation clearly describe the type of user who should use your software?,Yes, +Q1.3,Do you publish case studies to show how your software has been used by yourself and others?,Yes, +,Q2 - Your project's and software's identity,, +Q2.1,Is the name of your project/software unique?,No, +Q2.2,Is your project/software name free from trademark violations?,Yes, +,Q3 - Availability of your software,, +Q3.1,Is your software available as a package that can be deployed without building it?,No, +Q3.2,Is your software available for free?,Yes, +Q3.3,"Is your source code publicly available to download, either as a downloadable bundle or via access to a source code repository?",Yes, +Q3.4,"Is your software hosted in an established, third-party repository likeGitHub (https://github.com), BitBucket (https://bitbucket.org),LaunchPad (https://launchpad.net) orSourceForge (https://sourceforge.net)?",Yes, +,Q4 - Your software's documentation,, +Q4.1,Is your documentation clearly available on your website or within your software?,Yes, +Q4.2,"Does your documentation include a ""quick start"" guide, that provides a short overview of how to use your software with some basic examples of use?",Yes, +Q4.3,"If you provide more extensive documentation, does this provide clear, step-by-step instructions on how to deploy and use your software?",Yes, +Q4.4,"Do you provide a comprehensive guide to all your software’s commands, functions and options?",Yes, +Q4.5,Do you provide troubleshooting information that describes the symptoms and step-by-step solutions for problems and error messages?,No, +Q4.6,"If your software can be used as a library, package or service by other software, do you provide comprehensive API documentation?",Not Applicable, +Q4.7,Do you store your documentation under revision control with your source code?,No, +Q4.8,"Do you publish your release history e.g. release data, version numbers, key features of each release etc. on your web site or in your documentation?",Yes, +,Q5 - How you support your software,, +Q5.1,Does your software describe how a user can get help with using your software?,Yes, +Q5.2,"Does your website and documentation describe what support, if any, you provide to users and developers?",Yes, +Q5.3,Does your project have an e-mail address or forum that is solely for supporting users?,No, +Q5.4,Are e-mails to your support e-mail address received by more than one person?,Not Applicable, +Q5.5,Does your project have a ticketing system to manage bug reports and feature requests?,No, +Q5.6,"Is your project's ticketing system publicly visible to your users, so they can view bug reports and feature requests?",Not Applicable, +,Q6 - Your software's maintainability,, +Q6.1,Is your software’s architecture and design modular?,Yes, +Q6.2,Does your software use an accepted coding standard or convention?,Yes, +,Q7 - Open standards and your software,, +Q7.1,Does your software allow data to be imported and exported using open data formats?,Yes, +,"e.g. GIF, SVG, HTML, XML, tar, zip, CSV, JSON, NetCDF, or domain specific ones",, +Q7.2,Does your software allow communications using open communications protocols?,Yes, +,"e.g. HTTP, FTP, XMPP, SOAP over HTTP,  or domain-specific ones",, +,Q8 - Your software's portability,, +Q8.1,Is your software cross-platform compatible?,Yes, +,"e.g. does it run under two or more of Windows, Unix/Linux and Mac OS X, or can be used from within two or more of Internet Explorer, Chrome, Firefox and Safari?",, +,Q9 - Your software and accessibility,, +Q9.1,Does your software adhere to appropriate accessibility conventions or standards?,No, +Q9.2,Does your documentation adhere to appropriate accessibility conventions or standards?,No, +,Q10 - How you manage your source code,, +Q10.1,Is your source code stored in a repository under revision control?,Yes, +Q10.2,Is each source code release a snapshot of the repository?,Yes, +Q10.3,Are releases tagged in the repository?,Yes, +Q10.4,"Is there a branch of the repository that is always stable? (i.e. tests always pass, code always builds successfully)",Yes, +Q10.5,Do you back-up your repository?,No, +  ,Q11 - Building and installing your software,, +Q11.1,Do you provide publicly-available instructions for building your software from the source code?,Yes, +Q11.2,"Can you build, or package, your software using an automated tool?*",No, +,"e.g. Make (https://www.gnu.org/software/make/), ANT (http://ant.apache.org/), Maven (https://maven.apache.org/), CMake (https://cmake.org/), Python setuptools (https://pypi.python.org/pypi/setuptools), or R package tools (https://cran.r-project.org/doc/manuals/r-devel/R-exts.html)",, +11.3,Do you provide publicly-available instructions for deploying your software?,No, +11.4,Does your documentation list all third-party dependencies?,Yes, +11.5,Does your documentation list the version number for all third-party dependencies?,Yes, +11.6 ,"Does your software list the web address, and licences for all third-party dependencies and say whether the dependencies are mandatory or or optional?",No, +11.7 ,Can you download dependencies using a dependency management tool or package manager?*,Yes, +,"e.g. Ivy (http://ant.apache.org/ivy/), Maven (https://maven.apache.org/), Python pip (https://pypi.python.org/pypi/pip) or setuptools (https://pypi.python.org/pypi/setuptools), PHP Composer (https://getcomposer.org/), Ruby gems (https://rubygems.org), or R PackRat (https://rstudio.github.io/packrat/)",, +11.8 ,Do you have tests that can be run after your software has been built or deployed to show whether the build or deployment has been successful?,Yes, +,Q12 - How you test your software,, +12.1,Do you have an automated test suite for your software?,Yes, +12.2,Do you have a framework to periodically (e.g. nightly) run your tests on the latest version of the source code?,No, +12.3,"Do you use continuous integration, automatically running tests whenever changes are made to your source code?",Yes, +12.4,Are your test results publicly visible?,Yes, +12.5,Are all manually-run tests documented?,Yes, +,Q13 - How you engage with your community,, +13.1 ,"Does your project have resources (e.g. blog, Twitter, RSS feed, Facebook page, wiki, mailing list) that are regularly updated with information about your software?",No, +,"e.g. release announcements, publications, workshops, conference presentations",, +13.2, Does your website state how many projects and users are associated with your project?,No, +13.3 ,Do you provide success stories on your website?,No, +13.4) ,Do you list your important partners and collaborators on your website?,Not Applicable, +13.5 ,Do you list your project's publications on your website or link to a resource where these are available?,No, +13.6,Do you list third-party publications that refer to your software on your website or link to a resource where these are available?,No, +13.7,Can users subscribe to notifications to changes to your source code repository?,Yes, +13.8 ,"If your software is developed as an open source project (and, not just a project developing open source software), do you have a governance model?",No, +,Q14 - How you manage contributions,, +14.1,"Do you accept contributions (e.g. bug fixes, enhancements, documentation updates, tutorials) from people who are not part of your project?",Yes, +14.2,Do you have a contributions policy?,Yes, +14.3,Is your contributions' policy publicly available?,Yes, +14.4 ,Do contributors keep the copyright/IP of their contributions?,Yes, +,Q15 - Your software's copyright and licensing,, +15.1 ,Does your website and documentation clearly state the copyright owners of your software and documentation?,Yes, +15.2, Does each of your source code files include a copyright statement?,No, +15.3,Does your website and documentation clearly state the license of your software?,Yes, +15.4,Is your software released under an open source license?,Yes, +15.5 ,Is your software released under an OSI-approved open-source license?,Yes, +15.6,Does each of your source code files include a license header?,No, +15.7 ,Do you have a recommended citation for your software?,Yes, +,Q16 - Your plans for the future,, +16.1,"Does your website or documentation include a project roadmap (a list of project and development milestones for the next 3, 6 and 12 months)?",Yes, +16.2,"Does your website or documentation describe how your project is funded, and the period over which funding is guaranteed?",No, +16.3 ,"Do you make timely announcements of the deprecation of components, APIs, etc.?",No, diff --git a/README.md b/README.md index d59d418..fb7b01d 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,19 @@ ![Python v3.9](https://img.shields.io/badge/python-v3.9-blue) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![DOI](https://zenodo.org/badge/429946635.svg)](https://zenodo.org/badge/latestdoi/429946635) -![example workflow](https://github.com/SEProjGrp5/ScheduleBot/actions/workflows/python-app.yml/badge.svg) -![example workflow](https://github.com/SEProjGrp5/ScheduleBot/actions/workflows/style_checker.yml/badge.svg) +[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.10023646.svg)](https://doi.org/10.5281/zenodo.10023646) +![example workflow](https://github.com/A1231/SEProjGrp6-ScheduleBot/actions/workflows/style_checker.yml/badge.svg) ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/qchen59/ScheduleBot) -[![GitHub issues](https://img.shields.io/github/issues/SEProjGrp5/ScheduleBot)](https://github.com/SEProjGrp5/ScheduleBot/issues) -[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/SEProjGrp5/ScheduleBot?display_name=release)](https://github.com/SEProjGrp5/ScheduleBot/releases) +![GitHub issues](https://img.shields.io/github/issues/A1231/SEProjGrp6-ScheduleBot) +![GitHub commit activity (branch)](https://img.shields.io/github/commit-activity/t/A1231/SEProjGrp6-ScheduleBot) +![GitHub top language](https://img.shields.io/github/languages/top/A1231/SEProjGrp6-ScheduleBot) +![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/A1231/SEProjGrp6-ScheduleBot) +![GitHub release (with filter)](https://img.shields.io/github/v/release/A1231/SEProjGrp6-ScheduleBot) [![GitHub all releases](https://img.shields.io/github/downloads/SEProjGrp5/ScheduleBot/total)](https://github.com/SEProjGrp5/ScheduleBot/releases) [![Platform](https://img.shields.io/badge/platform-discord-blue)](https://discord.com/) [![codecov](https://codecov.io/gh/SEProjGrp5/ScheduleBot/branch/main/graph/badge.svg?token=Z53J2ZN227)](https://codecov.io/gh/SEProjGrp5/ScheduleBot) - + + # ScheduleBot @@ -22,23 +25,19 @@ :: For Developers :: - Features in V2 - :: - What's new in V3 + What's new in V4 (Our addition to the project!)

-### Version 3 Submission Video +### Version 4 Submission Video Click on the image below to check out the video! -[![IMAGE ALT TEXT](http://img.youtube.com/vi/3UVs0_7Tcxk/0.jpg)](http://www.youtube.com/watch?v=3UVs0_7Tcxk "ScheduleBot CSC 510 Project Group 5 NSCU") +[![IMAGE ALT TEXT](http://img.youtube.com/vi/3UVs0_7Tcxk/0.jpg)](https://youtu.be/crmKjaHUw_E "CSC 510 Project Group 6 - FALL 2023 Project 2") 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](#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. -https://user-images.githubusercontent.com/34405372/139776326-722e8526-4977-4ffd-b00e-c86a8fd5f706.mp4 - :rocket: Getting started --- @@ -50,7 +49,7 @@ To get a list of commands, DM the bot the command: The bot will reply back you with the list of available commands. -Screen Shot 2021-11-03 at 10 15 04 PM +Screen Shot 2021-11-03 at 10 15 04 PM ### **Scheduling an event** @@ -64,8 +63,8 @@ To schedule a new event, just DM the bot: ``` The bot will ask you the details of your new event. +Screen Shot 2021-11-03 at 10 15 04 PM -![Schedule](docs/img/!schedul.gif) ### **I forgot my agenda for the day** @@ -91,17 +90,7 @@ The bot will show you what you have scheduled for the date. This includes events ![Day](docs/img/!day.gif) -### **I don't really want to work at 3 a.m.** - -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. - -![Type Create](docs/img/Type%20Create.gif) ### Import & Export your calendar @@ -119,19 +108,20 @@ Then drag the file to the Schedulebot. ![Import file](docs/img/!import.gif) -### Looking for the spare time? +### Looking for an event summary or want to know when you are free? ScheduleBot will help you find your free times. Just write: ``` !freetime ``` -![Freetime](docs/img/!freetime.gif) +To look for event summary: +``` +!summary +``` +Screen Shot 2021-11-03 at 10 15 04 PM -### Find available times for a type of event -When you look for available times, you now can use `!find` to find only the available times in your preferred hours. -![Find Available times](docs/img/find.gif) :thought_balloon: For Developers --- @@ -177,6 +167,8 @@ When you look for available times, you now can use `!find` to find only the avai - [v2.0](https://github.com/qchen59/ScheduleBot/releases/tag/v2.0.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](https://github.com/qchen59/ScheduleBot/releases/tag/v2.1.0): Finalized version 2, check what's new in V2 - [v3.0](https://github.com/SEProjGrp5/ScheduleBot/releases) Finalized version 3, check out what's new in V3 +- [v4.0](https://github.com/A1231/SEProjGrp6-ScheduleBot/releases) Finalized version 4, check out what's new in V4! + :dizzy: Features in V2: --- @@ -227,12 +219,13 @@ Thank you for caring for this project and getting involved. To start, please che Check out the [internal documentation](https://htmlpreview.github.io/?https://github.com/qchen59/ScheduleBot/blob/main/docs/src/index.html) if you want to contribute or find out about the inner workings of ScheduleBot. -:muscle: What's new in V3: +:muscle: Features in V3: --- Following are the new features that we have implemented for version 3 : #### 1. Connection to Google: We have added the functionality to connect the account to google calendar +As and when we create events on discord those events get scheduled in your google calender. https://user-images.githubusercontent.com/89954066/144730436-29f74af7-36f2-45d0-a8c1-e19b5271b584.mp4 @@ -277,24 +270,71 @@ https://user-images.githubusercontent.com/89954066/144730470-7700507e-b2e9-4175- -## Future features -These are example features that could be added to ScheduleBot in the future. +:sparkles: What's new in V4: +--- +Following are the new features that we have implemented for version 4 : + +#### 1. Adding events to Google Calendar directly from discord: +So far, !GoogleEvents command imports the events from Google Calendar to your discord. We have been able to add new events directly from the discord terminal to the user's google calendar. The bot returns the google calendar link once the event is successfully created. The user can then view their events on their google calendars. + +Screen Shot 2021-11-03 at 10 15 04 PM + + +Screen Shot 2021-11-03 at 10 15 04 PM + + + + + +#### 2. Sending Reminders for events created: +Want to be reminded before each event? Don't worry! Schedule Bot's here for the rescue. We have added an option for google to send reminders to the user through popup message five minutes before the event start time and an email an hour before the event start time. + + +Screen Shot 2021-11-03 at 10 15 04 PM + -### Quick event creation +Screen Shot 2021-11-03 at 10 15 04 PM -You can quickly create a new event with the command + + + + +#### 3. Displaying the weather for the day along with the day's events: +Get each day's weather and temperature information along with the list of events you planned for the day. +The Bot displays weather conditions in the event location (for each event) on a particular day when user types in the command to view summary of the events scheduled for that day. +Type in the following command for the weather to be displayed: ``` -!schedulefind type X +!day today ``` +Screen Shot 2021-11-03 at 10 15 04 PM + +#### 4. Fixed the bug caused by the delete event command: +On executing the !deleteEvent command, the bot kept sending multiple "event does not exist" messages, even though the event does exist. That bug has been fixed in this version! + +Following was the issue: + -It will find and schedule the first available X contiguous hours, on your preferred hours of the specified `type`. +Screen Shot 2021-11-03 at 10 15 04 PM -### Suggest event removals -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. + +Once the issue got resolved: + + +Screen Shot 2021-11-03 at 10 15 04 PM + + + +## Here are some ideas for the future collaborators +These are example features that could be added to ScheduleBot in the future. + +### Weather for the next 3 days + +Currently weather is shown for a particular day. It can be shown for the next few days too. + + +### Adding a Google Maps link for travel +When the user blocks out time for travel from one place to another, along with calculating the distance and time required to travel, the bot can send a Google Maps link to help the user navigate. ### Edit event You can edit the event you created: @@ -303,14 +343,20 @@ You can edit the event you created: !eventedit ``` -### Merge Discord events with Google Calendar -Try to create a functionality to merge discord events with google calender. +### Deleting the event from Google Calendar, once it gets deleted from discord +Currently, the events can be deleted on discord. What can be added is, getting them to be deleted from Google Calendar too. + + +## Collaborators +Apoorva Iyer + + +Sai Challa Charitha + + +Snigdha Kotharu + -### Replace the current csv format for storing events with Google Calendar -As of now, the events are stired in a csv format. In the future implementation ,a functionality can be added to store the events in Google Calendar. +Yashwanth Tanguturi -### Edit google events -In this project, you can edit the events from discord. For future implemetation, a new functionalty can be created to edit events directly from Google Calendar. -### Add a "How to do" documentation for discord connection -Help user understand the process of adding the Discord bot to their server. diff --git a/docs/img/Delete1.png b/docs/img/Delete1.png new file mode 100644 index 0000000..e18726d Binary files /dev/null and b/docs/img/Delete1.png differ diff --git a/docs/img/Delete2.png b/docs/img/Delete2.png new file mode 100644 index 0000000..07945c4 Binary files /dev/null and b/docs/img/Delete2.png differ diff --git a/docs/img/EventCreated.png b/docs/img/EventCreated.png new file mode 100644 index 0000000..349fb24 Binary files /dev/null and b/docs/img/EventCreated.png differ diff --git a/docs/img/Freetime.png b/docs/img/Freetime.png new file mode 100644 index 0000000..d55bb0e Binary files /dev/null and b/docs/img/Freetime.png differ diff --git a/docs/img/GCalReminder.png b/docs/img/GCalReminder.png new file mode 100644 index 0000000..afa5509 Binary files /dev/null and b/docs/img/GCalReminder.png differ diff --git a/docs/img/Googlecalendar.png b/docs/img/Googlecalendar.png new file mode 100644 index 0000000..964ced0 Binary files /dev/null and b/docs/img/Googlecalendar.png differ diff --git a/docs/img/Reminder.png b/docs/img/Reminder.png new file mode 100644 index 0000000..2ba23af Binary files /dev/null and b/docs/img/Reminder.png differ diff --git a/docs/img/Weather.png b/docs/img/Weather.png new file mode 100644 index 0000000..4e1321d Binary files /dev/null and b/docs/img/Weather.png differ diff --git a/docs/img/help cmnd.png b/docs/img/help cmnd.png new file mode 100644 index 0000000..09ac0ba Binary files /dev/null and b/docs/img/help cmnd.png differ diff --git a/docs/img/schedule.png b/docs/img/schedule.png new file mode 100644 index 0000000..2fafb06 Binary files /dev/null and b/docs/img/schedule.png differ diff --git a/docs/proj1rubric.csv b/docs/proj1rubric.csv new file mode 100644 index 0000000..84c9256 --- /dev/null +++ b/docs/proj1rubric.csv @@ -0,0 +1,162 @@ +,,, +,,, +S.No.,Items,Self-Assessment,Evidence +,Total points in rubric,90, +,Total points after assessment,66, +1,Video,3,"The Version 3 submission video was detailed and made it easy for us to follow the steps. +Version 3 video + + +The 2 min video of new functionality shows a significant delta from prior." +2,Workload is spread over the whole team (one team member is often X times more productive than the others,2,"Contributors + +Although this is not an accurate estimate of the workload distribution." +3,"But nevertheless, here is a track record that everyone is contributing a lot)",2,"Contributors + +Although this is not an accurate estimate of the workload distribution." +4,Number of Commits,3,Total Number of Commits - 585 +5,Number of Commits: by different people,2,"27 - Anant Gadodia + 20 - AnmolikaGoyal + 14 - Shubhangi Jain + 10 - Srujana Rao + + +Command:git shortlog -sn --all" +6,Issues reports: there are many,2,17- total number of issues. +7,Issues are being closed,2,10 - closed issues +8,DOI Badge: exists,3,"README +Zenodo" +9,"Docs: doco generated, format not ugly",3,Docs +10,Docs: what: point descriptions of each class/function (in isolation),3,"Functionality +Function Description + +Each class/function is distinctly organized and made easy to understand." +11,"Docs: how: for common use cases X,Y,Z mini-tutorials showing worked examples on how to do X,Y,Z",3,"Mini-tutorials + +Each possible use case has been demonstrated and properly documented." +12,"Docs: why: docs tell a story, motivate the whole thing, deliver a punchline that makes you want to rush and use the thing",3,"Version 3 video + +Elaborate documentation, detailed explanation of the functionality and how to use the bot has made it easy to understand and utilize it to its full capacity." +13,"Docs: short video, animated, hosted on your repo. That convinces people why they want to work on your code.",2,"README + +The documentation, along with a detailed description of the project, has a version 3 submission video and an animated video that made us want to take on this project immediately. + +The project is already well executed, but there’s a lot of scope for improvement." +14,Use of version control tools,3,"Version Control + +Each release has been properly documented." +15,Use of style checkers,2,Style Checkers +16,Use of code formatters,2,"There’s no direct evidence on Github. But, they would have most probably used Prettier in VS Code." +17,Use of syntax checkers,3,Syntax Checkers +18,Use of code coverage,1,Code Coverage +19,Other automated analysis tools,1,Workflows +20,Test cases exist,3,Test Cases +21,Test cases are routinely executed,1,GitHub Actions +22,The files CONTRIBUTING.md lists coding standards and lots of tips on how to extend the system without screwing things up,3,Contributiing.md +23,Issues are discussed before they are closed,0,"Discussions +No discussions shown on the repository." +24,Chat channel: exists,0,"Discussions +Do not see any chat channel on the repository." +25,Test cases: a large proportion of the issues related to handling failing cases.,1,"Issues +There aren’t many closed issues centered around handling failing cases." +26,Evidence that the whole team is using the same tools: everyone can get to all tools and files,3,Requirements +27,"Evidence that the whole team is using the same tools (e.g. config files in the repo, updated by lots of different people)",3,Requirements +28,"Evidence that the whole team is using the same tools (e.g. tutor can ask anyone to share screen, they demonstrate the system running on their computer)",3,"Requirements + +There is no proof that everyone would be able to run it on their systems." +29,Evidence that the members of the team are working across multiple places in the code base,2,Commits +30,Short release cycles,2,"Commits +Release" +,Total items in sustainability evaluation,71, +,Q1 - What your software does,, +Q1.1,"Does your website and documentation provide a clear, high-level overview of your software?",Yes, +Q1.2,Does your website and documentation clearly describe the type of user who should use your software?,Yes, +Q1.3,Do you publish case studies to show how your software has been used by yourself and others?,Yes, +,Q2 - Your project's and software's identity,, +Q2.1,Is the name of your project/software unique?,No, +Q2.2,Is your project/software name free from trademark violations?,Yes, +,Q3 - Availability of your software,, +Q3.1,Is your software available as a package that can be deployed without building it?,No, +Q3.2,Is your software available for free?,Yes, +Q3.3,"Is your source code publicly available to download, either as a downloadable bundle or via access to a source code repository?",Yes, +Q3.4,"Is your software hosted in an established, third-party repository likeGitHub (https://github.com), BitBucket (https://bitbucket.org),LaunchPad (https://launchpad.net) orSourceForge (https://sourceforge.net)?",Yes, +,Q4 - Your software's documentation,, +Q4.1,Is your documentation clearly available on your website or within your software?,Yes, +Q4.2,"Does your documentation include a ""quick start"" guide, that provides a short overview of how to use your software with some basic examples of use?",Yes, +Q4.3,"If you provide more extensive documentation, does this provide clear, step-by-step instructions on how to deploy and use your software?",Yes, +Q4.4,"Do you provide a comprehensive guide to all your software’s commands, functions and options?",Yes, +Q4.5,Do you provide troubleshooting information that describes the symptoms and step-by-step solutions for problems and error messages?,No, +Q4.6,"If your software can be used as a library, package or service by other software, do you provide comprehensive API documentation?",Not Applicable, +Q4.7,Do you store your documentation under revision control with your source code?,No, +Q4.8,"Do you publish your release history e.g. release data, version numbers, key features of each release etc. on your web site or in your documentation?",Yes, +,Q5 - How you support your software,, +Q5.1,Does your software describe how a user can get help with using your software?,Yes, +Q5.2,"Does your website and documentation describe what support, if any, you provide to users and developers?",Yes, +Q5.3,Does your project have an e-mail address or forum that is solely for supporting users?,No, +Q5.4,Are e-mails to your support e-mail address received by more than one person?,Not Applicable, +Q5.5,Does your project have a ticketing system to manage bug reports and feature requests?,No, +Q5.6,"Is your project's ticketing system publicly visible to your users, so they can view bug reports and feature requests?",Not Applicable, +,Q6 - Your software's maintainability,, +Q6.1,Is your software’s architecture and design modular?,Yes, +Q6.2,Does your software use an accepted coding standard or convention?,Yes, +,Q7 - Open standards and your software,, +Q7.1,"Does your software allow data to be imported and exported using open data formats? +e.g. GIF, SVG, HTML, XML, tar, zip, CSV, JSON, NetCDF, or domain specific ones",Yes, +Q7.2,"Does your software allow communications using open communications protocols? +e.g. HTTP, FTP, XMPP, SOAP over HTTP, or domain-specific ones",Yes, +,Q8 - Your software's portability,, +Q8.1,"Is your software cross-platform compatible? +e.g. does it run under two or more of Windows, Unix/Linux and Mac OS X, or can be used from within two or more of Internet Explorer, Chrome, Firefox and Safari?",Yes, +,Q9 - Your software and accessibility,, +Q9.1,Does your software adhere to appropriate accessibility conventions or standards?,No, +Q9.2,Does your documentation adhere to appropriate accessibility conventions or standards?,No, +,Q10 - How you manage your source code,, +Q10.1,Is your source code stored in a repository under revision control?,Yes, +Q10.2,Is each source code release a snapshot of the repository?,Yes, +Q10.3,Are releases tagged in the repository?,Yes, +Q10.4,"Is there a branch of the repository that is always stable? (i.e. tests always pass, code always builds successfully)",Yes, +Q10.5,Do you back-up your repository?,No, +,Q11 - Building and installing your software,, +Q11.1,Do you provide publicly-available instructions for building your software from the source code?,Yes, +Q11.2,"Can you build, or package, your software using an automated tool?* +e.g. Make (https://www.gnu.org/software/make/), ANT (http://ant.apache.org/), Maven (https://maven.apache.org/), CMake (https://cmake.org/), Python setuptools (https://pypi.python.org/pypi/setuptools), or R package tools (https://cran.r-project.org/doc/manuals/r-devel/R-exts.html)",No, +11.3,Do you provide publicly-available instructions for deploying your software?,No, +11.4,Does your documentation list all third-party dependencies?,Yes, +11.5,Does your documentation list the version number for all third-party dependencies?,Yes, +11.6,"Does your software list the web address, and licences for all third-party dependencies and say whether the dependencies are mandatory or or optional?",No, +11.7,"Can you download dependencies using a dependency management tool or package manager?* +e.g. Ivy (http://ant.apache.org/ivy/), Maven (https://maven.apache.org/), Python pip (https://pypi.python.org/pypi/pip) or setuptools (https://pypi.python.org/pypi/setuptools), PHP Composer (https://getcomposer.org/), Ruby gems (https://rubygems.org), or R PackRat (https://rstudio.github.io/packrat/)",Yes, +11.8,Do you have tests that can be run after your software has been built or deployed to show whether the build or deployment has been successful?,Yes, +,Q12 - How you test your software,, +12.1,Do you have an automated test suite for your software?,Yes, +12.2,Do you have a framework to periodically (e.g. nightly) run your tests on the latest version of the source code?,No, +12.3,"Do you use continuous integration, automatically running tests whenever changes are made to your source code?",Yes, +12.4,Are your test results publicly visible?,Yes, +12.5,Are all manually-run tests documented?,Yes, +,Q13 - How you engage with your community,, +13.1,"Does your project have resources (e.g. blog, Twitter, RSS feed, Facebook page, wiki, mailing list) that are regularly updated with information about your software? +e.g. release announcements, publications, workshops, conference presentations",No, +13.2,Does your website state how many projects and users are associated with your project?,No, +13.3,Do you provide success stories on your website?,No, +13.4),Do you list your important partners and collaborators on your website?,Not Applicable, +13.5,Do you list your project's publications on your website or link to a resource where these are available?,No, +13.6,Do you list third-party publications that refer to your software on your website or link to a resource where these are available?,No, +13.7,Can users subscribe to notifications to changes to your source code repository?,Yes, +13.8,"If your software is developed as an open source project (and, not just a project developing open source software), do you have a governance model?",No, +,Q14 - How you manage contributions,, +14.1,"Do you accept contributions (e.g. bug fixes, enhancements, documentation updates, tutorials) from people who are not part of your project?",Yes, +14.2,Do you have a contributions policy?,Yes, +14.3,Is your contributions' policy publicly available?,Yes, +14.4,Do contributors keep the copyright/IP of their contributions?,Yes, +,Q15 - Your software's copyright and licensing,, +15.1,Does your website and documentation clearly state the copyright owners of your software and documentation?,Yes, +15.2,Does each of your source code files include a copyright statement?,No, +15.3,Does your website and documentation clearly state the license of your software?,Yes, +15.4,Is your software released under an open source license?,Yes, +15.5,Is your software released under an OSI-approved open-source license?,Yes, +15.6,Does each of your source code files include a license header?,No, +15.7,Do you have a recommended citation for your software?,Yes, +,Q16 - Your plans for the future,, +16.1,"Does your website or documentation include a project roadmap (a list of project and development milestones for the next 3, 6 and 12 months)?",Yes, +16.2,"Does your website or documentation describe how your project is funded, and the period over which funding is guaranteed?",No, +16.3,"Do you make timely announcements of the deprecation of components, APIs, etc.?",No, diff --git a/docs/proj1rubric.md b/docs/proj1rubric.md deleted file mode 100644 index 3c80f4c..0000000 --- a/docs/proj1rubric.md +++ /dev/null @@ -1,104 +0,0 @@ -| | Item | Self-Score | Evidence -| ---- | ---- | ----: | ---- | -| | Total of items overall | 201 | | -| | Total of items in [rubic](https://github.com/txt/se21/blob/master/docs/proj1rubric.md) | 73 | | -| 1 | Workload is spread over the whole team (one team member is often Xtimes more productive than the others... | 2 | [GitHub contributions](https://github.com/lyonva/ScheduleBot/graphs/contributors), although this is not the entire story. | -| 2 | but nevertheless, here is a track record that everyone is contributing a lot) | 3 | [GitHub contributions](https://github.com/lyonva/ScheduleBot/graphs/contributors) | -| 3 | Number of commits | 3 | [GitHub contributions](https://github.com/lyonva/ScheduleBot/graphs/contributors) | -| 4 | Number of commits: by different people | 2 | [GitHub contributions](https://github.com/lyonva/ScheduleBot/graphs/contributors) | -| 5 | Issues reports: there are many | 3 | [GH Issues](https://github.com/lyonva/ScheduleBot/issues) | -| 6 | Issues are being closed | 3 | [GH Issues](https://github.com/lyonva/ScheduleBot/issues) | -| 7 | DOI badge: exists | 3 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) and [Zenodo](https://zenodo.org/record/5523462) | -| 8 | Docs: doco generated , format not ugly | 3 | [Documentation](https://lyonva.github.io/ScheduleBot/) | -| 9 | Docs: what: point descriptions of each class/function (in isolation) | 3 | [Documentation](https://lyonva.github.io/ScheduleBot/) | -| 10 | Docs: how: for common use cases X,Y,Z mini-tutorials showing worked examples on how to do X,Y,Z | 2 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | -| 11 | Docs: why: docs tell a story, motivate the whole thing, deliver a punchline that makes you want to rush out and use the thing | 2 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | -| 12 | Docs: short video, animated, hosted on your repo. That convinces people why they want to work on your code. | 3 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | -| 13 | Use of version control tools. | 3 | [You're here](https://github.com/lyonva/ScheduleBot/) | -| 14 | Use of style checkers | 3 | Flake8: [Automated as a GH Action](https://github.com/lyonva/ScheduleBot/actions), [Script](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) | -| 15 | Use of code formatters. | 3 | Flake8: [Automated as a GH Action](https://github.com/lyonva/ScheduleBot/actions), [Script](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) | -| 16 | Use of syntax checkers. | 3 | Flake8: [Automated as a GH Action](https://github.com/lyonva/ScheduleBot/actions), [Script](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) also [Test cases](https://github.com/lyonva/ScheduleBot/tree/main/test) to a lesser extent | -| 17 | Use of code coverage | 3 | [Automated as a GH Action](https://github.com/lyonva/ScheduleBot/actions), [Script](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml), also check the badge in [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | -| 18 | other automated analysis tools | 3 | Flake8: [Automated as a GH Action](https://github.com/lyonva/ScheduleBot/actions) for statis analysis and code warnings. | -| 19 | test cases exist | 1 | [Test directory](https://github.com/lyonva/ScheduleBot/tree/main/test) | -| 20 | test cases are routinely executed | 3 | [Automated as a GH Action](https://github.com/lyonva/ScheduleBot/actions), [Script](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) | -| 21 | the files CONTRIBUTING.md lists coding standards and lots of tips on how to extend the system without screwing things up | 3 | [contributing.md](https://github.com/lyonva/ScheduleBot/blob/main/CONTRIBUTING.md) | -| 22 | issues are discussed before they are closed | 2 | [GH Issues](https://github.com/lyonva/ScheduleBot/issues) | -| 23 | Chat channel: exists | 3 | Here's a 1-time guest link to our Discord: discord \[dot\] gg \[slash\] UUSTtRnaqZ | -| 24 | test cases:.a large proportion of the issues related to handling failing cases. | 1 | [GH Issues](https://github.com/lyonva/ScheduleBot/issues) | -| 25 | evidence that the whole team is using the same tools: everyone can get to all tools and files | 2 | [requirements.txt](https://github.com/lyonva/ScheduleBot/blob/main/requirements.txt) is frequently updated. | -| 26 | evidence that the whole team is using the same tools (e.g. config files in the repo, updated by lots of different people) | 3 | [requirements.txt](https://github.com/lyonva/ScheduleBot/blob/main/requirements.txt) is frequently updated, and [.gitignore](https://github.com/lyonva/ScheduleBot/blob/main/.gitignore) has also been updated with the different IDEs the team uses. | -| 27 | evidence that the whole team is using the same tools (e.g. tutor can ask anyone to share screen, they demonstrate the system running on their computer) | 3 | Statement of the team members. Also most of us have a personal test bot. | -| 28 | evidence that the members of the team are working across multiple places in the code base | 2 | [Commits on main](https://github.com/lyonva/ScheduleBot/commits/main) | -| 29 | short release cycles | 3 | [Frequency of commits](https://github.com/lyonva/ScheduleBot/graphs/contributors) | -| | Total of items in [sustainability evaluation](https://docs.google.com/forms/d/e/1FAIpQLSf0ccsVdN-nXJCHLluJ-hANZlp8rDKgprJa0oTYiLZSDxh3DA/viewform) | 128 | | -| Q1.1 | Does your website and documentation provide a clear, high-level overview of your software? | 3 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md), [Documentation](https://github.com/lyonva/ScheduleBot/tree/main/doc) | -| Q1.2 | Does your website and documentation clearly describe the type of user who should use your software? | 2 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | - | Q1.3 | Do you publish case studies to show how your software has been used by yourself and others? | 0 | - | - | Q2.1 | Is the name of your project/software unique? | 1 | Self-assessment. | - | Q2.2 | Is your project/software name free from trademark violations? | 0 | Apparently there is a [character](https://powerpuffgirls.fandom.com/wiki/Schedulebot) and [another bot](https://mellamopablo.github.io/schedulebot/) with that name. | - | Q3.1 | Is your software available as a package that can be deployed without building it? | 2 | Its on Python, but dependencies need to be installed | - | Q3.2 | Is your software available for free? | 3 | [Open source](https://github.com/lyonva/ScheduleBot) | - | Q3.3 | Is your source code publicly available to download, either as a downloadable bundle or via access to a source code repository? | 3 | [Open source](https://github.com/lyonva/ScheduleBot) | - | Q3.4 | Is your software hosted in an established, third-party repository likeGitHub (https://github.com), BitBucket (https://bitbucket.org),LaunchPad (https://launchpad.net) or SourceForge (https://sourceforge.net)? | 3 | [Github](https://github.com/lyonva/ScheduleBot) | - | Q4.1 | Is your documentation clearly available on your website or within your software? | 3 | [Documentation](https://lyonva.github.io/ScheduleBot/) on the repo | - | Q4.2 | Does your documentation include a "quick start" guide, that provides a short overview of how to use your software with some basic examples of use? | 3 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | - | Q4.3 | If you provide more extensive documentation, does this provide clear, step-by-step instructions on how to deploy and use your software? | 0 | | - | Q4.4 | Do you provide a comprehensive guide to all your software’s commands, functions and options? | 2 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) | - | Q4.5 | Do you provide troubleshooting information that describes the symptoms and step-by-step solutions for problems and error messages? | 0 | | - | Q4.6 | If your software can be used as a library, package or service by other software, do you provide comprehensive API documentation? | NA | | - | Q4.7 | Do you store your documentation under revision control with your source code? | 3 | [Documentation](https://github.com/lyonva/ScheduleBot/tree/main/doc) on the repo | - | Q4.8 | Do you publish your release history e.g. release data, version numbers, key features of each release etc. on your web site or in your documentation? | 2 | We have the space for it on [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md), but no releases so far | - | Q5.1 | Does your website and documentation describe what support, if any, you provide to users and developers? | 3 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md), and our bot has a !help command. | - | Q5.2 | Does your website and documentation describe what support, if any, you provide to users and developers? | 2 | Issues can be publicly opened in the [repo](https://github.com/lyonva/ScheduleBot/issues) | - | Q5.3 | Does your project have an e-mail address or forum that is solely for supporting users? | 0 | | - | Q5.4 | Are e-mails to your support e-mail address received by more than one person? | 0 | | - | Q5.5 | Does your project have a ticketing system to manage bug reports and feature requests? | 2 | Issues can be publicly opened in the [repo](https://github.com/lyonva/ScheduleBot/issues) | - | Q5.6 | Is your project's ticketing system publicly visible to your users, so they can view bug reports and feature requests? | 3 | Issues can be publicly opened in the [repo](https://github.com/lyonva/ScheduleBot/issues) | -| Q6.1 | Is your software’s architecture and design modular? | 2 | Some packages in [src](https://github.com/lyonva/ScheduleBot/tree/main/src) | -| Q6.2 | Does your software use an accepted coding standard or convention? | 3 | Pep8, check [contributing.md](https://github.com/lyonva/ScheduleBot/blob/main/CONTRIBUTING.md) | -| Q7.1 | Does your software allow data to be imported and exported using open data formats? | 0 | Not yet | -| Q7.2 | Does your software allow communications using open communications protocols? | 1 | Discord | -| Q8.1 | Is your software cross-platform compatible? | 3 | Multi-platform through Discord, either native or online clients | -| Q9.1 | Does your software adhere to appropriate accessibility conventions or standards? | 3 | [code of conduct](https://github.com/lyonva/ScheduleBot/blob/main/CODE_OF_CONDUCT.md) | -| Q9.2 | Does your documentation adhere to appropriate accessibility conventions or standards? | 1 | Its autogenerated by pdoc3. | -| Q10.1 | Is your source code stored in a repository under revision control? | 3 | [Yes](https://github.com/lyonva/ScheduleBot/issues) | -| Q10.2 | Is each source code release a snapshot of the repository? | 3 | Every release is stored in [Zenodo](https://zenodo.org/record/5523462) | -| Q10.3 | Are releases tagged in the repository? | 3 | Check [releases](https://github.com/lyonva/ScheduleBot/releases) | -| Q10.4 | Is there a branch of the repository that is always stable? (i.e. tests always pass, code always builds successfully) | 2 | main, but not 100% of the time, check the [action log](https://github.com/lyonva/ScheduleBot/actions) | -| Q10.5 | Do you back-up your repository? | 3 | Each contributor constantly pulls from the repo, every release is stored in [Zenodo](https://zenodo.org/record/5523462) | -| Q11.1 | Do you provide publicly-available instructions for building your software from the source code? | 3 | Python is scripted, and all required packages are available on [requirements.txt](https://github.com/lyonva/ScheduleBot/blob/main/requirements.txt) | -| Q11.2 | Can you build, or package, your software using an automated tool? | 0 | | -| Q11.3 | Do you provide publicly-available instructions for deploying your software? | 0 | | -| Q11.4 | Does your documentation list all third-party dependencies? | 3 | All required packages are available on [requirements.txt](https://github.com/lyonva/ScheduleBot/blob/main/requirements.txt) | -| Q11.5 | Does your documentation list the version number for all third-party dependencies? | 2 | [Most of the cases](https://github.com/lyonva/ScheduleBot/blob/main/requirements.txt) | -| Q11.6 | Does your software list the web address, and licences for all third-party dependencies and say whether the dependencies are mandatory or optional? | 2 | GH [dependency graph](https://github.com/lyonva/ScheduleBot/network/dependencies) lists all repos. | -| Q11.7 | Can you download dependencies using a dependency management tool or package manager? | 3 | run pip install -r requirements.txt | -| Q11.8 | Do you have tests that can be run after your software has been built or deployed to show whether the build or deployment has been successful? | 3 | All in the [test directory](https://github.com/lyonva/ScheduleBot/tree/main/test) | -| Q12.1 | Do you have an automated test suite for your software? | 3 | Through [github actions](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) | -| Q12.2 | Do you have a framework to periodically (e.g. nightly) run your tests on the latest version of the source code? | 3 | Through [github actions](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) | -| Q12.3 | Do you use continuous integration, automatically running tests whenever changes are made to your source code? | 3 | Through [github actions](https://github.com/lyonva/ScheduleBot/blob/main/.github/workflows/python-app.yml) | -| Q12.4 | Are your test results publicly visible? | 3 | [Yes](https://github.com/lyonva/ScheduleBot/tree/main/test) | -| Q12.5 | Are all manually-run tests documented? | 0 | No manual tests | -| Q13.1 | Does your project have resources (e.g. blog, Twitter, RSS feed, Facebook page, wiki, mailing list) that are regularly updated with information about your software? | 0 | | -| Q13.2 | Does your website state how many projects and users are associated with your project? | 2 | [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) shows the amount of downloads for all releases | -| Q13.3 | Do you provide success stories on your website? | 0 | | -| Q13.4 | Do you list your important partners and collaborators on your website | 0 | | -| Q13.5 | Do you list your project's publications on your website or link to a resource where these are available? | 0 | | -| Q13.6 | Do you list third-party publications that refer to your software on your website or link to a resource where these are available? | 0 | | -| Q13.7 | Can users subscribe to notifications to changes to your source code repository? | 0 | | -| Q13.8 | If your software is developed as an open source project (and, not just a project developing open source software), do you have a governance model? | 1 | Discussion in [issues](https://github.com/lyonva/ScheduleBot/issues), decisions taken by majority vote | -| Q14.1 | Do you accept contributions (e.g. bug fixes, enhancements, documentation updates, tutorials) from people who are not part of your project? | 3 | Issues are open, repo is open | -| Q14.2 | Do you have a contributions policy? | 3 | [contributing.md](https://github.com/lyonva/ScheduleBot/blob/main/CONTRIBUTING.md) | -| Q14.3 | Is your contributions' policy publicly available? | 3 | [contributing.md](https://github.com/lyonva/ScheduleBot/blob/main/CONTRIBUTING.md) | -| Q14.4 | Do contributors keep the copyright/IP of their contributions? | 1 | [maybe? MIT license is not specific](https://github.com/lyonva/ScheduleBot/blob/main/LICENSE) | -| Q15.1 | Does your website and documentation clearly state the copyright owners of your software and documentation? | 3 | [Yes](https://github.com/lyonva/ScheduleBot/blob/main/LICENSE) | -| Q15.2 | Does each of your source code files include a copyright statement? | 0 | No | -| Q15.3 | Does your website and documentation clearly state the licence of your software? | 3 | [Yes](https://github.com/lyonva/ScheduleBot/blob/main/LICENSE) | -| Q15.4 | Is your software released under an open source licence? | 3 | [Yes](https://github.com/lyonva/ScheduleBot/blob/main/LICENSE) | -| Q15.5 | Is your software released under an OSI-approved open-source licence? | 3 | [Yes, MIT](https://github.com/lyonva/ScheduleBot/blob/main/LICENSE) | -| Q15.6 | Does each of your source code files include a licence header? | 0 | No | -| Q15.7 | Do you have a recommended citation for your software? | 2 | A DOI | -| Q16.1 | Does your website or documentation include a project roadmap (a list of project and development milestones for the next 3, 6 and 12 months)? | 3 | In the [Readme.md](https://github.com/lyonva/ScheduleBot/blob/main/README.md) and [GH projects](https://github.com/lyonva/ScheduleBot/projects/1) | -| Q16.2 | Does your website or documentation describe how your project is funded, and the period over which funding is guaranteed? | 3 | Its funded by all contributors ;) | -| Q16.3 | Do you make timely announcements of the deprecation of components, APIs, etc.? | NA | No rollbacks | diff --git a/json/credentials.json b/json/credentials.json index 07698b6..4d79903 100644 --- a/json/credentials.json +++ b/json/credentials.json @@ -1,7 +1,3 @@ -{"installed":{"client_id":"30638459199-kd4ckckv126qbp9tkf6gp05qt7ip0g9g.apps.googleusercontent.com", - "project_id":"schedulebot-333520", - "auth_uri":"https://accounts.google.com/o/oauth2/auth", - "token_uri":"https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs", - "client_secret":"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", -"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file + + +{"installed":{"client_id":"481999609624-aqnmk1plr2otqso0vaqi7oqofv4otm0u.apps.googleusercontent.com","project_id":"schedulebot-399200","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"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","redirect_uris":["http://localhost"]}} \ No newline at end of file diff --git a/src/functionality/AddEvent.py b/src/functionality/AddEvent.py index a841d2e..27b910e 100644 --- a/src/functionality/AddEvent.py +++ b/src/functionality/AddEvent.py @@ -7,6 +7,10 @@ from datetime import datetime, timedelta from parse.match import parse_period24 +import os +from google.oauth2.credentials import Credentials +from googleapiclient.discovery import build + def check_complete(start, start_date, end, end_date, array): """ @@ -49,7 +53,7 @@ def check(m): return m.content is not None and m.channel == channel and m.author == ctx.author event_array = [] - await channel.send("Lets add an event!\n" + "First give me the name of your event:") + await channel.send("Let's add an event!\n" + "What is the name of your event?:") event_msg = await client.wait_for("message", check=check) # Waits for user input event_msg = event_msg.content # Strips message to just the text the user entered event_array.append(event_msg) @@ -135,7 +139,7 @@ def check(m): flag+=1 if flag>3: await channel.send( - "unable to create event due to incorrect time format" + "Unable to create event due to incorrect time format" ) return await channel.send( @@ -174,14 +178,14 @@ def check(m): create_type_tree(str(ctx.author.id)) output = turn_types_to_string(str(ctx.author.id)) await channel.send( - "Tell me what type of event this is. Here are a list of event types I currently know:\n" + output + "Tell me what type of event this is. Here is a list of event types I currently know:\n" + output ) event_msg = await client.wait_for("message", check=check) # Waits for user input event_msg = event_msg.content # Strips message to just the text the user entered await create_event_type(ctx, client, event_msg) # Running event_type creation subroutine event_array.append(event_msg) await channel.send( - "What is the location of the event?(Type None for no location/online)" + "What is the location of the event? (Type None for no location)" ) event_msg = await client.wait_for("message", check=check) # Waits for user input event_msg = event_msg.content # Strips message to just the text the user entered @@ -226,6 +230,44 @@ def check(m): event_msg = event_msg.content # Strips message to just the text the user entered if event_msg.lower() == "done": event_array.append("") + print(event_array) + + #adding to GCalender + channel = await ctx.author.create_dm() + SCOPES = ['https://www.googleapis.com/auth/calendar'] + + token_file = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname( + os.path.abspath(__file__)))), "json", "token.json") + # If the user has already logged in, the details are extractecd from token.js + if os.path.exists(token_file): + creds = Credentials.from_authorized_user_file( + token_file, SCOPES) + else: + await channel.send("You are not logged into Google. PLease login using the !ConnectGoogle command") + print("token found") + service = build('calendar', 'v3', credentials=creds) + new_event = { + 'summary': event_array[0], + 'location':event_array[-2], + 'description': event_array[-1], + 'start':{ + 'dateTime': event_array[1].strftime("%Y-%m-%dT%H:%M:%S"), + 'timeZone':'America/New_York' + }, + 'end':{ + 'dateTime': event_array[2].strftime("%Y-%m-%dT%H:%M:%S"), + 'timeZone':'America/New_York' + }, + 'reminders':{ + 'useDefault': False, + 'overrides':[ + {'method':'email','minutes':1*60}, + {'method':'popup','minutes':5}, + ] + } + } + event = service.events().insert(calendarId='primary', body=new_event).execute() + print ('Event created: %s' % (event.get('htmlLink'))) else: event_array.append(event_msg) @@ -235,7 +277,8 @@ def check(m): # Tries to create an Event object from the user input try: current = Event(event_array[0], event_array[1], event_array[2], event_array[3], event_array[4], event_array[6],event_array[5]) - await channel.send("Your event was successfully created!") + await channel.send("Your event was successfully created!!") + await channel.send('Event created: %s' % (event.get('htmlLink'))) create_event_tree(str(ctx.author.id)) add_event_to_file(str(ctx.author.id), current) except Exception as e: @@ -243,5 +286,5 @@ def check(m): print(e) TracebackType.print_exc() await channel.send( - "There was an error creating your event. Make sure your formatting is correct and try creating the event again." + "There was an error in creating your event. Make sure your formatting is correct and try creating the event again." ) diff --git a/src/functionality/Delete_Event.py b/src/functionality/Delete_Event.py index 3b72102..8d1a892 100644 --- a/src/functionality/Delete_Event.py +++ b/src/functionality/Delete_Event.py @@ -101,6 +101,6 @@ def check(m): await channel.send(f"The event: {e['name']} was deleted..!!") else: print("The entered event name does not exists..!! Please try again") - await channel.send( - "The entered event name does not exists..!! Please try again" - ) + #await channel.send( + #"The entered event name does not exists..!! Please try again" + #) diff --git a/src/functionality/Google.py b/src/functionality/Google.py index db7fbed..f160542 100644 --- a/src/functionality/Google.py +++ b/src/functionality/Google.py @@ -44,7 +44,7 @@ async def connect_google(ctx): if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: - await channel.send("Please check the tab in yourbrowser for authentication") + await channel.send("Please check the tab in your browser for authentication") flow = InstalledAppFlow.from_client_secrets_file( cred_file, SCOPES) creds = flow.run_local_server(port=0) @@ -53,5 +53,5 @@ async def connect_google(ctx): # Save the credentials for the next run with open(token_file, 'w') as token: token.write(creds.to_json()) - await channel.send("You are now connected to Google") + await channel.send("You are now connected to Google.") return 1 \ No newline at end of file diff --git a/src/functionality/GoogleEvent.py b/src/functionality/GoogleEvent.py index 23423f0..4afc22c 100644 --- a/src/functionality/GoogleEvent.py +++ b/src/functionality/GoogleEvent.py @@ -30,7 +30,7 @@ async def get_events(ctx, arg): creds = Credentials.from_authorized_user_file( token_file, SCOPES) else: - await channel.send("You are not logged into Google. PLease login using the ConnectGoogle command") + await channel.send("You are not logged into Google. PLease login using the !ConnectGoogle command") print("token found") service = build('calendar', 'v3', credentials=creds) now = datetime.datetime.utcnow().isoformat() + 'Z' @@ -62,4 +62,22 @@ async def get_events(ctx, arg): embed.add_field(name="Location:", value='None', inline=False) #embed.add_field(name="Description:", value=e['description'], inline=False) await ctx.send(embed=embed) - \ No newline at end of file + + #adding event to calender + """event = { + 'summary': 'Trying to add something', + 'location': 'USA', + 'description': 'SE project', + 'start': { + 'dateTime': '2023-10-20T09:00:00-07:00', + 'timeZone': 'America/New_York', + }, + 'end': { + 'dateTime': '2023-10-20T17:00:00-07:00', + 'timeZone': 'America/New_York', + } + } + + event = service.events().insert(calendarId='primary', body=event).execute() + print ('Event created: %s' % (event.get('htmlLink'))) + """ \ No newline at end of file diff --git a/src/functionality/create_event_type.py b/src/functionality/create_event_type.py index d68240f..b840450 100644 --- a/src/functionality/create_event_type.py +++ b/src/functionality/create_event_type.py @@ -150,7 +150,7 @@ def check(m): if str(line[1]) == current.get_start_time() and str(line[2]) == current.get_end_time(): rows.append(line) line_number = line_number + 1 - await channel.send("Event type: " + str(line[0]) + " already exist in the given time range") + await channel.send("Event type: " + str(line[0]) + " already exists in the given time range") continue await channel.send("Event type: " + str( line[0]) + " already exist.\n Existing time range for this event type is " + str( diff --git a/src/functionality/highlights.py b/src/functionality/highlights.py index e44d348..bbb1ce0 100644 --- a/src/functionality/highlights.py +++ b/src/functionality/highlights.py @@ -1,6 +1,10 @@ import re import datetime +from datetime import date + from functionality.shared_functions import read_event_file, create_event_tree +from functionality.weather import getWeatherData +from functionality.distance import get_lat_log, get_key async def get_highlight(ctx, arg): @@ -45,7 +49,7 @@ async def get_highlight(ctx, arg): event['endTime'] = convert_to_12(end[1][:-3]) # Convert to 12 hour format event['type'] = row[4] event['desc'] = row[5] - event['location']=row[6] + event['location']=row[7] dates = [event['startDate'], event['endDate']] flag = check_start_or_end(dates, day) @@ -73,6 +77,26 @@ async def get_highlight(ctx, arg): for e in events: if e['flag'] == 1: await channel.send(f"You have {e['name']} scheduled , from {e['startTime']} to {e['endTime']}") + + if (e['name'] != 'Travel' and e['location']!='' and e['location']!='online' and e['location']!='Online' and e['startDate'] == str(date.today())): + latlng = get_lat_log(e['location'],get_key()) + humidity, cel, fah, feels_like,desc = getWeatherData(latlng) + + if(fah < 70): + await channel.send(f"Don't forget your Jacket! 🥶 The temperature is {fah:.1f}°F and it feels like {feels_like:.1f}°F" ) + + elif(fah < 50): + await channel.send(f"It is chilly! 🥶 The temperature is {fah:.1f}°F" ) + else: + await channel.send(f"The temperature is {fah:.1f}°F and it feels like {feels_like:.1f}°F") + + await channel.send(f'{desc} today') + + else: + print("What>?") + print("<<<<<<<<<<<<<<<<<<<", e['location']) + + elif e['flag'] == 2: await channel.send( "You have {e['name']} scheduled, from {e['startTime']} to {e['endTime']} on {e['endDate']}") diff --git a/src/functionality/weather.py b/src/functionality/weather.py new file mode 100644 index 0000000..bc0c1e8 --- /dev/null +++ b/src/functionality/weather.py @@ -0,0 +1,32 @@ +import datetime as dt +import requests + +BASE_URL = "https://api.openweathermap.org/data/2.5/weather?" + +f = open("src/apifile.txt", "r") + +API_KEY = f.read() +CITY = 'Raleigh' + + +url = BASE_URL + "appid="+ API_KEY #+ "&q=" + CITY + + +def getWeatherData(latlng): + + url = f'{BASE_URL}lat={latlng[0]}&lon={latlng[1]}&appid={API_KEY}' + + response = requests.get(url).json() + + print(response) + + temp_kelvin = response['main']['temp'] + temp_celsius = temp_kelvin - 273.15 + temp_fahrenheit = temp_celsius * (9/5) + 32 + feels_like = (response['main']['feels_like'] - 273.15) * (9/5) + 32 + desc = response['weather'][0]['description'] + humidity = response['main']['humidity'] + + return humidity, temp_celsius, temp_fahrenheit, feels_like, desc + + diff --git a/src/schedulebot.py b/src/schedulebot.py index 86f8fb9..8292892 100644 --- a/src/schedulebot.py +++ b/src/schedulebot.py @@ -17,10 +17,13 @@ from functionality.GoogleEvent import get_events from functionality.Delete_Event import delete_event -bot = commands.Bot(command_prefix="!") # Creates the bot with a command prefix of '!' +#client = discord.Client(intents=discord.Intents.default()) +bot = commands.Bot(command_prefix="!",intents=discord.Intents.default()) # Creates the bot with a command prefix of '!' bot.remove_command("help") # Removes the help command, so it can be created using Discord embed pages later g_flag=0 + + @bot.group(invoke_without_command=True) async def help(ctx): """