ข้ามไปเนื้อหาหลัก

✓ เสร็จแล้ว

DevLog Bot

บอท Discord สำหรับบันทึก dev log อัตโนมัติ ช่วยติดตามความก้าวหน้าของโปรเจคต่างๆ โดยไม่ต้องออกจาก workspace

· อ่านประมาณ 2 นาที

สารบัญ

ปัญหาที่แก้

ทำงานใน Discord อยู่แล้ว แต่การบันทึก “ทำอะไรไปบ้างวันนี้” ยังต้องสลับไปเปิด Notion หรือเขียนใน sticky note ทุกครั้ง — DevLog Bot แก้ปัญหานี้ด้วยการให้บันทึกได้เลยจากที่ที่ทำงานอยู่

การใช้งาน

# บันทึก log สั้นๆ
/log ปรับ layout ให้ responsive สำหรับ mobile

# บันทึกพร้อมระบุโปรเจค
/log --project creative-space แก้ bug การ sort content ตาม date

# ดูสรุปวันนี้
/summary today

# ดูสรุปรายสัปดาห์
/summary week --project creative-space

ฟีเจอร์หลัก

  • slash commands — บันทึก log ด้วยคำสั่งง่ายๆ ผ่าน /log
  • project tagging — จัดหมวดหมู่ log ตามโปรเจค ค้นหาย้อนหลังได้
  • auto summary — สรุปสิ่งที่ทำรายวันและรายสัปดาห์ ส่งเข้า channel อัตโนมัติตอนเช้า
  • export — ส่งออกเป็น Markdown หรือ CSV เพื่อนำไปใช้ต่อ

Tech Stack

  • TypeScript + Discord.js — type-safe bot development
  • SQLite (better-sqlite3) — เก็บ log ในเครื่อง ไม่พึ่ง cloud database
  • node-cron — ตั้งเวลาส่ง summary อัตโนมัติ

Architecture

DevLog Bot
├── src/
│   ├── commands/       — slash command handlers (log, summary, export)
│   ├── db/             — SQLite schema + query functions
│   ├── scheduler/      — cron jobs สำหรับ auto summary
│   └── utils/          — formatters, parsers
├── data/
│   └── devlog.db       — SQLite database (gitignore)
└── bot.ts              — entry point, event registration

การ Deploy

Bot รันบน VPS ส่วนตัว ด้วย PM2 สำหรับ auto-restart:

# start bot
pm2 start dist/bot.js --name devlog-bot

# ดู log
pm2 logs devlog-bot

# restart อัตโนมัติเมื่อ server รีบูต
pm2 startup && pm2 save

ตัวอย่าง Auto Summary Output

📋 DevLog Summary — 14 มิ.ย. 2025

🔨 creative-space (5 entries)
  • แก้ dark mode FOUC โดยใส่ inline script ก่อน CSS
  • เพิ่ม TOC component ด้วย IntersectionObserver
  • ปรับ Card hover animation
  • build ผ่าน 49 หน้า

Total: 5 log entries | 3 projects tracked

สิ่งที่เรียนรู้

Discord API ซับซ้อนกว่าที่คิด — Slash commands ต้องลงทะเบียนกับ Discord API แยกต่างหาก และมี rate limit ที่ต้องจัดการ

SQLite เพียงพอสำหรับ personal tool — ไม่จำเป็นต้องมี database server ขนาดใหญ่สำหรับ bot ที่ใช้คนเดียว SQLite เร็วและง่ายกว่ามาก

Conversational UX ต่างจาก Web UX — การออกแบบคำสั่ง bot ต้องคิดจากมุมมอง “พิมพ์” ไม่ใช่ “คลิก” — ต้องสั้น จำง่าย และ error message ต้องชัดเจนมาก

Type safety ใน Discord.js — Discord.js v14 + TypeScript strict mode ช่วย catch ข้อผิดพลาด interaction options ก่อน runtime ทำให้ debug ง่ายขึ้นมาก