2016-01-28 36 views
6

Tôi đã bắt đầu để viết logic bot cho bức điện bằng cách sử dụng này moduleNode Telegram bot api, hãy trò chuyện chuỗi giữa người sử dụng

tôi có thể tạo câu hỏi đơn giản và câu trả lời logic như thế này:

bot.onText(/\/start/, function(msg, match){ 
    bot.sendMessage(msg.chat.id, "Hello this is great bot"); 
}); 

Khi người dùng các loại /start anh ấy sẽ nhận được thông báo này.

Tôi muốn tạo thứ gì đó như cuộc trò chuyện xích giữa bot và người dùng. Giống như khi người dùng nhập /buy bot sẽ hiển thị các tùy chọn để mua, sau khi người dùng đó nhập những gì anh ta muốn mua thì bot sẽ hiển thị các loại sản phẩm được chọn, v.v.

Làm cách nào để tạo cuộc trò chuyện xích giữa người dùng và bot? Làm thế nào để làm cho bot nhớ các lệnh đã chọn trước đó và thiết lập lại chúng khi nó là thời gian? Tôi có cần phải giữ cơ sở dữ liệu của riêng tôi để làm điều đó không?

Trả lời

8

Bạn có thể thực hiện theo nhiều cách khác nhau.

  1. Bạn có thể lưu trữ các "nhà nước" cho người sử dụng là vào bản thân
  2. Bạn có thể sử dụng nhiều lệnh mà sẽ làm việc trên riêng của họ, nhưng bạn chỉ cần cung cấp cho người dùng cảm giác được hướng dẫn
  3. Bạn có thể sử dụng các ForceReply của API Bot

Được rồi. Vì vậy, đối với 1. Tôi muốn nói rằng bạn có một số lợi ích. Bạn thực sự có thể hướng dẫn người dùng và hạn chế quyền truy cập vào một số lệnh, khi anh ta không ở trạng thái thích hợp. Vì vậy, giả sử anh ta muốn mua Popcorn nhưng anh ta ở trong shoestore bạn không cho phép lệnh bằng cách kiểm tra trạng thái người dùng đã lưu.

Đối với 2. bạn sẽ luôn cho phép người dùng sử dụng /buy/buy_popcorn/buy_shoe. Nhưng tùy thuộc vào câu trả lời của bạn, bạn chỉ cần cung cấp cho anh ta một số lượng cụ thể của các lựa chọn có thể.

User: /buy 

What do you want to buy? /shoes or /food :Bot 

User: /food 

How about some Popcorn? Use /buy_popcorn :Bot 

User: /buy_shoe 

Alright. Shoes added to cart :Bot 

này sẽ được phép, nhưng người dùng sẽ phải tự viết /buy_shoe

Các 3. cách có thể được sử dụng ForceReply. Người dùng sẽ tự động nhận được thông báo answer to. Vì vậy, khi anh ta sử dụng /buy_shoe anh ta sẽ trả lời tin nhắn cuối cùng mà bot đã gửi. Bạn cũng sẽ nhận được thông báo mà người dùng đã trả lời trong thư từ api. Bạn có thể kiểm tra xem tin nhắn mà người dùng trả lời có phải là điều kiện tiên quyết thích hợp/thông điệp thích hợp cho lệnh và sau đó hạn chế hoặc cho phép lệnh.

User: /buy 

What do you want to buy? /shoes or /food :Bot 

User: [Answer to: What do you...] /food 

How about some Popcorn? Use /buy_popcorn :Bot 

User: [Answer to: How about some...] /buy_shoe 

Sorry, but you're currently in the Food Store :Bot 

Tùy theo sở thích cá nhân, tôi đoán vậy. Nhưng tất cả đều có ưu và khuyết điểm và bạn phải quyết định xem bạn có muốn cho phép các lệnh cụ thể mà không cần điều kiện tiên quyết hay không.

Danh sách này có thể không đầy đủ. Có thể có nhiều cách khác, tôi không nghĩ đến. Nhưng đây là 3 cách tôi biết.

+0

Cảm ơn câu trả lời của bạn. –

Các vấn đề liên quan