成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js版微信聊天機(jī)器人——wechat-robot

Darkgel / 1735人閱讀

摘要:基于和端微信開發(fā)的聊天機(jī)器人。使用的微信賬號(hào)即充當(dāng)機(jī)器人的賬號(hào)為個(gè)人賬號(hào),可自定義指令。關(guān)閉玫瑰感謝您的使用玫瑰閃電需要開啟請(qǐng)?jiān)诳刂婆_(tái)啟動(dòng)程序閃電微信發(fā)出關(guān)閉口令,程序退出。

Github: https://github.com/doterlin/wechat-robot

基于phantomjs和web端微信開發(fā)的聊天機(jī)器人。使用的微信賬號(hào)(即充當(dāng)機(jī)器人的賬號(hào))為個(gè)人賬號(hào),可自定義指令。

效果

可以指定一個(gè)微信賬號(hào):

自定義指令不會(huì)交給AI處理:

獨(dú)樂樂不如眾樂樂,可以指定到群聊上:

在后臺(tái)程序查看log:

使用場景

微信智能回復(fù),監(jiān)控,統(tǒng)計(jì)等

便捷查詢

娛(liao)樂(mei)

如何使用 1.安裝環(huán)境

下載好源碼并安裝以下環(huán)境:

1.node.js
2.phantomjs
3.casperjs

2.配置

找到并配置好/config/const.js

//機(jī)器人名字
var ROBOT_NAME = "小強(qiáng)";

module.exports = {
    //微信web版地址
    "URL"          : "https://wx.qq.com/",

    //機(jī)器人名字
    "ROBOT_NAME"   : ROBOT_NAME,
    
    //圖靈機(jī)器人apiKey和api地址
    //AI部分使用的是第三方機(jī)器人圖靈(http://www.tuling123.com/)
    //這里只是示例,請(qǐng)大家自行到圖靈官網(wǎng)注冊(cè)并替換掉apikey免費(fèi)版限5000次調(diào)用/天。有條件的同學(xué)可以付費(fèi)支持下好產(chǎn)品
    "TURING_APIKEY": "99fecec3424d416898b91b0998e2b26a",
    "TURING_URL"   : "http://www.tuling123.com/openapi/api",

    //鎖定的微信號(hào)備注,注意是備注;如果是群聊則填群聊名稱即可。
    //填寫的名稱請(qǐng)預(yù)先在手機(jī)微信上搜索確認(rèn)搜索結(jié)果是否出現(xiàn)在第一個(gè)
    "TARGET_NICK"  : "二十投小分隊(duì)",

    //啟動(dòng)時(shí)打招呼消息
    "HELLO_WORLD"  : "[閃電]" + ROBOT_NAME + "[閃電]已啟動(dòng)...",

}
3.運(yùn)行和登錄微信

安裝依賴和運(yùn)行命令:

npm install
capserjs index.js

如果提示python找不到之類的話請(qǐng)安裝一下python并保證其能運(yùn)行在全局

掃碼登錄微信
運(yùn)行后看到如下提示時(shí)則掃一下彈出來的二維碼:

正在加載二維碼...
已保存二維碼,路徑:"static/img/qr.jpg".
正在使用默認(rèn)軟件打開二維碼,請(qǐng)用手機(jī)微信掃一掃確認(rèn)登錄 (若沒有請(qǐng)手動(dòng)打開)

請(qǐng)?jiān)?b>一分鐘內(nèi)使用手機(jī)掃碼并確認(rèn)登錄。出現(xiàn)登錄成功發(fā)送歡迎語提示后即可。這樣就完成了使用步驟。下面的章節(jié)是介紹如何去擴(kuò)展功能。

指令和AI

在這之前你可能需要兩個(gè)方法:

message.send()

//路徑:src/utils/message.js
//回復(fù)消息的方法message.send
//使用如:
var message = require("/src/utils/message");
...
casper.then(function(){
   message.send(this, "你好");
})

ajax() / ajax.get() / ajax.post() / ajax.getJSON()

//路徑:src/utils/ajax.js
//在聊天器調(diào)ajax的方法
//使用如:
var  ajax= require("/src/utils/ajax");
...
casper.then(function(){
   ajax(this, "http://example.com/getInfo", "get", {uid: 123}, function(res){
        console.log(JSON.stringify(res));
    });
  
   //或者
   ajax.get(this, "http://example.com/getInfo", {uid: 123}, function(res){
        console.log(JSON.stringify(res));
    });

   //jsonp
   ajax.getJSON(this, "http://example.com/getInfo?calback=?", {uid: 123}, function(res){
        console.log(JSON.stringify(res));
   });
})

你可以根據(jù)需要按以下方面擴(kuò)充機(jī)器人的功能:

編寫指令
//你可以寫一些指令而不是交給AI處理
//指令分為精確匹配指令和模糊匹配指令

//-------------------------------------------------------------------
//精確匹配
//精確指令在`/src/directive/exact.js`下編寫。
//key是指令名稱,值是一個(gè)方法,接受參數(shù)msgContent(用戶發(fā)送的消息)和casperIns(casper實(shí)例),如:
//當(dāng)對(duì)方發(fā)送"關(guān)閉"指令時(shí)程序提示并退出。
module.exports = {
    "關(guān)閉": function (msgContent, casperIns) {
        message.send(casperIns, "[玫瑰]感謝您的使用[玫瑰]

([閃電]需要開啟請(qǐng)?jiān)诳刂婆_(tái)啟動(dòng)程序[閃電])");
        casperIns.echo("微信發(fā)出關(guān)閉口令,程序退出。")
        return casperIns.exit();
    }
}

//-------------------------------------------------------------------
//模糊匹配
//模糊匹配指令在`/src/directive/fuzzy.js`下編寫。
//接收參數(shù)前兩個(gè)同精確指令,第三個(gè)是當(dāng)前的正則表達(dá)式;
//指令可多帶帶防在src/directive/explain下方便維護(hù),如weather.js:
//匹配"地名 + 天氣",調(diào)用天氣api
var weather = require("./explain/weather");
module.exports = {
    "/天氣/g": weather 
}
//weather.js實(shí)現(xiàn)如下:
var ajax = require("../../utils/ajax");
var message = require("../../utils/message");

var formatWeather = function(local, weather) {
    //此方法對(duì)返回的json格式化,詳情請(qǐng)查看源碼
}

var weather = function(msgContent, casperIns, regex) {
    var local = msgContent.replace(/ |天氣/, "");
    var resource = "http://wthrcdn.etouch.cn/weather_mini?city=" + encodeURIComponent(local);

    ajax.get(casperIns, resource, {}, function(res){
        var weather = JSON.parse(res);
        if (weather.status == 1000) {
            message.send(casperIns, formatWeather(local, weather));
        } else {
            message.send(casperIns, "未查找到相關(guān)天氣信息。請(qǐng)嘗試輸入格式如"廣州天氣"。")
        }
    });
   
}
module.exports = weather;
//-------------------------------------------------------------------
完善AI

這個(gè)我目前也沒研究。

調(diào)試

調(diào)試代碼時(shí)可將capserjs配置選像中的logLevel字段設(shè)為info將會(huì)顯示更多phantomjslog,更多配置請(qǐng)移步casperjs文檔。

//路徑:config/casper.js
module.exports =  {
    clientScripts:  [
        "static/js/jquery.js"
    ],
    pageSettings: {
        loadImages: true,
        userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.14 Safari/537.36",
    },
    logLevel: "info", //here
    viewportSize: {width: 1300, height: 900},
    verbose: true,
    waitTimeout: 1000 * 60 * 60 * 24 * 365,
    onWaitTimeout: function(){
        console.log( "waitFor*方法超時(shí)..." )
    }
}

另外,在執(zhí)行各個(gè)步驟時(shí)會(huì)把瀏覽器截圖保存到/static/img,方便查看瀏覽器渲染情況。比如每獲取到一條新消息時(shí)會(huì)截圖并覆蓋為lastNewMsgContent.png。

二次開發(fā)若方便請(qǐng)Fork貢獻(xiàn)給本Github,共同完善項(xiàng)目!

版本預(yù)告

下一版本更新但不限于以下內(nèi)容:

1.支持綁定多個(gè)微信帳號(hào)
2.UI化控制臺(tái)(node.js web同步命令log及部分操作)
3.支持圖片識(shí)別和回復(fù)(如斗圖)
4.更多實(shí)用指令

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87202.html

相關(guān)文章

  • 30行代碼實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人

    摘要:行代碼實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人一寫在前面今天下午又學(xué)到了另一種有趣的玩法微信自動(dòng)回復(fù)機(jī)器人。將返回消息返回給微信消息的發(fā)送人。以此實(shí)現(xiàn)將微信個(gè)人號(hào)變身為聊天機(jī)器人。 30行代碼實(shí)現(xiàn)微信自動(dòng)回復(fù)機(jī)器人 一、寫在前面 今天下午又學(xué)到了itchat另一種有趣的玩法---微信自動(dòng)回復(fù)機(jī)器人。 程序很簡單僅僅三十行代碼左右,實(shí)現(xiàn)了機(jī)器人自動(dòng)與你的微信好友聊天,下面是我的機(jī)器人小籠包跟自己微信好友聊...

    lingdududu 評(píng)論0 收藏0
  • 如何開發(fā)一個(gè)個(gè)性化的Web微信(1)

    摘要:版微信登錄地址如有不足與錯(cuò)誤,請(qǐng)見諒版微信主要參考微信協(xié)議進(jìn)行設(shè)計(jì)開發(fā)項(xiàng)目主要分成三大模塊登錄模塊微信掃碼登錄流程微信容器微信信息會(huì)話接收發(fā)送心跳監(jiān)測數(shù)據(jù)存儲(chǔ)用戶登錄信息狀態(tài)信息會(huì)話信息先祭圖拜八哥已求無效果圖我們希望實(shí)現(xiàn)的功能包括基本的 Web版微信登錄 github地址:https://github.com/hty7/vue-w...如有不足與錯(cuò)誤,請(qǐng)見諒 Web版微信主要參考W...

    dockerclub 評(píng)論0 收藏0
  • python_bomb----有趣的微信聊天機(jī)器人

    摘要:模塊是一個(gè)文件,以結(jié)尾,包含了對(duì)象定義和語句模塊讓你能夠有邏輯地組織你的代碼段。把相關(guān)的代碼分配到一個(gè)模塊里能讓你的代碼更好用,更易懂。命令執(zhí)行成功,執(zhí)行結(jié)果命令執(zhí)行失敗一秒后執(zhí)行關(guān)機(jī)命令 Python 模塊(Module) 是一個(gè) Python 文件,以 .py 結(jié)尾,包含了 Python 對(duì)象定義和Python語句 模塊讓你能夠有邏輯地組織你的 Python 代碼段。 把相關(guān)的代...

    bawn 評(píng)論0 收藏0
  • 利用網(wǎng)頁微信API做一個(gè)微信機(jī)器人

    摘要:本文不涉及到的知識(shí)如果你是沖著來的那么可能會(huì)讓你失望了前一陣子一個(gè)朋友找我問我能不能搞一個(gè)微信自動(dòng)加好友的軟件在普通人眼里程序員就是專門寫木馬病毒外掛軟件的三流黑客不會(huì)寫那就連三流都不是所以為了證明我是三流黑客我隨便百度了兩個(gè)現(xiàn)成的給他本來 本文不涉及到 AI 的知識(shí),如果你是沖著 AI 來的,那么可能會(huì)讓你失望了. 前一陣子一個(gè)朋友找我,問我能不能搞一個(gè)微信自動(dòng)加好友的軟件,(在普通...

    crelaber 評(píng)論0 收藏0
  • 利用網(wǎng)頁微信API做一個(gè)微信機(jī)器人

    摘要:本文不涉及到的知識(shí)如果你是沖著來的那么可能會(huì)讓你失望了前一陣子一個(gè)朋友找我問我能不能搞一個(gè)微信自動(dòng)加好友的軟件在普通人眼里程序員就是專門寫木馬病毒外掛軟件的三流黑客不會(huì)寫那就連三流都不是所以為了證明我是三流黑客我隨便百度了兩個(gè)現(xiàn)成的給他本來 本文不涉及到 AI 的知識(shí),如果你是沖著 AI 來的,那么可能會(huì)讓你失望了. 前一陣子一個(gè)朋友找我,問我能不能搞一個(gè)微信自動(dòng)加好友的軟件,(在普通...

    caspar 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<