SC
/
← Back to projects

Aug 2026 · 5 days

Discord Competition Bot

A personal Discord bot that returns unseen competition announcements, eligibility, application dates, and links via the /최신 command.

PythonhttpxBeautifulSoupDynamoDBAWS LambdaAPI GatewayAWS SAMCloudWatch

Overview

A personal bot that reduces repetitive visits to competition websites and the effort of distinguishing new announcements. The Discord /최신 command returns unseen announcements with open or upcoming applications, eligibility, dates, and detailed links.

  • Period: August 2026 · 5 days
  • Team: Solo project
  • Role: Backend and infrastructure

Contributions

  • Announcement collection and new-item detection, request validation, I/O optimization, and regression tests
  • API Gateway and Lambda setup, AWS SAM deployment configuration, and CloudWatch logging

Fewer External Requests and Bounded Concurrency

Problem

Repeated detail requests for known announcements and individual database calls accumulated, taking roughly five minutes even when no new announcements existed.

Approach

Fetch the list, check known announcements with BatchGetItem, then retrieve and save details only for new items. Reduced external requests and applied bounded concurrency. Increased items per page from 100 to 1,000 and retried unprocessed keys.

Parallel list requests, batched existing IDs, and new-announcement detail retrieval; diagram from V13

StageAction
List HTTPFetch announcement list
BatchGetItemCheck existing announcements in a batch
New announcementsFetch details and persist
No new announcementsUpdate lookup state

Results

  • Worker execution time: 299.5s → 17.2s, approximately 94.2% lower
  • List HTTP requests: 30 → 5
  • DynamoDB writes in a run with no new announcements: 626 → 1

Blog — External I/O Bottlenecks