This GitHub bot helps manage issue assignments in a repository by automatically assigning or unassigning issues based on predefined rules and user commands in comments. The bot is implemented using Probot, a framework for building GitHub Apps.
If you find this project helpful, please consider giving it a star ā on GitHub. It helps others discover the project and shows your appreciation for the work!
See probot published app here, and live listing on GitHub Marketplace here
Assignment and Abandoning of issues doesn't work for users having permissions admin, maintainer or triage, since they already can assign themselves and also to avoid accidental assignment of the issue while explaining a contributor how to claim.
Install the bot in your account.
After installing the bot, create a file .github/issue-assigner.yml
in the repo and paste the following content:
# Remove or comment the line from yml if you don't need that feature
# The name of bot you would like to be mentioned by users. {name} will be replaced by the below name
name: "issue-assigner"
######################## Issue assignment ########################
# Prompt entered by user to request assign the issue to him/her
assign-prompt: "@{name} claim" # For example, @issue-assigner claim
# Comment from bot if the issue got already assigned to the user requesting
issue-already-assigned: "You have already been assigned to this issue."
# Maximum number of assignees for an issue
max-assignees: 1
# Maximum number of assignees reached for the requested issue
max-assignees-reached: "Sorry, maximum limit for assignees in this issue has reached. Please check other issues or contact a maintainer."
# Maximum number of open issues a user can have assigned at a time in the repo
max-issues-for-user: 1
# If all OK, the comment from bot to tell that issue got assigned
assigned-comment: "This issue has been successfully assigned to you! š"
######################## Issue un-assignment ########################
# Prompt entered by user to request un-assignment of the issue to him/her
unassign-prompt: "@{name} abandon"
# If the issue was already not assigned to the user
issue-was-not-assigned: "You were not assigned to this issue."
# If criteria is matched, the issue will get un-assigned
unassigned-comment: "You have been unassigned to this issue successfully."
######################## Issue Opened ########################
# If the user who opened issue is NOT a maintainer of the repo
issue-opener-not-maintainer: "Thank you for opening this issue. Maintainers will check and approve if seems to be useful."
# If the user who opened issue IS a maintainer of the repo
issue-opener-is-maintainer: "Comment '@{name} claim' to get this issue assigned or '@{name} abandon' to get this issue unassigned."
You can remove a line from yml if you don't need that feature.
You can edit the values in the yml to customize the comments from the bot.
For example, commenting '@issue-asigner claim' will assign the issue and '@issue-assigner abandon' will remove the assignment.
See these issues for seeing all features practically: #3 and #4
See Contributing guide for contributing to the project.
Clone the repo with
git clone https://github.com/Varun-Kolanu/issue-assigner.git
Install dependencies
npm install
Run the development server
npm run dev
Open the link that you see in terminal to install install and configure your GitHub app.
You can see .env being filled with required credentials.
Or to configure manually, create a new github app and make a .env in the root, taking .env.example as a reference.
Create a .github/issue-assigner.yml
file in the installed repo with the example configuration given above.
You can test the app in your GitHub issues directly now.
.
āāā .github/ ## configuration files
ā āāā issue-assigner.yml
āāā assets/ ## assets like images, icons, etc
āāā src/ ## main source code
ā āāā classes/ # classes for event handlers defined
ā āāā handlers/ # functions to handle webhook events from github
ā ā āāā issue_comment.js
ā ā āāā issue_opened.js
ā āāā helpers/ # utility functions to help handlers
ā āāā app.js # main file which exports probot app
ā āāā server.js # server for the app
āāā test/ ## tests for app
ā āāā fixtures/ # mock data for testing
ā āāā integration/ # integration tests
ā āāā unit/ # unit tests
ā āāā utils/ # utility functions for tests
āāā CONTRIBUTING.md ## Contributing Guide
āāā README.md ## Readme
ISC Ā© 2024 Varun Kolanu