npm install --save wechat4u@latest
const Wechat = require ( 'wechat4u' )
let bot = new Wechat ( )
bot . start ( )
// 或使用核心API
// const WechatCore = require('wechat4u/lib/core')
git clone https://github.com/nodeWechat/wechat4u.git
cd wechat4u
npm install
npm run core // 命令行模式
npm run compile // babel编译
node run-core.js
راجع رمز المنطق، فهو موجز وكامل، تأكد من قراءته
let bot = new Wechat ( [ botData ] )
إذا تم تمرير botData
، فسيتم استخدام معلومات الروبوت هذه لإعادة تشغيل المزامنة السابقة.
جميع الخصائص للقراءة فقط
المعلومات الأساسية القابلة للتصدير للمثيل يمكنك ملء هذه المعلومات وإعادة مزامنتها عند إنشاء روبوت جديد في المرة القادمة.
المعلومات الضرورية للبقاء مسجل الدخول
معلومات التكوين، بما في ذلك عنوان الخادم الحالي ومسار واجهة برمجة التطبيقات وبعض الثوابت
يحتاج البرنامج إلى استخدام الثوابت في CONF لتحديد نوع الرسالة الجديدة للحالة الحالية.
bot . state == bot . CONF . STATE . init // 初始化状态
bot . state == bot . CONF . STATE . uuid // 已获取 UUID
bot . state == bot . CONF . STATE . login // 已登录
bot . state == bot . CONF . STATE . logout // 已退出登录
msg . MsgType == bot . CONF . MSGTYPE_TEXT // 文本消息
msg . MsgType == bot . CONF . MSGTYPE_IMAGE // 图片消息
msg . MsgType == bot . CONF . MSGTYPE_VOICE // 语音消息
msg . MsgType == bot . CONF . MSGTYPE_EMOTICON // 自定义表情消息
msg . MsgType == bot . CONF . MSGTYPE_MICROVIDEO // 小视频消息
msg . MsgType == bot . CONF . MSGTYPE_VIDEO // 视频消息
الوضع الحالي
معلومات المستخدم التي تم تسجيل دخولها حاليًا
جميع جهات الاتصال، بما في ذلك جهات اتصال دفتر العناوين ومجموعات جهات الاتصال الحديثة والحسابات العامة
المفتاح هو اسم مستخدم جهة الاتصال. اسم المستخدم هو UUID لكل جهة اتصال أثناء تسجيل الدخول هذا، ولكنه سيتغير في المرة التالية التي تقوم فيها بتسجيل الدخول.
القيمة هي كائن Contact
لمعرفة طرق السمات المحددة، راجع src/interface/contact.js
جميع الرسائل المستلمة بعد تسجيل الدخول
msg هو كائن Message
. للتعرف على طرق السمات المحددة، راجع src/interface/message.js
قم بتشغيل مثيل، وقم بتسجيل الدخول والبقاء متزامنًا
بعد استدعاء هذا الأسلوب، قم بمعالجة الرسالة من خلال الاستماع إلى الحدث
استخدم المعلومات الضرورية التي حصل عليها المثيل لتسجيل الدخول مرة أخرى والمزامنة
أوقف المثيل وقم بتسجيل الخروج
بعد استدعاء هذه الطريقة، قم بتسجيل الخروج من خلال الاستماع إلى حدث logout
تخصيص محتوى رسالة نبضات القلب
تقوم وظيفة getter
بإرجاع محتوى رسالة نبضات القلب
يجب أن يكون typeof(getter())
"string"
bot . setRollingMessageGetter ( function ( ) {
//
return ( new Date ( ) ) . toJSON ( ) ;
} ) ;
الفاصل الزمني المخصص لنبضات القلب
تقوم الدالة getter
بإرجاع الفاصل الزمني لنبضات القلب بالمللي ثانية
يجب أن يكون typeof(getter())
"number"
bot . setRollingIntervalGetter ( function ( ) {
return 2 * 60 * 1000 ;
} ) ;
المستخدم المستهدف لنبضات القلب مخصص
تقوم الدالة getter
بإرجاع UserName
للمستخدم المستهدف (على شكل @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
)
يجب أن يكون typeof(getter())
"string"
ملاحظة: إذا كنت تريد استخدام bot.user.UserName
، فستحتاج إلى تحديد المستخدم المستهدف بعد حدث login
bot . setRollingmeGetter ( function ( ) {
return bot . user . UserName ;
} ) ;
جميع الطرق التالية ترجع Promise
إرسال رسائل نصية، والتي يمكن أن تتضمن رموز تعبيرية (؟) ورموز QQ التعبيرية ([ابتسامة سيئة])
تحميل ملفات الوسائط
يعود
{
name : name ,
size : size ,
ext : ext ,
mediatype : mediatype ,
mediaId : mediaId
}
إرسال الصور، mediaId هو mediaId الذي يتم إرجاعه بواسطة uploadMedia
bot . uploadMedia ( fs . createReadStream ( 'test.png' ) )
. then ( res => {
return bot . sendPic ( res . mediaId , ToUserName )
} )
. catch ( err => {
console . log ( err )
} )
أرسل رمزًا تعبيريًا، ولكنه يكون MD5 للرمز التعبيري أو معرف الوسائط الذي يتم إرجاعه بواسطة uploadMedia.
يمكن حساب MD5 للرمز التعبيري بنفسك ولكن قد لا يكون موجودًا في خادم WeChat. ويمكن أيضًا الحصول عليه من رسالة الرمز التعبيري التي يتم إرجاعها بواسطة WeChat.
أرسل فيديو
أرسل الملفات على شكل بطاقات تطبيق، ويمكنك إرسال الأصوات من خلال واجهة برمجة التطبيقات هذه
يعد تغليف الطريقة المذكورة أعلاه لإرسال الرسائل طريقة عامة لإرسال الرسائل.
عندما تكون msg
عبارة عن سلسلة، قم بإرسال رسالة نصية
عندما تكون msg
{file:xxx,filename:'xxx.ext'}
، أرسل ملف الوسائط المقابل
عندما تكون msg
{emoticonMd5:xxx}
، قم بإرسال رمز تعبيري
bot . sendMsg ( {
file : request ( 'https://raw.githubusercontent.com/nodeWechat/wechat4u/master/bot-qrcode.jpg' ) ,
filename : 'bot-qrcode.jpg'
} , ToUserName )
. catch ( err => {
console . log ( err )
} )
إعادة توجيه الرسالة، msg
كائن msg
الذي تم تمريره بواسطة حدث message
سحب الرسالة
MsgID
هو المعرف الذي يمثل الرسالة التي تم إرجاعها بعد إرسال الرسالة.
bot . sendMsg ( '测试撤回' , toUserName )
. then ( res => {
return bot . revokeMsg ( res . MsgID , toUserName )
} )
. catch ( err => {
console . log ( err )
} )
الحصول على جهات الاتصال من دفتر العناوين
Seq
هو التسلسل الذي تم إرجاعه بعد آخر مكالمة إلى bot.getContact، ولا يلزم تمريره في المكالمة الأولى.
الحصول على بيانات الاتصال المحددة على دفعات
مجموعة contacts
، مع تحديد البيانات التي سيتم الحصول عليها
عندما تكون contacts
هي [{UserName: xxx}]
، يمكن الحصول على معلومات جهة الاتصال أو المجموعة المحددة
عندما تكون contacts
[{UserName: xxx, EncryChatRoomId: xxx}]
، يمكن الحصول على معلومات مفصلة عن الأعضاء في المجموعة المحددة، ويمكن الحصول على EncryChatRoomId من معلومات المجموعة
الحصول على الصورة الرمزية لجهة الاتصال
bot . getHeadImg ( bot . contacts [ UserName ] . HeadImgUrl ) . then ( res => {
fs . writeFileSync ( ` ${ UserName } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
احصل على صورة أو رمز تعبيري
bot . getMsgImg ( msg . MsgId ) . then ( res => {
fs . writeFileSync ( ` ${ msg . MsgId } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
احصل على صوت
احصل على مقاطع فيديو أو مقاطع فيديو قصيرة
الحصول على الملف عندما يكون MsgType
للرسالة هو 49 و AppMsgType
هو 6، فهو ملف.
أضف أصدقاء
يمكن عمومًا الحصول على UserName
من معلومات المجموعة
معلومات التحقق من Content
إضافة طلب عبر صديق
إنشاء مجموعة
اسم الدردشة الجماعية Topic
مصفوفة MemberList
، اسم المستخدم لشخصين على الأقل غيرك، التنسيق هو [ {"UserName":@250d8d156ad9f8b068c2e3df3464ecf2"}, {"UserName":":@42d725733741de6ac53cbe3738d8dd2e"} ]
تحديث أعضاء المجموعة
ChatRoomUserName
اسم مستخدم المجموعة الذي يبدأ بـ "@@"
مجموعة MemberList
، اتصل بـ UserNa
fun
اختيارية "addmember"، "delmember"، "invitemember"
تحديث اسم المجموعة
ChatRoomUserName
اسم مستخدم المجموعة الذي يبدأ بـ "@@"
سلسلة NewName
، اسم المجموعة الجديد
قم بتثبيت جهة اتصال أو إلغاء تثبيتها في الأعلى. يمكنك الحصول على مجموعة ChatRoomOwner عن طريق إلغاء تثبيت المجموعة مباشرة.
OP == 0 إلغاء التثبيت
OP == 1 مثبت
قم بتعيين ملاحظات أو تسميات جهة الاتصال
بعد الحصول على uuid، يمكنك إنشاء رمز QR أو الحصول على رمز QR من خادم WeChat.
bot . on ( 'uuid' , uuid => {
qrcode . generate ( 'https://login.weixin.qq.com/l/' + uuid , {
small : true
} )
console . log ( '二维码链接:' , 'https://login.weixin.qq.com/qrcode/' + uuid )
} )
بعد المسح باستخدام هاتفك المحمول، يمكنك الحصول على عنوان URL للبيانات الخاص بالصورة الرمزية للمستخدم الذي قام بتسجيل الدخول.
تسجيل الدخول تأكيد الهاتف المحمول
تم تسجيل الخروج بنجاح
تحديث الاتصال، يمكنك الحصول على قائمة جهات الاتصال المحدثة
بالنسبة لجميع الرسائل التي يتم الحصول عليها من خلال المزامنة، يتم تحديد نوع الرسالة بواسطة msg.MsgType
bot . on ( 'message' , msg => {
switch ( msg . MsgType ) {
case bot . CONF . MSGTYPE_STATUSNOTIFY :
break
case bot . CONF . MSGTYPE_TEXT :
break
case bot . CONF . MSGTYPE_RECALLED :
break
}
} )
ترث كل جهة اتصال من الواجهة/جهة الاتصال وتوسع السمات التالية بالإضافة إلى ملف json الأصلي:
contact . AvatarUrl // 处理过的头像地址
contact . isSelf // 是否是登录用户本人
contact . getDisplayName ( )
contact . canSearch ( keyword )
بالإضافة إلى ذلك، يوفر wechat4u جهة الاتصال كواجهة مشتركة لجهات الاتصال الموجودة على المثيل، مما يؤدي إلى توسيع الخصائص التالية:
wechat . Contact . isRoomContact ( )
wechat . Contact . isSpContact ( )
wechat . Contact . isPublicContact ( )
wechat . Contact . getUserByUserName ( )
wechat . Contact . getSearchUser ( keyword )
يرث كل كائن msg من الواجهة/الرسالة ويمتلك السمات التالية بالإضافة إلى ملف json الأصلي:
message . isSendBySelf // 是否是本人发送
message . isSendBy ( contact )
message . getPeerUserName ( ) // 获取所属对话的联系人 UserName
message . getDisplayTime ( ) // 获取形如 12:00 的时间戳信息
هناك بالفعل الكثير من الخطوات المتخذة فيما يتعلق بتنفيذ روبوتات الويب WeChat. شكرا لكم جميعا! (الترتيب ليس منظمًا. يجب أن تكون المجموعة غير متساوية.)
فيما يتعلق بوصف واجهة صفحة ويب WeChat، هناك العديد من المقالات التي تحللها جيدًا.
معهد ماساتشوستس للتكنولوجيا