- Install python-telegram-bot dependency - Start Telegram bot service successfully - Confirm correct group ID (MOMO PRO - small shrimp group) - Bot now running with all commands and button interface functional - Natural language processing restored with keyword matching Fixes issue where Telegram group could not communicate using natural language.
115 lines
3.6 KiB
YAML
115 lines
3.6 KiB
YAML
name: Aider Code Review
|
||
|
||
on:
|
||
push:
|
||
branches: [ main, develop ]
|
||
pull_request:
|
||
branches: [ main ]
|
||
workflow_dispatch:
|
||
inputs:
|
||
review_type:
|
||
description: 'Type of code review'
|
||
required: true
|
||
default: 'basic'
|
||
type: choice
|
||
options:
|
||
- basic
|
||
- security
|
||
- performance
|
||
target_files:
|
||
description: 'Specific files to review (optional, comma-separated)'
|
||
required: false
|
||
type: string
|
||
|
||
jobs:
|
||
code-review:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
with:
|
||
fetch-depth: 0 # 獲取完整的Git歷史
|
||
|
||
- name: Set up Python
|
||
uses: actions/setup-python@v4
|
||
with:
|
||
python-version: '3.11'
|
||
|
||
- name: Install dependencies
|
||
run: |
|
||
python -m pip install --upgrade pip
|
||
pip install aider-chat
|
||
# 如果有requirements.txt,也安裝專案依賴
|
||
if [ -f requirements.txt ]; then
|
||
pip install -r requirements.txt
|
||
fi
|
||
|
||
- name: Configure Git
|
||
run: |
|
||
git config --global user.name "GitHub Actions"
|
||
git config --global user.email "actions@github.com"
|
||
|
||
- name: Run Code Review
|
||
run: |
|
||
# 創建logs目錄
|
||
mkdir -p logs
|
||
|
||
# 確定要review的檔案
|
||
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ github.event.inputs.target_files }}" ]; then
|
||
# 手動觸發,指定檔案
|
||
IFS=',' read -ra FILES <<< "${{ github.event.inputs.target_files }}"
|
||
python scripts/code_review.py --files "${FILES[@]}" --type "${{ github.event.inputs.review_type }}"
|
||
elif [ "${{ github.event_name }}" = "pull_request" ]; then
|
||
# PR,review變更的檔案
|
||
git diff origin/${{ github.base_ref }}...HEAD --name-only --diff-filter=ACM | grep -E '\.(py|js|ts|jsx|tsx|html|css)$' > /tmp/changed_files.txt
|
||
if [ -s /tmp/changed_files.txt ]; then
|
||
python scripts/code_review.py --files $(cat /tmp/changed_files.txt | tr '\n' ' ') --type basic
|
||
else
|
||
echo "No files to review"
|
||
fi
|
||
else
|
||
# Push,review暫存的檔案
|
||
python scripts/code_review.py --auto --type basic
|
||
fi
|
||
|
||
- name: Upload review reports
|
||
uses: actions/upload-artifact@v3
|
||
if: always()
|
||
with:
|
||
name: code-review-reports
|
||
path: logs/review_*.md
|
||
retention-days: 30
|
||
|
||
- name: Comment PR with review results
|
||
if: github.event_name == 'pull_request'
|
||
uses: actions/github-script@v6
|
||
with:
|
||
script: |
|
||
const fs = require('fs');
|
||
const path = './logs';
|
||
|
||
try {
|
||
const files = fs.readdirSync(path);
|
||
const reviewFiles = files.filter(f => f.startsWith('review_') && f.endsWith('.md'));
|
||
|
||
if (reviewFiles.length > 0) {
|
||
let comment = '## 🔍 Aider Code Review 報告\n\n';
|
||
|
||
reviewFiles.forEach(file => {
|
||
const content = fs.readFileSync(`${path}/${file}`, 'utf8');
|
||
comment += `### ${file}\n\n`;
|
||
comment += '```\n' + content + '\n```\n\n';
|
||
});
|
||
|
||
github.rest.issues.createComment({
|
||
issue_number: context.issue.number,
|
||
owner: context.repo.owner,
|
||
repo: context.repo.repo,
|
||
body: comment
|
||
});
|
||
}
|
||
} catch (error) {
|
||
console.log('No review reports found or error reading reports:', error.message);
|
||
}
|