## Inspiration

We observed that the majority of software engineering students use discord as a way to communicate with other students regarding their online courses. Thus, we created a discord bot that can be installed on a server or accessed through dm's that after a simple one-command setup process sends you updates from your BrightSpace account.

## What it does

We made a discord bot that notifies students in their discord DM on their recent notifications that they've got on BrightSpace.

## How we built it

We built it using discord.py and pyautogui as well as selenium webdriver

## Challenges we ran into

Due to some students having two-factor authentication, it was troublesome for us to detect who had it and give them enough time to authenticate using their phone. Another problem we ran into is the fact that BrightSpace was difficult to navigate using chrome's inspect function. Many buttons had no IDs and shared classes which caused troubles for us.

## Accomplishments that we're proud of

We were able to make the bot communicate with a user through DM without exposing or keeping the user's information. We were also able to locate the notifications on the page and send them through DM by taking a screenshot.

## What we learned

We expanded our knowledge by learning new modules; such as pyautogui, selenium, and discord.py

## What's next for BrightAlert

We will try to advertise BrightAlert to students as we believe this bot could be of huge convenience to them.
## What was our inspiration?

In the middle of a pandemic, digital communication has become more important than every. Platforms such as Discord, Zoom, and Microsoft Teams are skyrocketing in popularity. Due to this, the importance of clear and easy communication through these platforms has become increasingly apparent with the explosion of usage these apps face. With Discord especially, many of the features offered in Microsoft Teams and Zoom are missing which allow for better scheduling and meeting organization. Because of this, our team decided to create a Discord bot that adds these functionalities to Discord servers.

## What is it?

Our Discord bot adds the primary tools required to schedule and organize meetings with other Discord users. Using a series of different text commands, users can create, edit, and delete meetings. These meetings track a name, description, start time, duration, and participants. To join a meeting, a user can be added by the creator or "react" to the meeting's creation. Additionally, certain users can be given "admin" privileges for meetings, allowing them to edit or delete them (by default, only the meeting's creator can edit or delete their meeting). To help better manage meeting organization, our Discord bot can also list the meetings hosted in a server, or privately message the meetings that a specific user is attending. For attendance, our bot can be set to automatically remind users missing from a meeting of their absence.

For help in using our bot and organizing meetings, a fully documented help command is provided that lists the operation of each command.

## How did we do it?

To build this bot, our group used the Discord.py API. Through this, we were able to create a text bot that responds to various commands through Discord. We also deployed the bot on Heroku so that it can be run remotely.

## What did we accomplish and what did we struggle with?

Much of the difficulty we faced was in the attempted scale of our project. We've had dozens of ideas that we wanted to implement into this bot, however, due to the time-frame we had to scale back. Our end goal is to have a bot that can fully support all standard meeting and scheduling features but integrated into Discord. Although many of these features exist in our current version of **Discorg**, we hope to further develop this bot in the future. In tandem with this, there were features that we attempted to implement but could not due to technical difficulties or otherwise. For example, further support for reactions on posts being used as commands was planned, however bugs within the current library version prevented a clean solution from being reached.

## What did we learn?

Through developing **Discorg**, our team was able to learn extensively about the Discord.py API and how bots interact with users, channels, and reactions.

## What's next for Discorg?

For the future of **Discorg**, we aim to add more features and publicly release the bot. With continued support for further features, improved UI/UX design, and more efficient algorithms.

## The Team

**Team 35**

**Truman Be**: GitHub = [trumanbe01](https://github.com/trumanbe01), LinkedIn = [Truman Be](https://www.linkedin.com/in/truman-be/), Discord = truman#3889

**Alysha Kim**: GitHub = [kimalysha93](https://github.com/kimalysha93), LinkedIn = [Alysha Kim](https://www.linkedin.com/in/alyshakim/), Discord = SilverDawn02#4472

**Jessica Li**: GitHub = [jessicaa-li](https://github.com/jessicaa-li), LinkedIn = [Jessica Li](https://www.linkedin.com/in/jessica-a-li/), Discord = totoro#4659

**Callum Kipin**: GitHub = [c-kip](https://github.com/c-kip), LinkedIn = [Callum Kipin](https://www.linkedin.com/in/callum-kipin/), Discord = speedyc45#2589
## Inspiration

The inspiration for the project was our desire to make studying and learning more efficient and accessible for students and educators. Utilizing advancements in technology, like the increased availability and lower cost of text embeddings, to make the process of finding answers within educational materials more seamless and convenient.

## What it does

Wise Up is a website that takes many different types of file format, as well as plain text, and separates the information into "pages". Using text embeddings, it can then quickly search through all the pages in a text and figure out which ones are most likely to contain the answer to a question that the user sends. It can also recursively summarize the file at different levels of compression.

## How we built it

With blood, sweat and tears! We used many tools offered to us throughout the challenge to simplify our life. We used Javascript, HTML and CSS for the website, and used it to communicate to a Flask backend that can run our python scripts involving API calls and such. We have API calls to openAI text embeddings, to cohere's xlarge model, to GPT-3's API, OpenAI's Whisper Speech-to-Text model, and several modules for getting an mp4 from a youtube link, a text from a pdf, and so on.

## Challenges we ran into

We had problems getting the backend on Flask to run on a Ubuntu server, and later had to instead run it on a Windows machine. Moreover, getting the backend to communicate effectively with the frontend in real time was a real challenge. Extracting text and page data from files and links ended up taking more time than expected, and finally, since the latency of sending information back and forth from the front end to the backend would lead to a worse user experience, we attempted to implement some features of our semantic search algorithm in the frontend, which led to a lot of difficulties in transferring code from Python to Javascript.

## Accomplishments that we're proud of

Since OpenAI's text embeddings are very good and very new, and we use GPT-3.5 based on extracted information to formulate the answer, we believe we likely equal the state of the art in the task of quickly analyzing text and answer complex questions on it, and the ease of use for many different file formats makes us proud that this project and website can be useful for so many people so often. To understand a textbook and answer questions about its content, or to find specific information without knowing any relevant keywords, this product is simply incredibly good, and costs pennies to run. Moreover, we have added an identification system (users signing up with a username and password) to ensure that a specific account is capped at a certain usage of the API, which is at our own costs (pennies, but we wish to avoid it becoming many dollars without our awareness of it.

## What we learned

As time goes on, not only do LLMs get better, but new methods are developed to use them more efficiently and for greater results. Web development is quite unintuitive for beginners, especially when different programming languages need to interact. One tool that has saved us a few different times is using json for data transfer, and aws services to store Mbs of data very cheaply. Another thing we learned is that, unfortunately, as time goes on, LLMs get bigger and so sometimes much, much slower; api calls to GPT3 and to Whisper are often slow, taking minutes for 1000+ page textbooks.

## What's next for Wise Up

What's next for Wise Up is to make our product faster and more user-friendly. A feature we could add is to summarize text with a fine-tuned model rather than zero-shot learning with GPT-3. Additionally, a next step is to explore partnerships with educational institutions and companies to bring Wise Up to a wider audience and help even more students and educators in their learning journey, or attempt for the website to go viral on social media by advertising its usefulness. Moreover, adding a financial component to the account system could let our users cover the low costs of the APIs, aws and CPU running Whisper.