permissions:
issues: write
pull-requests: write
+ discussions: write
concurrency:
group: lock
This pull request has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion or issue for related concerns.
+ close-answered-discussions:
+ name: 'Close Answered Discussions'
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/github-script@v6
+ with:
+ script: |
+ const query = `query($owner:String!, $name:String!) {
+ repository(owner:$owner, name:$name){
+ discussions(first:100, answered:true, states:[OPEN]) {
+ nodes {
+ id,
+ number
+ }
+ }
+ }
+ }`;
+ const variables = {
+ owner: context.repo.owner,
+ name: context.repo.repo,
+ }
+ const result = await github.graphql(query, variables)
+
+ console.log(`Found ${result.repository.discussions.nodes.length} open answered discussions`)
+
+ for (const discussion of result.repository.discussions.nodes) {
+ console.log(`Closing dicussion #${discussion.number} (${discussion.id})`)
+
+ const addCommentMutation = `mutation($discussion:ID!, $body:String!) {
+ addDiscussionComment(input:{discussionId:$discussion, body:$body}) {
+ clientMutationId
+ }
+ }`;
+ const commentVariables = {
+ discussion: discussion.id,
+ body: 'This discussion has been automatically closed because it was marked as answered.',
+ }
+ await github.graphql(addCommentMutation, commentVariables)
+
+ const closeDiscussionMutation = `mutation($discussion:ID!, $reason:DiscussionCloseReason!) {
+ closeDiscussion(input:{discussionId:$discussion, reason:$reason}) {
+ clientMutationId
+ }
+ }`;
+ const closeVariables = {
+ discussion: discussion.id,
+ reason: "RESOLVED",
+ }
+ await github.graphql(closeDiscussionMutation, closeVariables)
+
+ }