Skip to main content
Hồ Đình Dụng

Discord Chatbot

Giới thiệu về HTTP Protocol

HTTP là gì ?

HTTP (HyperText Transfer Protocol) giao thức truyền tải siêu văn bản là một giao thức ứng dụng trong bộ giao thức TCP/IP, được sử dụng để truyền tải dữ liệu giữa máy khách ( client) và máy chủ (server) . HTTP là giao thức cơ bản của World Wide Web (WWW), cho phép người dùng truy cập và tải về các tài nguyên như văn bản, hình ảnh, video, âm thanh

HTTP Version

Version của HTTP protocol

URI

Xác định tài nguyên mà client muốn truy cập

HTTP Method

Xác định hành động mà client muốn máy chủ thực hiện : GET, POST, PUT, DELETE

HTTP Request Headers

Chứa thông tin bổ sung về yêu cầu, ví dụ như loại nội dung (image, json, video, ..), kích thước nội dung

HTTP Body

Chứa thông tin sẽ được gửi cho server ( ví dụ username, password khi login )

Ví dụ

GET /articles/latest HTTP/1.1
Host: www.example.com
Accept: application/json
Connection: Keep-Alive
  • Phương thức: GET
  • URI: /articles/latest
  • HTTP version: HTTP/1.1
  • Headers: Host ( máy chủ), Accept (loại dữ liệu có thể chấp thuận ) , Connection ( mong muốn request cho đến lúc timeout)

Ví dụ khác:

POST /users HTTP/1.1
Host: www.example.com
Content-Type: application/json

{
"email": "johndoe@example.com",
"password":"123456789"
}

HTTP Response

HTTP Status Code (Phần mã trạng thái )

XÁc định thành công hay thất bại của yêu cầu từ client ví dụ

  • 200 : Ok
  • 404: Không tìm thấy
  • 500: Lỗi máy chủ

HTTP Response Headers

Chứa các thông tin bổ sung về phản hồi, chẳng hạn như loại nội dung, kích thước nội dung,…

HTTP Response Body

Bao gồm dữ liệu của tài nguyên mà máy khách yêu cầu

HTTP/1.1 200 OK
Content-Type: application/json

{
"message": "Success",
"data": {
"name": "Dung",
"age": 30,
"occupation": "Blockchain Engineer"
}
}

Giới thiệu cơ bản về Async , Await

asyncawait được sử dụng để hỗ trợ lập trình không đồng bộ

async Được sử dụng để định nghĩa một hàm hoặc code block làm việc không đồng bộ

await: Được sử dụng trong một hàm async để chờ (await) kết quả của một thao tác không đồng bộ

Các thư viện hỗ trợ HTTP trong Rust

Reqwest: Higher level HTTP Client

Hyper : low-level HTTP library

Axum : web server

Warp : web server

Yêu cầu trước khi vào challenge

  • Hiểu cơ bản liên quan tới Rust
  • Hiểu cơ bản HTTP Request, Response
  • Sử dụng framework

Phần 1: Call HTTP để tương tác với Discord server

  • Login
  • Get thông tin user
  • Logout

Link code: https://github.com/CocDap/Rust-Challenges/tree/main/discord-chatbot/discord-api

Phần 2: Discord chatbot GM sử dụng serenity-rs

  • Sử dụng framework Serenity-rust tạo chatbot GM

Link code: https://github.com/CocDap/Rust-Challenges/tree/main/discord-chatbot/discord-bot

Kiến thức học được sau khi xây dựng chatbot bằng Rust

  • Error Handling
  • Config file
  • Cách sử dụng serde, serde_json
  • Cách sử dụng reqwest
  • Run chatbot

Tài liệu tham khảo