Skip to content

Latest commit

 

History

History
451 lines (264 loc) · 26.7 KB

README.md

File metadata and controls

451 lines (264 loc) · 26.7 KB

ClassMate Bot

                   

DOI Release Version License Python GitHub repo size GitHub issues GitHub closed issues GitHub issues by-label GitHub closed issues by-label Python application GitHub Workflow Status Pytest Pylint Black codecov Maintainability Discord

Basic Overview :: Description :: Installation :: Commands :: Future Scope :: Contributors :: Wiki :: Troubleshooting

Newest Features Demo

why contribute video

We recently added a Dockerfile to aid in development

New Features 2 minute demo

why contribute video

Why contribute?

why contribute video


🎯 Basic Overview

This project helps to improve the life of students, TAs and teachers by automating many mundane tasks which are sometimes done manually. ClassMateBot is a discord bot made in Python and could be used for any discord channel.

This is Project 3 for team 5 in Fall 2023. Changes are marked below.

📙 Description

There are three basic user groups in a ClassMateBot, which are Students, Professor and TAs. Some basic tasks for the bot for the students user group should be automating the task of group making for projects or homeworks, Projection deadline reminders, asking questions, getting questions for review etc. For TAs it is taking up polls, or answering questions asked by the students.

Our ClassMateBot focuses on the student side of the discord channel, i.e. currently it focuses on the problems faced by the students while using these discord channels.

The user stories covered here would be more concerned about the activities for the channel for Software Engineering class in North Carolina State University for the Fall 2021 semester.


1 - Student Verification

Once the new member joins the server, before giving them the access to the channels there is a need to get the real full name of the member to map it with the discord nick name. This mapping can later be used for group creation, voting and so on. To do this we first assign the unverified role to the new comer and then ask them to verify their identity using $verify command. If that goes through, the member is assigned a student role and has full access to the server resources. The bot then welcomes the member and also provides important links related to the course.

2 - Project Voting

Voting for projects is a common occurence that many students must endure. With the addition of a voting system, this task is made easier by allowing student groups to place themselves on projects through an easy to use discord system. With the combination of the ClassMateBot grouping system, teams can easily vote their group into a project, switch their votes, or view the full list of projects that have been voted for.

3 - Deadline Reminder

Deadlines now send automatic messgages for assignments that are due that day and assignments that are due within the hour! Check out more here

The next important thing our project covers is the Deadline reminder feature of our bot. Students may add homeworks, links, and due dates using the system, and then view their daily or weekly dues with ease. No longer will a student be vulnerable to those odd submission times like 3:00 PM. See homework specific to one class, due today, or due this week!

4 - Personally Pinning Messages

Another problem that the students face is that they cannot pin important messages they want to go back to later. With pinned messages, the student can save discord message links easily to point back to prior messages or just leave their own general messages. It is a very easy system to use and could be creatively used by a student in many different ways to promote better classroom success.

5 - Group Creation

Another unique and useful feature of our ClassMateBot is that it helps the students in the process of group making for their projects. Through this feature, the bot could help the students identify other members of the class with similar ideals and acts as a medium to connect them initially. This feature is also helpful for students randomly assigned to a group to connect with the new member which would not only save time, but also, saves effort as many times students do not have their names as their usernames on discord. Through this students can join, leave or connect with others.

Moreover, the group creation feature allows members of the group to join a private text channel to communicate with ease! This works by assigning a role to the user when they join a group and giving them access to the private channel specically for their group, this is especially useful when switching groups because a change in the user's role will automatically revoke access to the private channel. Additionally, the private channels are set up so instructors can help with clarifications directly without having to reach out to them via DMs.

6 - Question and Answer

A common usage for our current class Discord is for students to ask questions about the course. It is helpful for the questions to be numbered and for the answers to be attached to the question so it be easily found. Some students may feel more comfortable asking and answering questions anonymously. It is also helpful for users to know if the question is answered by a student or instructor. This feature keeps the questions and answers all in one channel so it does not clutter other channels and can be more easily viewed.

image
image

7 - Review Questions

An essential part of studying is going over questions related to the exam topics. This feature allows instructors to add review questions and students to get random review questions. To enhance its effectiveness, the answers to the review questions are hidden as a spoiler that students can choose to unveil when they are ready.

8 - Polling

Users can now create polls! Instructor can ask for student opinions.

We can also create Quiz Poll

9 - Assignments/Grading (New in Project 2)

An essential part of any course is the delivery of assignments and the grading of these. This feature allows instructors to add assignments into the server, and assign grades to them based on grading categories. Both the students and the instructor are able to have an easy interface to view their grades, and do calculations based on them. For example, the instrcutor can view a grading breakdown for a given grading category or asssignment, and the students can do calculations to determine how well they need to do on a given assignment to maintain a desired grade.

Instructors can input their syllabus!

Instructors can add assignments and grades to the system

Students can check their grades

10 - Calendar (New in Project 2)

Although being able to set deadlines on discord is useful, a good number of students would like to have those deadlines on their calendar. This feature allows deadlines to be automically added to a Google calendar that the students can see as well as functionality to move those calendar events to other formats that the student may prefer. After the instructor has added events to the calendar students will be able to download these events either as a .ics file they can upload to outlook or other calendar software, or they can download the events as a pdf. Lastly, the bot will check the calendar daily for events due that day and ping everyone in general of the items that are due that day.

Instructor can add events to the calendar!

And students can download the calendar as iCal so they can use in their preffered app!

11 - Plagiarism Check (New in Project 3)

Students are now able to upload docx and txt assignments to get checked for plagiarism and receive a forecasted grade based on the feedback from the plagiarism check.

12 - Office Hour Scheduling (New in Project 3)

Enabling office hour scheduling is helpful for students and instructors. Instructors can add office hours and view those in their calendars.

13 - Course Grade Calculation (New in Project 3)

Students can input their grades and get a final estimated grade for the course.

14 - Custom Group Settings (New in Project 3)

Extending the group creation feature, students can specify the total number of groups as well as the maximum members per group to ensure students can work in groups with preferred group sizes.

15 - Adding, Viewing, and Deleting Resources (New in Project 3)

To enable instructors to provide easily accessible resources that students can utilize, instructors can create and delete resources for students. Students and instructors can view the resources by topic, list all topics, and view all resources provided.


⬇️ Installation

To install and run the ClassMate Bot, follow instructions in the Installation Guide.


💻 Commands

General commands in bot.py

📂 $whitelist command

📂 $dewhitelist command

📂 $toggleFilter command

For the newComer.py file

📂 $verify command

For the voting.py file

📂 $projects command

📂 $vote command

For the deadline.py file

📂 $due date command (Modified Command in Project 2)

📂 $change reminder due date command

📂 $clear all reminders command

📂 $course due command

📂 $delete reminder command

📂 $due this week command

📂 $duetoday command

📂 $listreminders command

📂 $timenow command

📂 $overdue command

📂 $clearoverdue command

For the pinning.py file

📂 $pin command

📂 $unpin command

📂 $pinnedmessages command

📂 $updatepin command

For the groups.py file

📂 $startupgroups command

📂 $reset command

📂 $connect command

📂 $groups command

📂 $group command

📂 $join command

📂 $leave command

📂 $customizegroups command (New Command in Project 3)

For the resource.py file

📂 $addResource command (New Command in Project 3)

📂 $deleteResource command (New Command in Project 3)

📂 $showAllResource command (New Command in Project 3)

📂 $showResourceByTopic command (New Command in Project 3)

📂 $showTopicList command (New Command in Project 3)

For the qanda.py file

📂 $ask command

📂 $answer command

📂 $DALLAF command

📂 $getAnswersFor command

📂 $deleteAllQA command

📂 $deleteQuestion command

📂 $archiveQA command

📂 $spooky command

📂 $allChannelGhosts command

📂 $channelGhost command

📂 $unearthZombies command

📂 $reviveGhost command

For the reviewqs.py file

📂 $addQuestion command

📂 $getQuestion command

For the polling.py file

📂 $poll command

📂 $quizpoll command

For the calendar.py file

📂 $getiCalDownload command (New Command in Project 2)

📂 $getPdfDownload command (New Command in Project 2)

📂 $subscribeCalendar command (New Command in Project 2)

📂 $removeCalendar command (New Command in Project 2)

📂 $clearCalendar command (New Command in Project 2)

📂 $addCalendarEvent command (New Command in Project 2)

For the grades.py file

📂 $add_grade_category command (New Command in Project 2)

📂 $edit_grade_category command (New Command in Project 2)

📂 $delete_grade_category command (New Command in Project 2)

📂 $categories command (New Command in Project 2)

📂 $grade_report_assignment command (New Command in Project 2)

📂 $grade_report_category command (New Command in Project 2)

📂 $input_grades command (New Command in Project 2)

📂 $grade command (New Command in Project 2)

📂 $gradebycategory command (New Command in Project 2)

📂 $gradeforclass command (New Command in Project 2)

📂 $graderequired command (New Command in Project 2)

📂 $graderequiredforclass command (New Command in Project 2)

For the assignments.py file

📂 $add_assignment command (New Command in Project 2)

📂 $edit_assignment command (New Command in Project 2)

📂 $delete_assignment command (New Command in Project 2)


🌎 Future Scope

Future scope suggested tasks are located in the Projects tab.


✏️ Contributors

✏️ (Fall 2023)

Project 3
Jacob Gerlach


Sana Mahmoud


Uchswas Paul


Joshua Joseph
Project 2
Brandon Walia

Nathan Kohen


Nicholas Foster


Robert Kenney

✏️ (Fall 2021)

Project 3
Emily Tracey

Peeyush Taneja


Jonathan Nguyen


Leila Moran


Shraddha Mishra

Project 2
Tanya Chu

Steven Jones

Shikha Nair

Alex Snezhko

Pradhan Chetan Venkataramaiah
Project 1
Chaitanya Patel

Evan Brown


Kunwar Vidhan


Sunil Upare


Sumedh Salvi

😀 Support

Support Email: [email protected]
Please reach out with any questions about ClassMateBot!
Our team is always monitoring the support email address to provide the quickest and easiest support possible.