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
Lihat kode logikanya, ringkas dan lengkap, pastikan untuk membacanya
let bot = new Wechat ( [ botData ] )
Jika botData
diteruskan, informasi robot ini akan digunakan untuk memulai ulang sinkronisasi sebelumnya.
Semua properti bersifat hanya baca
Informasi dasar instance yang dapat diekspor. Anda dapat mengisi informasi ini dan menyinkronkannya kembali saat Anda membuat bot baru di lain waktu.
Informasi yang diperlukan untuk tetap masuk
Informasi konfigurasi, termasuk alamat server saat ini, jalur API, dan beberapa konstanta
Program ini perlu menggunakan konstanta di CONF untuk menentukan jenis pesan baru dari status saat ini.
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 // 视频消息
Status saat ini
Informasi pengguna yang masuk saat ini
Semua kontak, termasuk kontak buku alamat, grup kontak terkini, dan akun publik
Kuncinya adalah Nama Pengguna kontak. Nama Pengguna adalah UUID setiap kontak selama login ini, tetapi akan berubah saat Anda login berikutnya.
value adalah objek Contact
. Untuk metode atribut tertentu, lihat src/interface/contact.js
Semua pesan diterima setelah masuk
msg adalah objek Message
. Untuk metode atribut tertentu, lihat src/interface/message.js
Luncurkan sebuah instance, masuk dan tetap sinkron
Setelah memanggil metode ini, proses pesan dengan mendengarkan acara
Gunakan informasi penting yang diperoleh instance untuk masuk kembali dan melakukan sinkronisasi
Hentikan instance dan logout
Setelah memanggil metode ini, logout dengan mendengarkan event logout
Sesuaikan konten pesan detak jantung
Fungsi getter
mengembalikan konten pesan detak jantung
typeof(getter())
seharusnya "string"
bot . setRollingMessageGetter ( function ( ) {
//
return ( new Date ( ) ) . toJSON ( ) ;
} ) ;
Interval detak jantung khusus
Fungsi getter
mengembalikan interval detak jantung dalam milidetik
typeof(getter())
harus berupa "number"
bot . setRollingIntervalGetter ( function ( ) {
return 2 * 60 * 1000 ;
} ) ;
Pengguna target detak jantung khusus
Fungsi getter
mengembalikan UserName
pengguna target (dalam bentuk @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
)
typeof(getter())
seharusnya "string"
Catatan: Jika Anda ingin menggunakan bot.user.UserName
, Anda perlu menentukan pengguna target setelah acara login
bot . setRollingmeGetter ( function ( ) {
return bot . user . UserName ;
} ) ;
Semua metode berikut mengembalikan Janji
Kirim pesan teks, yang dapat menyertakan emoji (?) dan emotikon QQ ([senyum buruk])
Unggah file media
kembali
{
name : name ,
size : size ,
ext : ext ,
mediatype : mediatype ,
mediaId : mediaId
}
Kirim gambar, mediaId adalah mediaId yang dikembalikan oleh uploadMedia
bot . uploadMedia ( fs . createReadStream ( 'test.png' ) )
. then ( res => {
return bot . sendPic ( res . mediaId , ToUserName )
} )
. catch ( err => {
console . log ( err )
} )
Kirim emotikon, tetapi itu adalah MD5 emotikon atau mediaId yang dikembalikan oleh uploadMedia.
MD5 emotikon dapat dihitung sendiri tetapi mungkin tidak ada di server WeChat. MD5 juga dapat diperoleh dari pesan emotikon yang dikembalikan oleh WeChat.
Kirim video
Kirim file dalam bentuk kartu aplikasi, dan Anda dapat mengirimkan suara melalui API ini
Enkapsulasi metode pengiriman pesan di atas merupakan metode pengiriman pesan yang umum.
Ketika msg
berupa string, kirim pesan teks
Jika msg
adalah {file:xxx,filename:'xxx.ext'}
, kirim file media yang sesuai
Jika msg
adalah {emoticonMd5:xxx}
, kirim emotikon
bot . sendMsg ( {
file : request ( 'https://raw.githubusercontent.com/nodeWechat/wechat4u/master/bot-qrcode.jpg' ) ,
filename : 'bot-qrcode.jpg'
} , ToUserName )
. catch ( err => {
console . log ( err )
} )
Meneruskan pesan, msg
objek msg
yang diteruskan oleh event message
Tarik pesan
MsgID
adalah ID yang mewakili pesan yang dikembalikan setelah mengirim pesan.
bot . sendMsg ( '测试撤回' , toUserName )
. then ( res => {
return bot . revokeMsg ( res . MsgID , toUserName )
} )
. catch ( err => {
console . log ( err )
} )
Dapatkan kontak dari buku alamat
Seq
adalah seq yang dikembalikan setelah panggilan terakhir ke bot.getContact. Ini tidak perlu diteruskan pada panggilan pertama.
Dapatkan data kontak tertentu secara berkelompok
array contacts
, menentukan data yang akan diperoleh
Jika contacts
adalah [{UserName: xxx}]
, informasi kontak atau grup yang ditentukan dapat diperoleh
Jika contacts
adalah [{UserName: xxx, EncryChatRoomId: xxx}]
, informasi detail anggota dalam grup tertentu dapat diperoleh, dan EncryChatRoomId dapat diperoleh dari informasi grup
Dapatkan avatar kontak
bot . getHeadImg ( bot . contacts [ UserName ] . HeadImgUrl ) . then ( res => {
fs . writeFileSync ( ` ${ UserName } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Dapatkan gambar atau emotikon
bot . getMsgImg ( msg . MsgId ) . then ( res => {
fs . writeFileSync ( ` ${ msg . MsgId } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Dapatkan suara
Dapatkan video atau video pendek
Dapatkan filenya. Jika MsgType
pesannya adalah 49 dan AppMsgType
adalah 6, itu adalah file.
Tambahkan teman
UserName
umumnya dapat diperoleh dari informasi grup
Informasi verifikasi Content
Tambahkan permintaan melalui teman
Buat grup
Nama obrolan grup Topic
Array MemberList
, Nama Pengguna minimal dua orang selain Anda, formatnya adalah [ {"UserName":"@250d8d156ad9f8b068c2e3df3464ecf2"}, {"UserName":"@42d725733741de6ac53cbe3738d8dd2e"} ]
Perbarui anggota grup
Nama Pengguna Grup ChatRoomUserName
dimulai dengan '@@'
Array MemberList
, hubungi UserNa
fun
opsional 'addmember', 'delmember', 'invitemember'
Perbarui nama grup
Nama Pengguna Grup ChatRoomUserName
dimulai dengan '@@'
String NewName
, nama grup baru
Sematkan atau lepas pin kontak ke atas. Anda dapat memperoleh Pemilik Ruang Obrolan grup dengan melepas pin grup secara langsung.
OP == 0 Lepas sematan
OP == 1 disematkan
Atur catatan atau label kontak
Setelah mendapatkan uuid, Anda dapat membuat kode QR atau mendapatkan kode QR dari server 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 )
} )
Setelah memindai dengan ponsel Anda, Anda bisa mendapatkan URL Data dari avatar pengguna yang masuk.
Login konfirmasi ponsel
Berhasil logout
Pembaruan kontak, Anda bisa mendapatkan daftar kontak yang diperbarui
Untuk semua pesan yang diperoleh melalui sinkronisasi, jenis pesan ditentukan oleh 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
}
} )
Setiap kontak mewarisi antarmuka/kontak dan memperluas atribut berikut selain json asli:
contact . AvatarUrl // 处理过的头像地址
contact . isSelf // 是否是登录用户本人
contact . getDisplayName ( )
contact . canSearch ( keyword )
Selain itu, wechat4u menyediakan Kontak sebagai antarmuka umum untuk kontak pada instance, memperluas properti berikut:
wechat . Contact . isRoomContact ( )
wechat . Contact . isSpContact ( )
wechat . Contact . isPublicContact ( )
wechat . Contact . getUserByUserName ( )
wechat . Contact . getSearchUser ( keyword )
Setiap objek pesan mewarisi antarmuka/pesan dan memiliki atribut berikut selain json asli:
message . isSendBySelf // 是否是本人发送
message . isSendBy ( contact )
message . getPeerUserName ( ) // 获取所属对话的联系人 UserName
message . getDisplayTime ( ) // 获取形如 12:00 的时间戳信息
Sudah ada banyak hal yang diterapkan terkait penerapan robot web WeChat. Terima kasih semuanya! (Peringkatnya tidak berurutan. Koleksinya pasti tidak merata.)
Mengenai deskripsi antarmuka halaman web WeChat, ada beberapa artikel yang menganalisisnya dengan sangat baik.
MIT