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
ถูกส่งผ่าน ข้อมูลโรบอตนี้จะถูกนำมาใช้เพื่อรีสตาร์ทการซิงโครไนซ์ครั้งก่อน
คุณสมบัติทั้งหมดเป็นแบบอ่านอย่างเดียว
ข้อมูลพื้นฐานที่สามารถส่งออกได้ของอินสแตนซ์ คุณสามารถกรอกข้อมูลนี้และซิงโครไนซ์ใหม่ได้เมื่อคุณสร้างบอทใหม่ในครั้งถัดไป
ข้อมูลที่จำเป็นในการคงการเข้าสู่ระบบ
ข้อมูลการกำหนดค่า รวมถึงที่อยู่เซิร์ฟเวอร์ปัจจุบัน เส้นทาง API และค่าคงที่บางส่วน
โปรแกรมจำเป็นต้องใช้ค่าคงที่ใน 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 ของผู้ติดต่อแต่ละรายในระหว่างการเข้าสู่ระบบนี้ แต่จะเปลี่ยนเมื่อคุณเข้าสู่ระบบครั้งต่อไป
value เป็นวัตถุ 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 ;
} ) ;
วิธีการต่อไปนี้ส่งคืนสัญญาทั้งหมด
ส่งข้อความซึ่งอาจรวมถึงอิโมจิ (?) และอีโมติคอน 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 ของอิโมติคอนหรือ mediaId ที่ส่งคืนโดย uploadMedia
คุณสามารถคำนวณ MD5 ของอิโมติคอนได้ด้วยตัวเอง แต่อาจไม่มีอยู่ในเซิร์ฟเวอร์ WeChat นอกจากนี้ยังสามารถรับได้จากข้อความอิโมติคอนที่ส่งกลับโดย WeChat
ส่งวิดีโอ
ส่งไฟล์ในรูปแบบของการ์ดแอปพลิเคชัน และคุณสามารถส่งเสียงผ่าน API นี้
การห่อหุ้มวิธีการส่งข้อความข้างต้นเป็นวิธีการส่งข้อความทั่วไป
เมื่อ 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
คือ ID ที่แสดงถึงข้อความที่ส่งคืนหลังจากส่งข้อความ
bot . sendMsg ( '测试撤回' , toUserName )
. then ( res => {
return bot . revokeMsg ( res . MsgID , toUserName )
} )
. catch ( err => {
console . log ( err )
} )
รับรายชื่อจากสมุดที่อยู่
Seq
คือ 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
ตัวเลือก 'เพิ่มสมาชิก', 'delmember', 'เชิญสมาชิก'
อัพเดทชื่อกลุ่ม
ชื่อผู้ใช้กลุ่ม 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 ยังมี Contact เป็นอินเทอร์เฟซทั่วไปสำหรับผู้ติดต่อบนอินสแตนซ์ ซึ่งขยายคุณสมบัติต่อไปนี้:
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 มีหลายบทความที่วิเคราะห์ได้ดีมาก
เอ็มไอที