Main Bot Love Aura Trợ Giảng Bò Trợ Lý Bò Xyallia
Trợ Giảng Bò · Chấm bài tự động

Trợ Giảng Bò
Teaching Assistant

Chấm bài lập trình C tự động · Rubric 70/10/20 · Bảng xếp hạng · Quản lý test cases · Bài tập thêm

⚙️GCC sandbox
📊70/10/20 rubric
🏆Bảng xếp hạng
Bài tập thêm
📋Lịch sử nộp
@bot 

Quy trình nộp & chấm bài

Học viên nộp file .c — bot compile bằng GCC, chạy test cases, trả kết quả trong vài giây.

1
Giáo viên thiết lập đềUpload file JSON test cases qua !settest buoi X bai Y (kèm file .json).
2
Học viên xem đềNhắn tin nhắn thường chứa "bài tập buổi X bài Y" hoặc @bot xembte X Y cho bài tập thêm.
3
Nộp bàiGửi file .c kèm tin nhắn "nộp bài buổi X bài Y", hoặc @bot nopbte X Y + file .c cho bài tập thêm.
4
Bot chấm điểmCompile GCC, chạy test cases, đánh giá chính tả biến/hàm, tính sáng tạo. Kết quả embed ngay lập tức.
Pending mode: Nếu gõ @bot nopbte X Y không kèm file, bot sẽ chờ bạn gửi file .c trong vòng 60 giây ở cùng kênh đó.

Rubric 70 / 10 / 20

Tổng 100 điểm chia theo 3 tiêu chí — chạy đúng, chính tả code, sáng tạo.

Tiêu chíĐiểm tối đaMô tả
🏃 Chạy được + đúng 70 điểm Compile thành công, output khớp test cases. Mỗi test case sai trừ điểm theo tỷ lệ. Có 3 mức: Hoàn hảo / Một số sai / Không chạy được.
📝 Chính tả 10 điểm Đặt tên biến, hàm đúng chuẩn (camelCase / snake_case), không sai chính tả, không dùng tên viết tắt khó hiểu.
✨ Sáng tạo 20 điểm Cấu trúc code tốt, xử lý edge case, code ngắn gọn, có comment hợp lý, không hardcode. Bot gợi ý cải thiện khi thiếu điểm.
🏆 Tổng 100 điểm Điểm cao nhất trong tất cả lần nộp được lưu làm điểm chính thức. Có thể nộp lại nhiều lần.
Khi điểm sáng tạo chưa đạt tối đa, bot sẽ tự động gợi ý cụ thể cách cải thiện code (ví dụ: "thêm kiểm tra input âm", "tách hàm riêng", "thêm comment giải thích thuật toán").

Toàn bộ tính năng

Bot hỗ trợ cả học viên lẫn giáo viên với giao diện dễ dùng.

⚙️
Chấm bài tự động
Compile C với GCC trong sandbox, chạy test cases có timeout, so sánh output, trả điểm 3 tiêu chí (70/10/20) trong embed chi tiết.
Core
🗃️
Quản lý test cases
Giáo viên upload file JSON định nghĩa test cases. Bot validate cấu trúc, lưu vào database, hỗ trợ xem trước 3 test đầu tiên.
Quản lý
🏆
Bảng xếp hạng
Xem top học viên theo từng bài (!ketqua) hoặc bài tập thêm (@bot bangxephangbte). Hiển thị điểm cao nhất và số lần nộp.
Ranking
Bài tập thêm
Hệ thống bài tập nâng cao riêng biệt — xem đề, nộp bài, xem bảng xếp hạng toàn bộ qua mention bot. Lưu lịch sử nộp riêng.
Extra
📋
Lịch sử nộp bài
Học viên xem lịch sử nộp (!lichsu). Giáo viên xem toàn bộ bài đã nộp của học viên bất kỳ (!list @user) — cả bài chính lẫn bài thêm.
History
🎓
Nộp bài hộ
Giáo viên có thể nộp bài thay mặt học viên bằng cách mention học viên trong tin nhắn "Nộp bài @member buổi X bài Y" kèm file .c.
Teacher

Lệnh Trợ Giảng Bò

Bot dùng tin nhắn thườngmention — không có prefix ký tự đặc biệt cho học viên.

Học viên dùng tin nhắn thường (không cần prefix hay mention). Bot tự nhận dạng qua nội dung tin nhắn.
nộp bài buổi X bài Y
Nộp bài tập chính. Gửi tin nhắn kèm file .c đính kèm. Bot compile và trả điểm ngay lập tức theo rubric 70/10/20.
nộp bài buổi 1 bài 2 (+ đính kèm file .c)
bài tập buổi X bài Y
Xem đề bài tập chính. Bot trả embed với đề bài, gợi ý, kết quả mẫu và hướng dẫn nộp.
bài tập buổi 2 bài 3
bài tập thêm buổi X
Xem danh sách bài tập thêm của buổi X. Hiển thị tên, mức độ (Siêu dễ/Vừa/Khó) và footer hướng dẫn cách xem đề từng bài.
bài tập thêm buổi 1
!lichsuHọc viên
Xem lịch sử nộp bài của mình cho một bài cụ thể — điểm từng lần nộp, điểm tốt nhất.
!lichsu buoi <X> bai <Y>
!ketqua
Xem bảng xếp hạng cho một bài cụ thể. Hiển thị top học viên theo điểm cao nhất và số lần nộp bài.
!ketqua buoi <X> bai <Y>
Không tìm thấy lệnh phù hợp 🔍
Bài tập thêm dùng mention bot (@bot lệnh). Không dấu, không phân biệt hoa thường. Lệnh -xembte-bangxephangbte cũng hoạt động.
@bot nopbte X Y
Nộp bài tập thêm buổi X bài Y. Có thể gửi kèm file .c trong cùng tin nhắn, hoặc không gửi file — bot sẽ chờ file .c trong 60 giây tiếp theo.
@Trợ Giảng Bò nopbte 1 2 (+ file .c)
@bot xembte X Y
Xem đề bài tập thêm buổi X bài Y. Trả embed với đề bài, gợi ý, kết quả mẫu và hướng dẫn nộp bài.
@Trợ Giảng Bò xembte 2 3
@bot bangxephangbte X Y
Bảng xếp hạng bài tập thêm buổi X bài Y. Alias: @bot bxhbte X Y. Hiển thị top học viên theo điểm cao nhất.
@Trợ Giảng Bò bxhbte 1 2
Không tìm thấy lệnh phù hợp 🔍
Lệnh giáo viên dùng prefix !. Chỉ hoạt động với người dùng có quyền Manage Messages hoặc được cấu hình là giáo viên trong bot.
!settestTeacher
Thiết lập / cập nhật test cases cho một bài tập. Gửi kèm file .json chứa mảng test cases với inputexpected_output. Tùy chọn time N để đặt timeout (mili-giây).
!settest buoi <X> bai <Y> [time N] + .json
!xemtestTeacher
Xem thông tin test cases của một bài: số lượng test, timeout, đề bài và 3 test cases đầu tiên làm preview.
!xemtest buoi <X> bai <Y>
!ketqua
Xem bảng điểm của tất cả học viên đã nộp bài Y buổi X. Sắp xếp theo điểm cao nhất, hiển thị số lần nộp.
!ketqua buoi <X> bai <Y>
!listTeacher
Xem toàn bộ bài đã nộp của một học viên — bài tập chính bài tập thêm trong hai section riêng biệt. Điểm tốt nhất và số lần nộp từng bài.
!list <@user>
Nộp bài hộTeacher
Nộp bài hộ học viên bất kỳ. Mention học viên trong tin nhắn, kèm file .c. Kết quả được ghi vào lịch sử của học viên đó.
Nộp bài @member buổi X bài Y (+ file .c)
Không tìm thấy lệnh phù hợp 🔍

File JSON Test Cases

// Cấu trúc file .json cho !settest
[
  {
    "input": "5\n3",
    "expected_output": "8"
  },
  {
    "input": "10\n-2",
    "expected_output": "8"
  }
]

Biến môi trường

# Trợ Giảng Bò
TROGIANG_BO_TOKEN=bot_token_here
TROGIANG_BO_GUILD_ID=guild_id
TROGIANG_BO_TEACHER_ROLE_ID=role_id # Role có quyền dùng lệnh giáo viên
TROGIANG_BO_GCC_TIMEOUT=5000 # Timeout compile (ms), mặc định 5000