SHARE
TWEET

Source code chatbot của Minh Mập <3

anhkiet2507 Jan 23rd, 2018 (edited) 13,109 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2. var SimpleFilter = require("./bot_filter/simpleFilter");
  3. var SpamFilter = require("./bot_filter/spamFilter");
  4. var CategoryFilter = require("./bot_filter/categoryFilter");
  5. var SearchFilter = require("./bot_filter/searchFilter");
  6. var TagFilter = require("./bot_filter/tagFilter");
  7. var YoutubeFilter = require("./bot_filter/youtubeFilter");
  8. var ButtonFilter = require("./bot_filter/buttonFilter");
  9. var EndFilter = require("./bot_filter/endFilter");
  10. var ImageFilter = require("./bot_filter/imageFilter");
  11.  
  12. var async = require("asyncawait/async");
  13. var await = require("asyncawait/await");
  14.  
  15. var BOT_REPLY_TYPE = require("./constants").BOT_REPLY_TYPE;
  16. var BUTTON_TYPE = require("./constants").BUTTON_TYPE;
  17. var PAYLOAD = require("./constants").PAYLOAD;
  18.  
  19. var girlAPI = require("./api/girlAPI");
  20. var fbAPI = require("./api/facebookAPI");
  21. var faceRecAPI = require("./api/faceRecAPI");
  22. var ulti = require("./utilities");
  23.  
  24.  
  25. class BotAsync {
  26.     constructor() {
  27.  
  28.        
  29.  
  30.        this._helloFilter = new SimpleFilter(["hi", "halo", "hế lo", "hello", "chào", "xin chào"], "Chào bạn, mềnh là bot Noob: <3 Bạn cần giúp gì nào ?");
  31.  
  32.         var girlFilter = new ImageFilter(["@gái", "@girl", "hình gái", "anh gai", "cute girl"], girlAPI.getRandomGirlImage.bind(girlAPI)); // From xkcn.info
  33.         var sexyGirlFilter = new ImageFilter(["@sexy", "sexy", "fap", "anh nong", "hot girl", "hinh sexy", "gai sexy", "sexy girl"],
  34.             girlAPI.getRandomSexyImage.bind(girlAPI, "637434912950811", 760)); // From xinh nhẹ nhàng
  35.         var javGirlFilter = new SimpleFilter(["@jav", "jav", "japan anti virus", "idol", "jap"],
  36.             "API Jav sập rồi, lúc khác quay lại nhé =))"); // From hội JAV
  37.         var bikiniGirlFilter = new ImageFilter(["@bikini", "bikini", "ao tam", "do boi"],
  38.             girlAPI.getRandomSexyImage.bind(girlAPI, "169971983104176", 1070)); // From hội bikini
  39.  
  40.         var youtubeFilter = new YoutubeFilter(["@nhạc", "@music", "@youtube", "@yt"]);
  41.  
  42.         var helpFilter = new SimpleFilter(["help", "giúp đỡ", "giúp với", "giúp mình", "giúp"],
  43.         "Đang làm <3");
  44.            
  45.         var botInfoFilter = new SimpleFilter(["may la ai", "may ten gi", "may ten la gi",
  46.                 "ban ten la gi", "ban ten gi", "ban la gi",
  47.                 "bot ten gi", "bot ten la gi", "your name"
  48.             ],
  49.             "Mình là chat bot Noob: <3. Viết bởi anh Minh đập chai cute <3");
  50.         var adInfoFilter = new SimpleFilter(["ad la ai", "hoi ve ad", "ad ten gi", "who is ad",
  51.                 "ad la thằng nào", "thong tin ve ad", "ad dau", "admin",
  52.                 "ai viet ra may", "who made you", "ad la gi", "ad ten la gi"
  53.             ],
  54.             "Ad là Nguyễn Hoàng Minh, đập chai cute thông minh tinh tế <3. Bạn vào đây xem thêm nhé: https://facebook.com/minhnh0302");
  55.         var thankyouFilter = new SimpleFilter(["cảm ơn", "thank you", "thank", "nice", "hay qua",
  56.             "gioi qua", "good job", "hay nhi", "hay ghe"
  57.         ], "Không có chi. Rất vui vì đã giúp được cho bạn ^_^");
  58.  
  59.         var chuiLonFilter = new SimpleFilter(["dm", "dmm", "đậu xanh", "rau má", "dcm", "vkl", "vl", "du me", "may bi dien",
  60.                 "bố láo", "ngu the", "me may", "ccmm", "ccmn", "bot ngu", "đờ mờ", "fuck", "fuck you"
  61.             ],
  62.             "Bot là người nhân hậu, không chửi thề. Cút ngay không bố đập vỡ cmn ass bây giờ :v!");
  63.         var testFilter = new SimpleFilter(["test"],
  64.             "Đừng test nữa, mấy hôm nay người ta test nhiều quá bot mệt lắm rồi :'(");
  65.         this._goodbyeFilter = new SimpleFilter(["tạm biệt", "bye", "bai bai", "good bye"], "Tạm biệt, hẹn gặp lại ;)");
  66.         var crushFilter = new SimpleFilter(["Crush cua admin la ai", "Crush cua Hoang Minh la ai"],
  67.         "Suỵt! Bé mồm thôi nhé <3 Là chị f3f9961812141f8c30f197e166fdbcf4 đấy <3");
  68.  
  69.         this._filters = [new SpamFilter(),
  70.             new SearchFilter(), new CategoryFilter(), new TagFilter(), youtubeFilter,
  71.             girlFilter, sexyGirlFilter, javGirlFilter, bikiniGirlFilter,
  72.             adInfoFilter, botInfoFilter,
  73.             chuiLonFilter, thankyouFilter, helpFilter,
  74.             this._goodbyeFilter, this._helloFilter, testFilter, new EndFilter(), crushFilter
  75.         ];
  76.     }
  77.  
  78.     setSender(sender) {
  79.         this._helloFilter.setOutput(`Chào ${sender.first_name}, mềnh là bot Noob: <3. Bạn cần giúp gì nào <3 ?`);
  80.         this._goodbyeFilter.setOutput(`Tạm biệt ${sender.first_name}, hẹn gặp lại ;)`);
  81.     }
  82.  
  83.     chat(input) {
  84.         for (var filter of this._filters) {
  85.             if (filter.isMatch(input)) {
  86.                 filter.process(input);
  87.                 return filter.reply(input);
  88.             }
  89.         }
  90.     }
  91.  
  92.     reply(senderId, textInput) {
  93.         async(() => {
  94.             var sender = await (fbAPI.getSenderName(senderId));
  95.             this.setSender(sender);
  96.  
  97.             var botReply = await (this.chat(textInput));
  98.             var output = botReply.output;
  99.             switch (botReply.type) {
  100.                 case BOT_REPLY_TYPE.TEXT:
  101.                     fbAPI.sendTextMessage(senderId, output);
  102.                     break;
  103.                 case BOT_REPLY_TYPE.POST:
  104.                 case BOT_REPLY_TYPE.VIDEOS:
  105.                     fbAPI.sendTextMessage(senderId, "Có ngay đây. Xem thoải mái ;)");
  106.                     fbAPI.sendGenericMessage(senderId, ulti.videosToPayloadElements(output));
  107.                     break;
  108.                 case BOT_REPLY_TYPE.BUTTONS:
  109.                     let buttons = botReply.buttons;
  110.                     fbAPI.sendButtonMessage(senderId, output, buttons);
  111.                     break;
  112.                 case BOT_REPLY_TYPE.IMAGE:
  113.                     fbAPI.sendTextMessage(senderId, "Đợi tí có liền, đồ dại gái hà ^^");
  114.                     fbAPI.sendImage(senderId, output);
  115.                     break;
  116.                 default:
  117.             }
  118.         })();
  119.     }
  120.  
  121.  
  122.     processImage(senderId, imageUrl) {
  123.         // If the image is not an emo
  124.         if (imageUrl.includes("&oh=") && imageUrl.includes("&oe=")) {
  125.             faceRecAPI.analyzeImage(imageUrl).then((reply) => {
  126.                 fbAPI.sendTextMessage(senderId, reply);
  127.             });
  128.  
  129.             faceRecAPI.analyzeEmo(imageUrl).then((reply) => {
  130.                 fbAPI.sendTextMessage(senderId, reply);
  131.             });
  132.         } else {
  133.             // Send emo back
  134.             fbAPI.sendImage(senderId, imageUrl);
  135.         }
  136.  
  137.     }
  138.  
  139.     processPostback(senderId, payload) {
  140.         async(() => {
  141.             var sender = await (fbAPI.getSenderName(senderId));
  142.             this.setSender(sender);
  143.             switch (payload) {
  144.                 case PAYLOAD.SEE_CATEGORIES:
  145.                     this.reply(senderId, "hello");
  146.                     break;
  147.                 case PAYLOAD.HELP:
  148.                     this.reply(senderId, "-help");
  149.                     break;
  150.                 case PAYLOAD.GIRL:
  151.                     this.reply(senderId, "@girl");
  152.                     break;
  153.                 default:
  154.                     console.log("Unknown payload: " + payload);
  155.             }
  156.         })();
  157.     }
  158. }
  159.  
  160. module.exports = new BotAsync();
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top