The InternMe Bot | Documentation

Embersunn

Embersunn

· 14 min read
Thumbnail

We notice how difficult it is for students who can't find any internships and don't know where to look. Some websites already exist that post these internships, but there aren’t any convenient methods of getting constant internship alerts using multiple sources on one platform, such as Discord. We hope to aid students to give them more opportunities to get a chance to taste the grasp of their careers.

The implications of developing a Discord bot to aid students with internships can have both positive and potential negative effects. Other than the students; Colleges, universities, and other educational organizations can be affected positively by the tool. It can supplement their existing career services by providing an additional platform for students to access internship-related information and support. Introducing the InternMe bot:

Image

Bot Overview

The InternMe bot is a bot developed to be integrated into Discord servers. Its purpose is to display job applications from indeed.com into a designed channel (in server) for students and general users to easily access. This makes applying for jobs easier and less time-consuming. Giving students more valuable time to focus on classes and building their technical skills

How it works

The InternMe bot can be broken down into two categories

  1. The Moderators
  2. The Users

Moderators

The server moderators are given access to control the bot through commands. This is so that moderators can customize the job applications they want to see displayed in their channel. The moderators have a variety of commands at their disposal. Here is a menu list of possible commands along with a brief description of what they are used for:

!help : Bot will display a list of all commands

!jobsearch <query> <location> : This command is a call to have the bot display a job position. Replace the first with your desired job position. Replace the query with the desire location of the job position you are looking for

!job detail <job_ID> : After you've called in the !jobsearch <query> <location> command, call in this command followed by the ID of the job position you would like posted in the channel

!autosearch <query> <location> : This command will save jobsearch in SQLlite database which later gets called on time interval. Typically 24hrs (we assigned it that way) but it can be changed in the code.

!showauto : Shows all auto searches that have been saved in the database

!cancelauto <#> : This cancels specific autosearches. When you use showauto, it displays as a numerical list. These numbers are used to cancel

Heres a brief example of how moderators can interact with bot using two of the listed commands:

Image

Users

The Server users do not have to worry about handling these commands. All they have to do is join the server and the channel the InternMe bot is in. They will get to enjoy a variety of different job positions displayed at specific time intervals (based on the amount the moderators choose).

Heres an example overview of how students/users interact with the bot:

Image

Software Design

Designing a discord bot that displays internship job positions from indeed.com requires us to have a systematic approach throughout the process to ensure its functionality and effectiveness.

Our software design approach was as followed:

  1. Requirements Gathering: a. Understand the objectives and features of the bot. Gather specific requirements such as the types of internships to search, supported locations, search filters, display format, and user interaction. b. The bot must be able to take in specific commands only given by the moderators. Such as: !autosearch and !help
  2. Architecture Design: a. Defining the overall architecture of the bot. Identify the components it will need, such as a Discord bot framework, a web scraping module to fetch data from indeed.com (this being straight from the API itself), a database to store user preferences or job listings, and a user interface for interaction. b. Creating a separate database from the main class to take in all the command lines given to the bot by the moderators
  3. Discord Bot Setup: a. Create a new Discord bot account through the Discord Developer Portal. Obtain the bot token for authentication and link it to the server where it will operate.
  4. Data Storage: a. Setting up a database (SQLite) to store user preferences, job listings, or any other relevant data. This allows the bot to keep track of user/mod interactions and provide personalized results.
  5. Testing and Quality Assurance: a. Conducting thorough testing to verify that the bot functions as expected and provides accurate search results. Including various scenarios, edge cases, and error conditions in your testing suite. Similar to the test case mentioned in the Verification category

UML Diagrams

Heres a few diagrams that helped Michael, Edwin, and I visualize the bot and all its technical components such as sequences, use cases, and more:

Activity Diagram

Image

Use Case Diagram

Image

Class Diagram (Initial diagram)

Image

Sequence Diagram

Image


Software Verification

Our verification process

Our core focus for this bot is to have it serve its overall intended purpose. This being an accessible and automated internship job search tool that will aid Florida International university students in finding any tech-related job in any location through our official TechIU Discord server. So having a solid Verification system is vital in our development process. We began by setting up evaluation meetings (or more specifically, retrospective meetings) to update on everyone's work after each sprint. This was done mostly to point out errors or why the team has failed to satisfy planned points more than to congratulate each other on successful outcomes. During the meeting we also reflect back on our requirements to ensure that they are well-defined, unambiguous, and reachable for a team of three developers. Some of these requirements involved creating two queries for the job search requisite so that the moderators can give the bot both the name of the hiring position it wants to be searched and a location . Our first attempt at this, which consisted of creating a method for it called setautosearch(ctx, query: str, location: str), was a success as it executed and ran perfectly without any runtime errors. So we did not discuss much of it in our meetings.

The following is a demonstration of one system level test case for the Queries search mentioned previously

Test Case Name: Set autosearch commands for internship bot Objective: To verify the functionality of the autosearch command when given the name of job position and the desired location

  • The moderator has called the bot using the !jobsearch command
  • The moderator specifies by following up with the job position name The moderator specifies location
  • The moderator is given a list of jobs with their Identification code
  • The moderator calls the !jobdetail command followed by the desired ID The bot displays the proper job application with a link
  • The moderator can navigate to the application link on indeed.com

Steps: Enter job search information:

  • Type the job search command !jobsearch
  • Input the desired job position and location(e.g., standard, express).
  • Call the !jobdetail along with the desired ID of the job position you’d like
  • Click on the link the bot displays to be navigated to application

Expected Results: The bot should successfully save each job search command given to it The bot should securely process and display a menu of job positions in the geolocational area given The bot should give an identification number with each individual job application The total amount displayed should match the total available job applications in indeed.com When moderators call the !jobdetail command followed by the ID, the indicated job position should be given by the bot with a link to application Upon clicking the job application link, the moderator should be navigated to the job’s application website on indeed.com Test Environment:

  • Browser: Google Chrome
  • Website: Indeed.com & replit.com
  • Application: Discord
  • Operating System: Windows & iOS Test Data:
  • Valid command lines
  • Valid job application links given Test Execution: Navigate to the Replit.com website and Discord application. Navigate to TechIU server and click on se-group-project channel In moderator mode, input the commands in order as listed in ‘Steps’ Proceed to click on job application link Execute each step of the test case, providing the required information. Verify that the system behaves as expected at each stage. Record any deviations from the expected results. Test Pass/Fail Criteria:
  • The test case passes if all the steps are executed successfully without any critical issues or deviations from the expected behavior.
  • The test case fails if any step encounters an error, unexpected behavior, or data inconsistency.

Final Reflections from the team

Meggan Raad As a team we faced many challenges during the process of developing an internship automated bot. As Michael mentioned, accessing Handshakes API turned out to be a long and unnecessary difficult process. In the end I truly believe our choice in using indeed instead was a great decision from Michael and the team. Indeed is in fact a more known job search website, so many students can understand it better than Handshake. We also dealt with some fail test cases and errors in our code and communication. However, as a team we managed to overcome and push on. Which is what ultimately got us a successfully running bot. It was also an excellent idea to assign a lead engineer in our team as it allowed us to be guided and also held accountable. In our case, we assigned Michael since he has the most experience creating discord bots. Edwin was also very diligent and on top of his work, providing excellent and clean code in java with comments. At the heart of this project are the three developers who united in their love and understanding for programming and software development. This has been a memorable experience.

Michael Berenguer I found that working in a team can be challenging. It is difficult to coordinate what everyone should do based on each individual's strengths especially since we picked a difficult project to begin with. The project was selected on a whim based on our own personal experience and a necessity to the FIU CS student body. We all quickly agreed on this project but did not put much thought into the difficulty of such a selection. I am sure that Eddie and Meggan can agree with me but when we first originally thought of the project, we thought it would be something easy and at most intermediate level difficulty. The first few weeks of the project were spent significantly researching the requirements and necessities for this project. We faced significant difficulties in trying to get access to Handshake API and had to settle for Indeed. I like to believe that we went through three phases in the cycle of the project. At first, it was writing the basics for functionality. The second was fixing any issues that had to be resolved in order for the bot to function properly. The third phase was when the bot truly evolved. Don’t even ask me how I got the Database working. That was hours and hours of frustration. I think overall, for how difficult the project ended up being, our team did a great job and we can proudly say that we have a functioning autonomous bot that finds internships/jobs and posts them for our users as originally intended.

Edwin Carias This project taught me much about teamwork, learning a new language, and time management. I normally work alone, but working with Micheal and Meggan taught me to burst out of my bubble and made me more of an extrovert. They helped me to learn about Python even though I had little to no knowledge of it. It was really interesting learning Python, especially considering my prior experience with Java. Python has a different style than Java, but it has the same features at the end of the day. For example, they would be the time I would write the for loop equation in Java on the Java program, and Michael would call me out so that I don't have to do the extra work. I would say Python is easier to read than Java and with more practice it'll be easier to write. While this is a school project, our focus should be on the project outside of school, but since I have a job at Target, I have to manage my time working on the project and my job. Luckily, my teammates were understanding, and they worked through my schedule. I'm very pleased working with my teammates and understanding more about the Python language. We worked hard to get our program to work and can't wait to present it.

Embersunn

About Embersunn

Meggan Raad, virtually addressed as Embersunn, is a dynamic software engineer with a Bachelor's degree in Computer Science from Florida International University. Proficient in Python3, Java, and C, she has a strong background in Software and Security Engineering.

Copyright © 2024 Embersunn. All rights reserved.
Made by Web3Templates· Github
Powered by Vercel
Purchase Pro ↗