JimKarvo's Gitea email (dimitris@jksoftware.gr) differs from Slack
email (jimkarvo@gmail.com), so the email-based Slack lookup fails.
Add MANUAL_USER_MAPPINGS env var (format: GiteaUsername:SlackID,...)
to bypass email lookup when a manual mapping exists.
Changes:
- cache.go: ParseManualMappings() parses env var format
- cache.go: CachedResolver checks manual mappings first (step 0)
- main.go: reads MANUAL_USER_MAPPINGS env var, passes to resolver
The review_requested case was reading e.RequestedReviewer (singular *GiteaUser),
but in some Gitea versions/webhook payloads this field is nil while the
reviewer data comes in requested_reviewers (plural array).
Now uses event.Reviewers from normalizePREvent, which handles both
PullRequest.RequestedReviewers and top-level requested_reviewers.
Keeps e.RequestedReviewer as a fallback for older Gitea versions.