تم تطوير روبوت الدردشة استنادًا إلى
phantomjs
وWeChat على الويب. حساب WeChat المستخدم (أي الحساب الذي يعمل كروبوت) هو حساب شخصي ويمكن تخصيصه بالتعليمات.
يمكنك تحديد حساب WeChat:
لن يتم تسليم التعليمات المخصصة إلى الذكاء الاصطناعي لمعالجتها:
إن قضاء وقت ممتع بمفردك ليس جيدًا مثل قضاء وقت ممتع معًا. يمكنك تعيينه للدردشة الجماعية:
التحقق من السجل في برنامج الخلفية:
- الرد الذكي WeChat والمراقبة والإحصاءات وما إلى ذلك.
- استعلام مريح
- الترفيه (لياو) لو (مي)
تنزيل كود المصدر:
git clone https://github.com/doterlin/wechat-robot.git
تثبيت البيئة التالية:
1.node.js
2.phantomjs
3.casperjs
ابحث عن /config/const.js
وقم بتكوينه
//机器人名字
var ROBOT_NAME = "小强";
module.exports = {
//微信web版地址
'URL' : 'https://wx.qq.com/',
//机器人名字
'ROBOT_NAME' : ROBOT_NAME,
//图灵机器人apiKey和api地址
//AI部分使用的是第三方机器人图灵(http://www.tuling123.com/)
//这里只是示例,请大家自行到图灵官网注册并替换掉apikey免费版限5000次调用/天。有条件的同学可以付费支持下好产品
'TURING_APIKEY': '99fecec3424d416898b91b0998e2b26a',
'TURING_URL' : 'http://www.tuling123.com/openapi/api',
//锁定的微信号备注,注意是备注;如果是群聊则填群聊名称即可。
//填写的名称请预先在手机微信上搜索确认搜索结果是否出现在第一个
'TARGET_NICK' : '二十投小分队',
//启动时打招呼消息
'HELLO_WORLD' : '[闪电]' + ROBOT_NAME + '[闪电]已启动...',
}
تثبيت التبعيات وتشغيل الأوامر:
npm install
casperjs index.js
إذا طُلب منك أنه python找不到
، فيرجى تثبيت python والتأكد من إمكانية تشغيله عالميًا.
امسح رمز الاستجابة السريعة ضوئيًا لتسجيل الدخول إلى WeChat بعد التشغيل، عندما ترى المطالبة التالية، قم بمسح رمز الاستجابة السريعة المنبثق:
正在加载二维码...
已保存二维码,路径:"static/img/qr.jpg".
正在使用默认软件打开二维码,请用手机微信扫一扫确认登录 (若没有请手动打开)
يرجى استخدام هاتفك المحمول لمسح رمز الاستجابة السريعة وتأكيد تسجيل الدخول一分钟内
. بعد登录成功
发送欢迎语
يكفي. هذا يكمل خطوات الاستخدام. تعرض الفصول التالية كيفية توسيع الوظيفة.
قبل القيام بذلك قد تحتاج إلى طريقتين:
رسالة.إرسال ()
//路径:src/utils/message.js
//回复消息的方法message.send
//使用如:
var message = require('/src/utils/message');
...
casper.then(function(){
message.send(this, '你好');
})
اياكس () / ajax.get () / ajax.post () / ajax.getJSON ()
//路径:src/utils/ajax.js
//在聊天器调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));
});
})
يمكنك توسيع وظائف الروبوت في الجوانب التالية حسب الحاجة:
//你可以写一些指令而不是交给AI处理
//指令分为精确匹配指令和模糊匹配指令
//-------------------------------------------------------------------
//精确匹配
//精确指令在`/src/directive/exact.js`下编写。
//key是指令名称,值是一个方法,接受参数msgContent(用户发送的消息)和casperIns(casper实例),如:
//当对方发送'关闭'指令时程序提示并退出。
module.exports = {
'关闭': function (msgContent, casperIns) {
message.send(casperIns, '[玫瑰]感谢您的使用[玫瑰]nr([闪电]需要开启请在控制台启动程序[闪电])');
casperIns.echo('微信发出关闭口令,程序退出。')
return casperIns.exit();
}
}
//-------------------------------------------------------------------
//模糊匹配
//模糊匹配指令在`/src/directive/fuzzy.js`下编写。
//接收参数前两个同精确指令,第三个是当前的正则表达式;
//指令可单独防在src/directive/explain下方便维护,如weather.js:
//匹配'地名 + 天气',调用天气api
var weather = require('./explain/weather');
module.exports = {
'/天气/g': weather
}
//weather.js实现如下:
var ajax = require('../../utils/ajax');
var message = require('../../utils/message');
var formatWeather = function(local, weather) {
//此方法对返回的json格式化,详情请查看源码
}
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, '未查找到相关天气信息。请尝试输入格式如"广州天气"。')
}
});
}
module.exports = weather;
//-------------------------------------------------------------------
لم أقم بالبحث في هذا بعد.
عند تصحيح التعليمات البرمجية، يمكنك تعيين حقل logLevel
في تحديد تكوين capserjs
إلى info
لعرض المزيد من سجلات phantomjs
. لمزيد من التكوينات، يرجى زيارة وثائق 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*方法超时...' )
}
}
بالإضافة إلى ذلك، سيتم حفظ لقطات شاشة المتصفح في /static/img
عند تنفيذ كل خطوة لتسهيل عرض عرض المتصفح. على سبيل المثال، في كل مرة يتم الحصول على رسالة جديدة، سيتم التقاط لقطة شاشة والكتابة فوقها كـ lastNewMsgContent.png
.
مرحبًا بكم في تقديم العلاقات العامة للتطوير الثانوي والعمل معًا لتحسين المشروع!
حقوق الطبع والنشر (ج) 2020 دوتيرلين
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك، ولا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي شيء. المطالبة أو الأضرار أو غيرها المسؤولية، سواء في دعوى العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في البرنامج.