+10

Tạo ứng dụng giao tiếp với Bot Telegram bằng Node.js + Docker và deploy lên EC2 AWS (Phần 1)

Telegram đang ngày càng được sử dụng rộng rãi vì những chức năng mà nó mang lại (chỉnh sửa tin nhắn đã gửi, gửi file dung lượng lớn, last seen,...) với một performance vô cùng tuyệt vời. Một trong những tính năng đó là Bot Telegram, có rất nhiều bot trong các loại dịch vụ khác nhau phục vụ mục đích giao tiếp kỹ thuật số.

Bot Telegram có thể làm mọi thứ và giúp tiết kiệm thời gian. Vì thế hôm nay mình sẽ hướng dẫn tạo một project sử dụng Node.js + Docker để tương tác với Bot Telegram nhé.

I. Đăng kí Bot với Telegram

  1. Mở ứng dụng telegram và tìm kiếm từ khoá BotFather và chọn BotFather có tick xanh image.png

  2. Nhấn vào Start

  3. Hệ thống sẽ hiển thị đoạn chat, bạn có thể chọn ngay /newbot - create a new bot hoặc nhắn trực tiếp từ khoá /newbot bằng khung chat image.png

  4. Nhập tên cho Bot image.png

  5. Nhập username cho Bot

  6. Hệ thống sẽ trả về kết quả có chứa secret token nếu bước trên thành công image.png

II. Tạo ứng dụng Node.js

  1. Cài đặt NodeJs nếu chưa có: https://nodejs.org/en/

  2. Tạo folder chứa project và đặt tên bot-tele-sample

  3. Cd your-path/bot-tele-sample bằng terminal/cmd

  4. Code . (Ở đây mình shortcut vscode, bạn có thể mở project một cách thủ công)

  5. Chạy lệnh npm init image.png

  6. Enter (lấy tên folder cho tên package) hoặc nhập tên package khác

  7. Ở các bước tiếp theo bạn cứ Enter cho nhanh 😹 image.png

  8. Tạo file index.js

  9. Install package telegraf - package được recommend bởi chính telegram: npm i telegraf

  10. Import telegraf và khởi tạo instance cho nó với token mà bạn đã được cấp trước đó image.png

  11. Thêm 2 dòng lệnh và lauch bot

bot.start((ctx) => ctx.reply("Welcome"));
bot.help((ctx) => ctx.reply("Send me a sticker"));
  • ctx.reply(message) là nội dung mà Bot sẽ gửi cho bạn
  1. Vào telegram tìm username bạn tạo cho bot và start trò chuyện với nó image.png

  2. Bot sẽ trả lời "Welcome" như trong đoạn code của chúng ta vừa thêm image.png

  3. Gửi tin nhắn /help và Bot sẽ phản hồi image.png

  4. Thêm dòng lệnh lắng nghe những tin nhắn được gửi bằng sticker, sau đó restart lại project

bot.on("sticker", (ctx) => ctx.reply("🐶"));

  1. Gửi cho Bot một sticker, bạn sẽ nhận được reply từ nó image.png

  2. Thêm một đoạn code để lắng nghe messages được gửi đi, sau đó restart lại project

bot.on("message", async (ctx) => {
  const message = ctx.update.message.text;
  if (message.match(/hello/)) {
    ctx.reply("Xin chào");
  } else {
    ctx.reply("Hong hiểu...");
  }
});
  1. Gửi tin nhắn cho Bot thôi nào

image.png

Code file index.js

const { Telegraf } = require("telegraf");

const YOUR_TOKEN = "your_token";
const bot = new Telegraf(YOUR_TOKEN);

bot.start((ctx) => ctx.reply("Welcome"));
bot.help((ctx) => ctx.reply("Send me a sticker"));

bot.on("sticker", (ctx) => ctx.reply("🐶"));

bot.on("message", async (ctx) => {
  const message = ctx.update.message.text;
  if (message.match(/hello/)) {
    ctx.reply("Xin chào");
  } else {
    ctx.reply("Hong hiểu...");
  }
});

bot.launch();

III. Run Docker

Hẹn các bạn ở phần 2 nhé ^^, trong phần tiếp theo mình sẽ hướng dẫn các bạn setup Docker và deploy project lên AWS EC2.

Mục tìm kiếm đồng đội

Hiện tại thì bên công ty mình, là Hoàng Phúc International, với hơn 30 năm kinh nghiệm trong lĩnh vực thời trang. Và là trang thương mại điện tử về thời trang lớn nhất Việt Nam. Team công nghệ của HPI đang tìm kiếm đồng đội cho các vị trí như:

Với mục tiêu trong vòng 5 năm tới về mảng công nghệ là:

  • Sẽ có trang web nằm trong top 10 trang web nhanh nhất VN với 20 triệu lượt truy cập mỗi tháng.
  • 5 triệu loyal customers và có hơn 10 triệu transactions mỗi năm.

Team đang xây dựng một hệ thống rất lớn với rất nhiều vấn để cần giải quyết, và sẽ có rất nhiều bài toàn thú vị cho các bạn. Nếu các bạn có hứng thú trong việc xây dựng một hệ thống lớn, linh hoạt, dễ dàng mở rộng, và performance cao với kiến trúc microservices thì hãy tham gia với tụi mình.

Nếu các bạn quan tâm hãy gửi CV ở trong trang tuyển dụng của Hoàng Phúc International hoặc qua email kha.le@hoang-phuc.net của mình nha

Cảm ơn các bạn đã đọc.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.