Git Product home page Git Product logo

task_bot's Introduction

DALI Task Bot ๐Ÿ

A slack bot focused on increasing lab activity by engaging in general activity in all slack channels.

Setup ๐Ÿš€

Environment Keys

TASK_BOT_TOKEN - Slack API key used to authenticate the slack bot

TASK_BOT_AUTH - Google Sign in API key to authenticate self

Start the Project

git clone the repository and then run the following commands:

cd task_bot
npm install
npm run dev

You should see the following message telling you have started the project successfully:

Task Bot is up and running!

You will need to have a local instance of MongoDB running in order to handle the data:

In one tab in your terminal run:

mongod

In another tab run:

mongo task_bot

This is the name of the database for this project.

Generation Scripts

There is some data that needs to be present in the database to ensure that future manipulation works. Go to app/scripts to find all the data generation scripts necessary in order to interact with the bot fully.

Commands ๐Ÿ’ช๐Ÿพ

There are a list of commands that the task bot will recognize by direct messages - you must be in DM channel for the bot to respond

Add Users

add_user <@slack_id> - POST

Adds the specified slack user into the local database

Example

add_user @ijemmao

Adds the slack user @ijemmao to the local database

add_all_users - POST

Adds all users in the slack team

Get Users

get_all_users - GET

Gets all the users in the local Slack database

get_dali_users - GET

Gets all the users from the DALI API

Channel Activity

poke_channels_activity - POST

Pokes all the channels with low channel activity in the past week. The message is sent out every Saturday at 10AM.

Note: There are two sources that this bot is interacting with:

  • Local Slack Database - Included in this repo, there is a local database that holds Slack related user information
  • DALI API - A private API created by @johnlev that stores updated DALI member information

Authors ๐Ÿ“

  • Ijemma Onwuzulike '19
  • Sofia Stanescu-Bellu '20

task_bot's People

Contributors

ijemmao avatar timofei7 avatar sofiastb avatar patxu avatar jason-feng avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

task_bot's Issues

Continuously ask for meeting times

The PM should update the meeting times by a certain date. After the deadline, the pm will start receiving private messages from the bot every 12 hours to set the meeting time

Organize Channel Activity

Keep track of channel activity.

Make sure to use the channels.history and channels.info calls to collect information about certain channels. This will be later used to make comparisons between other channels

Update Term Dates

Give the user the abiltiy to interact with the bot to update the term's start and end dates

Create DALI-API Connection

Create a couple of commands that connect to the DALI-API user the authorization token provided - will have to use personal authorization token for this to work

Refactor Milestone Code

Move milestone related code to outside file to free up space in the server.js file.

Make sure to have eslint included in text editor to see all warnings and errors.

12 hour reminders

If the user hasn't responded to the public poke from the bot, the bot should then privately message the member every 12 hours

Directly Poke PM when channel activity is low

The bot should calculate general activity in all channels, and compare them from one another. If a given channel is significantly low in activity, then the bot will directly message the PM

Update with Admin

At the start of every term (a hardcoded date that shouldn't change), the bot should do the following things with an admin:

  • Ask to update it's teams list - this is the list it will use to make it's general activity calculations
  • Ask every 5 weeks or so to remove channels based on some criteria
  • Channel's member information - which member in each channel is a PM, designer, or developer

Track channel activity

Bot should acculmate general information about a channel's activity:

  • Comments
  • Images
  • Pushes/Commits
  • Etc.

Set up CircleCI

I'm realizing that there's a ton of testing that needs to be done.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.