Skip to content

Commit

Permalink
ci: add a spam comment detection (#3288)
Browse files Browse the repository at this point in the history
  • Loading branch information
Keith-CY authored Dec 23, 2024
1 parent 7ed48f2 commit 0d64329
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/spam-comment-detection.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Spam detection

on:
issue_comment:
types: [created, edited]

jobs:
detect-spam:
runs-on: ubuntu-latest
steps:
- name: Set up Node.js
uses: actions/setup-node@main

- name: Check for Spam
uses: actions/github-script@v7
with:
script: |
const comment = process.env.COMMENT_BODY.toLowerCase()
const spam_words = process.env.SPAM_WORDS.split(',').map(w => w.toLowerCase())
const comment_id = process.env.COMMENT_ID
const issue_number = process.env.ISSUE_NUMBER
const owner = process.env.REPO_OWNER
const repo = process.env.REPO_NAME
const EXTERNAL_LINK_REGEXT = /https:\/\/(?!((\w+\.)?github\.com|github\.com|(\w+\.)?magickbase\.com|(\w+\.)?nervos\.org))/gi
if (spam_words.some(w => comment.includes(w))) {
console.info(`Spam comment: ${comment}`)
github.rest.issues.deleteComment({ owner, repo, comment_id })
} else if (EXTERNAL_LINK_REGEXT.test(comment)) {
console.info(`External link detected, append an annotation`)
github.rest.issues.createComment({
owner,
repo,
issue_number,
body: `An external link is mentioned in the comment above. Please verify the link's safety before visiting.`
})
} else {
console.info("No spam detected")
}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMENT_BODY: ${{ github.event.comment.body }}
COMMENT_ID: ${{ github.event.comment.id }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
REPO_OWNER: ${{github.repository_owner }}
REPO_NAME: ${{ github.event.repository.name }}
SPAM_WORDS: ${{ github.secrets.SPAM_WORDS }}

1 comment on commit 0d64329

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Packaging for test is done in 12461762154

Please sign in to comment.