{"id":21572079,"url":"https://github.com/zingale/slack_grader","last_synced_at":"2025-04-10T14:21:21.851Z","repository":{"id":83577119,"uuid":"79722088","full_name":"zingale/slack_grader","owner":"zingale","description":"a simple commandline tool for posting and logging \"+1\" grades on a classroom slack","archived":false,"fork":false,"pushed_at":"2024-02-07T15:22:58.000Z","size":26,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T13:03:16.891Z","etag":null,"topics":["grading-system","slack","teaching"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zingale.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-22T14:20:20.000Z","updated_at":"2024-05-31T19:20:59.000Z","dependencies_parsed_at":"2024-11-24T11:18:24.460Z","dependency_job_id":"c7ea0733-9625-4bb8-a482-49675ce22281","html_url":"https://github.com/zingale/slack_grader","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fslack_grader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fslack_grader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fslack_grader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zingale%2Fslack_grader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zingale","download_url":"https://codeload.github.com/zingale/slack_grader/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248233935,"owners_count":21069493,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grading-system","slack","teaching"],"created_at":"2024-11-24T11:18:08.294Z","updated_at":"2025-04-10T14:21:21.834Z","avatar_url":"https://github.com/zingale.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n\n# slack-grader\n\nA simple command-line tool for posting \"+1\" type grades to a slack\nchat, keeping a log for each student  for end-of-semester grades.\n\n# API token\n\nyou need to create a slack API token.  You create an App that is a\n\"bot\" and then under \"OAuth \u0026 Permissions\" you give it access to your\nworkspace.\n\n* Start at: https://api.slack.com/apps\n\n* Do \"Create New App\" and select \"From Scratch\"\n\n* Call the App \"slackgrader\" and select for it to be in the workspace for your class\n\n* In the \"OAuth \u0026 Permissions\" tab, add the *bot token scopes*:\n\n  * `chat:write`\n  * `users:read`\n  * `chat:write.customize`\n\n* On the same page, do \"install to workspace\" and copy the OAuth Token\n\n  You can confirm on the \"OAuth \u0026 Permissions\" page that you are using the *Bot User OAuth Token*\n\n* In your workspace, you'll need to add this bot to the channels you\n  want it to post it, you can do this just by typing `@slackgrader` in\n  that channel\n\n# setup\n\n* install the `slackclient` package, e.g., as:\n  ```\n  pip3 install slackclient\n  ```\n\n* create an API token for your slack group.\n\n* configure:\n\n  ```\n  ./slackgrade.py --setup\n  ```\n\n  This will ask you some questions (including the API token and where\n  to log the grades).\n\n  This will write a file in your home directory called `.slackgrader`\n\n\n# use\n\nThe basic usage of this script is to post a comment on a slack channel\nwith a message (indicating the grade):\n\n```\n./slackgrade.py student comment [channel]\n```\n\nEach grade is assumed to have the same point value.\n\nA record of this is stored in the logfile noted during the setup part\nabove.  Each record is given its own line in the log file.  This\nallows you to keep it in version control and merge it across machines\nwithout conflicts.\n\nTo get a summary of points by student, do:\n```\n./slackgrade.py --report\n```\n\nTo DM each user a summary of their participation (only they will see\ntheir records), do\n```\n./slackgrade.py --post_grades\n```\nThis will show up in their _slackbot_ channel.\n\n\n# todo\n\n* add point values (so some comments can be worth more)\n\n* cache the user list (add a --refresh option to reload it?)\n\n* better support for multiple classes (setting a default class)\n\n* we don't handle the case where comments have a \",\" in the report\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzingale%2Fslack_grader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzingale%2Fslack_grader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzingale%2Fslack_grader/lists"}