Skip to content

Max retries reached #27

Max retries reached

Max retries reached #27

kname: Suspicious Comment Detection

Check failure on line 1 in .github/workflows/spam-detection.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/spam-detection.yml

Invalid workflow file

The workflow is not valid. .github/workflows/spam-detection.yml (Line: 1, Col: 1): Unexpected value 'kname'
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
check_comment:
runs-on: ubuntu-latest
steps:
- name: Check for suspicious patterns
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
try {
const comment = context.payload.comment;
const body = comment.body.toLowerCase();
const author = comment.user.login;
// Suspicious patterns
const suspiciousPatterns = [
'support team',
'customer service',
'telegram',
'whatsapp',
'contact us',
'click here',
'support group',
't.me/',
'wa.me/',
'support chat',
'live chat',
'support ticket',
'ticket id',
'live support',
'support line',
'support agent',
'support network',
'dedicated support',
'personalized assistance',
'opened for you',
'kindly talk to',
'we apologize',
'live chat with an agent',
'chat button',
'dapp portal',
'decentralized dapp',
'access the portal',
'report your request',
'start a conversation',
'click the chat',
'for assistance',
'reach out to',
'through the chat',
'portal',
'help center',
'ticket',
'this will be review',
'bringing this to our notice',
'initiate a chat',
'regards',
'hello @',
'thanks for bringing',
];
// Add pattern weight scoring
const patternWeights = {
'ticket id': 2,
'support team': 2,
'live support': 2,
'help center': 2,
// Regular patterns have weight of 1
};
// Calculate spam score
let spamScore = 0;
const foundPatterns = suspiciousPatterns.filter(pattern => {
if (body.includes(pattern)) {
spamScore += patternWeights[pattern] || 1;
return true;
}
return false;
});
// Check for external links (excluding common legitimate domains)
const hasExternalLinks = body.includes('http') || body.includes('www');
const hasGithubLinks = body.includes('github.com');
const suspiciousLinks = hasExternalLinks && !hasGithubLinks;
// Trigger on either multiple patterns or high spam score
if (foundPatterns.length > 2 || spamScore >= 3) {
try {
// Create a warning comment
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.issue ? context.payload.issue.number : context.payload.pull_request.number,
body: warningMessage
});
} catch (e) {
console.log('Failed to create comment:', e);
}
try {
// Add 'potential-scam' label
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.issue ? context.payload.issue.number : context.payload.pull_request.number,
labels: ['potential-scam']
});
} catch (e) {
console.log('Failed to add label:', e);
}
}
} catch (e) {
console.log('Workflow error:', e);
// Still mark as failure but with more context
core.setFailed(`Workflow failed: ${e.message}`);
}