Wechaty adalah RPA SDK percakapan yang menyederhanakan proses pembuatan chatbot. Ini seperti pisau Swiss Army untuk pengembangan chatbot, menyediakan antarmuka universal ke berbagai platform perpesanan seperti WhatsApp, WeChat, dan banyak lagi. Dengan Wechaty, Anda menulis kode bot Anda satu kali, dan kode itu berjalan di salah satu platform yang didukung. Ini berarti Anda dapat fokus untuk menciptakan pengalaman percakapan yang menarik tanpa mengkhawatirkan kompleksitas mendasar dari setiap API platform. Ini bersumber terbuka, mudah digunakan, dan didukung oleh komunitas dinamis yang siap membantu Anda mewujudkan ide chatbot Anda.
Wechaty adalah SDK RPA (Robotic Process Automation) untuk Chatbot Makers yang dapat membantu Anda membuat bot dalam 6 baris JavaScript, Python, Go, dan Java, dengan dukungan lintas platform termasuk Linux, Windows, MacOS, dan Docker.
?️ https://wechaty.js.org
https://github.com/Wechaty/wechaty
? https://github.com/Wechaty/wechaty/issues
https://github.com/Wechaty/wechaty-getting-started
? https://hub.docker.com/r/wechaty/wechaty
"Wechaty adalah solusi hebat; saya yakin akan ada lebih banyak pengguna yang mengenalinya." link
— @Gcaufy, Insinyur Tencent, Penulis WePY"太好用,好用的想哭"
— @xinbenlv, Insinyur Google, Pendiri HaoShiYou.orgTautan ”好用到哭“—你们对得起这个评价!
— @bigbrother666sh, pencipta 《社长不见了》剧本杀 NPC DMTautan "最好的微信开发库".
— @Jarvis, Insinyur BaiduTautan "Wechaty让运营人员更多的时间思考如何进行活动策划、留存用户,商业变现"
— @lijiarui, Pendiri & CEO Juzi.BOT."Kalau kamu tahu js...coba Wechaty. Mudah digunakan."
— @Urinx Uri Lee, Penulis WeixinBot(Python)"Wechaty adalah proyek yang bagus; saya harap ini bisa berlanjut! Oleh karena itu, saya menjadi kontributor di kolektif terbuka."
- @Sederhana
Lihat selengkapnya di Wiki:Suara Pengembang
Wechaty digunakan di banyak proyek ChatBot oleh ribuan pengembang. Untuk berbicara dengan pengembang lain, pindai Kode QR di bawah dan bergabunglah dengan Komunitas Pengembang Wechaty kami.
Pindai sekarang karena pengembang Wechaty lainnya juga ingin berbicara dengan Anda!
Wechaty telah mengadakan banyak pembicaraan dan mendapatkan banyak blog dalam beberapa tahun terakhir; berikut adalah semua sumber wechaty:
import { WechatyBuilder } from 'wechaty'
const wechaty = WechatyBuilder . build ( ) // get a Wechaty instance
wechaty
. on ( 'scan' , ( qrcode , status ) => console . log ( `Scan QR Code to login: ${ status } nhttps://wechaty.js.org/qrcode/ ${ encodeURIComponent ( qrcode ) } ` ) )
. on ( 'login' , user => console . log ( `User ${ user } logged in` ) )
. on ( 'message' , message => console . log ( `Message: ${ message } ` ) )
wechaty . start ( )
Pemberitahuan: Wechaty memerlukan versi Node.js >= 16
Bot ini dapat mencatat semua pesan ke konsol setelah login dengan pemindaian.
Anda dapat menemukan Contoh Resmi Wechaty di example/ding-dong-bot.ts dan lainnya dari Direktori Contoh kami.
Kami memiliki repositori starter Wechaty untuk pemula dengan pengaturan paling sederhana. Ini akan berfungsi langsung setelah Anda clone
& npm install
& npm start
.
Jika Anda baru mengenal Wechaty dan ingin mencobanya pertama kali, kami sangat menyarankan Anda memulai dari repositori ini, dan menggunakannya sebagai templat awal untuk proyek Anda.
Jika tidak, harap simpan Kode ChatBot Terpendek di Dunia: 6 baris contoh JavaScript di atas ke file bernama bot.js
sebelum Anda dapat menggunakan NPM atau Docker untuk menjalankannya.
npm init
npm install wechaty
# create your first bot.js file, you can copy/paste from the above "The World's Shortest ChatBot Code: 6 lines of JavaScript"
# then:
node bot.js
Wechaty Docker mendukung JavaScript dan TypeScript. Untuk menggunakan TypeScript cukup tulis di TypeScript dan simpan dengan nama ekstensi
.ts
, tidak perlu dikompilasi karena kita menggunakants-node
untuk menjalankannya.
2.1. Jalankan JavaScript
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2. Jalankan TypeScript
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Pelajari lebih lanjut tentang Wechaty Docker di Wiki:Docker.
Wechaty sangat kuat sehingga dapat dijalankan pada berbagai protokol. Anda dapat menentukan protokol dengan mengatur variabel lingkungan WECHATY_PUPPET
ke penyedia boneka yang berbeda.
Jika Anda tidak dapat menggunakan protokol Web, Anda dapat menerapkan protokol lain dengan mengikuti instruksi di sini: https://github.com/wechaty/wechaty/wiki/Support-Developers Kami menyediakan token gratis untuk mendukung pengembang membangun chatbot WeChat yang berharga.
Saat ini kami mendukung penyedia boneka berikut:
Protokol | Penyedia Boneka | Variabel Lingkungan |
---|---|---|
jaring | Dalang Dalang | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
jendela | BonekaWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
Mengejek | BonekaMock | export WECHATY_PUPPET=wechaty-puppet-mock |
jaring | BonekaWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | Batu Boneka | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | Alas Boneka Lokal | export WECHATY_PUPPET=wechaty-puppet-service |
jendela | BonekaDonat | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | export WECHATY_PUPPET=wechaty-puppet-padpro | |
iPad | export WECHATY_PUPPET=wechaty-puppet-padchat | |
iPad | export WECHATY_PUPPET=wechaty-puppet-padplus | |
Mac | export WECHATY_PUPPET=wechaty-puppet-macpro | |
jendela | export WECHATY_PUPPET=wechaty-puppet-service |
Pelajari lebih lanjut tentang Wayang Wechaty dari Wiki Wayang:
Baca Dokumentasi Lengkap di Referensi API Resmi Wechaty
Wechaty
Kelas bot utama.
Bot
adalah instance Wechaty yang mengontrol boneka wechaty tertentu.
new Wechaty(options?: WechatyOptions)
options.name?: string
nama bot ini (opsional)options.puppet?: string
pilih penyedia boneka mana yang ingin kita gunakan. harus menjadi salah satu dari:options.puppetOptions?: PuppetOptions
untuk penyedia boneka.Wechaty | API | Keterangan |
---|---|---|
peristiwa | login | pancarkan setelah bot login berhasil sepenuhnya |
peristiwa | logout | memancarkan setelah bot logout |
peristiwa | friendship | memancarkan ketika seseorang mengirim bot permintaan pertemanan |
peristiwa | message | pancarkan ketika ada pesan baru |
peristiwa | room-join | memancarkan ketika ada yang bergabung dengan ruangan mana pun |
peristiwa | room-topic | memancarkan ketika seseorang mengubah topik ruangan |
peristiwa | room-leave | memancarkan ketika ada yang meninggalkan ruangan |
peristiwa | room-invite | keluarkan ketika ada undangan ruangan |
peristiwa | scan | memancarkan ketika bot perlu menunjukkan kepada Anda Kode QR untuk dipindai |
metode | start(): Promise<void> | mulai botnya |
metode | stop(): Promise<void> | hentikan botnya |
metode | logonoff(): boolean | status masuk bot |
metode | logout(): Promise<void> | keluar dari bot |
metode | currentUser(): ContactSelf | dapatkan kontak bot yang telah login |
metode | say(text: string): Promise<void> | biarkan bot mengucapkan text pada dirinya sendiri |
Contact
Kelas 2Semua kontak WeChat (teman/bukan teman) akan dienkapsulasi sebagai Kontak.
Kontak | API | Keterangan |
---|---|---|
statis | find(query: string): Promise<null | Contact> | cari kontak berdasarkan nama atau alias, jika hasilnya lebih dari satu, kembalikan yang pertama. |
statis | findAll(query: string): Promise<Contact[]> | temukan kontak berdasarkan name atau alias |
statis | load(query: string): Contact | dapatkan kontak melalui id |
milik | id: readonly string | dapatkan nomor kontak |
metode | sync(): Promise<void> | paksa memuat ulang data untuk kontak, menyinkronkan data dari API tingkat rendah lagi |
metode | say(text: string): Promise<void | Message> | kirim teks, Kontak, atau file ke kontak, kembalikan pesan yang dikirim bot (hanya didukung puppet-padplus ). |
metode | self(): boolean | periksa apakah kontak itu mandiri |
metode | name(): string | dapatkan nama dari kontak |
metode | alias(): Promise<string> | mendapatkan alias untuk kontak |
metode | alias(newAlias: string): Promise<void> | mengatur atau menghapus alias untuk kontak |
metode | friend(): boolean | periksa apakah kontak adalah teman |
metode | type(): ContactType | mengembalikan jenis Kontak |
metode | province(): string | dapatkan wilayah 'provinsi' dari kontak |
metode | city(): string | dapatkan wilayah 'kota' dari kontak |
metode | avatar(): Promise<FileBox> | dapatkan aliran file gambar avatar |
metode | gender(): ContactGender | mendapatkan gender dari kontak |
ContactSelf
Kelas ContactSelf
diperpanjang dari Contact
.
KontakDiri | API | Keterangan |
---|---|---|
metode | avatar(file: FileBox): Promise<void> | atur avatar untuk bot |
metode | qrcode(): Promise<string> | dapatkan kode qr untuk bot |
metode | signature(text: string): Promise<void> | atur tanda tangan untuk bot |
Friendship
KelasKirim, terima permintaan pertemanan, dan acara konfirmasi teman.
Persahabatan | API | Keterangan |
---|---|---|
statis | add(contact: Contact, hello?: string): Promise<void> | kirim undangan pertemanan untuk dihubungi |
metode | accept(): Promise<void> | menerima Permintaan Pertemanan |
metode | hello(): string | dapatkan rangkaian halo dari undangan pertemanan |
metode | contact(): Contact | dapatkan kontak dari pertemanan |
metode | type(): FriendshipType | kembalikan Jenis Persahabatan (tidak diketahui, konfirmasi, terima, verifikasi) |
Message
KelasSemua pesan WeChat akan dienkapsulasi sebagai Pesan.
Pesan | API | Keterangan |
---|---|---|
statis | find(query: string): Promise<null | Message> | temukan pesan di cache dan kembalikan yang pertama |
statis | findAll(query: string): Promise<Message[]> | temukan pesan di cache, kembalikan daftar pesan |
metode | from(): Contact | dapatkan pengirim dari pesan |
metode | to(): Contact | mendapatkan tujuan pesan tersebut |
metode | room(): null | Room | dapatkan ruangan dari pesan tersebut. (Jika pesan tidak ada di ruangan, maka akan dikembalikan null ) |
metode | text(): string | mendapatkan isi teks pesan tersebut |
metode | say(text: string): Promise<void | Message> | membalas pesan Teks, File Media, atau kontak ke pengirim, mengembalikan pesan yang dikirim bot (hanya didukung puppet-padplus ). |
metode | type(): MessageType | dapatkan tipe dari pesan |
metode | self(): boolean | periksa apakah pesan dikirim sendiri |
metode | mention(): Contact[] | dapatkan pesan yang disebutkan contactList. |
metode | mentionSelf(): boolean | periksa apakah ada pesan yang menyebutkan diri |
metode | forward(to: Contact): Promise<void> | Meneruskan pesan yang diterima |
metode | age(): number | jumlah detik sejak dibuat |
metode | date(): Date | waktu penciptaannya |
metode | toFileBox(): Promise<FileBox> | ekstrak File Media dari Pesan, dan masukkan ke dalam FileBox. |
metode | toContact(): Promise<Contact> | dapatkan Kartu Bagikan Pesan |
Room
KelasSemua ruang WeChat (grup) akan dienkapsulasi sebagai Ruangan.
Ruang | API | Keterangan |
---|---|---|
statis | create(contactList: Contact[], topic?: string): Promise<Room> | membuat ruangan baru |
statis | find(query: string): Promise<null | Room> | Cobalah mencari ruangan dengan filter. Jika mendapat banyak, kembalikan yang pertama. |
statis | findAll(query: string): Promise<Room[]> | Temukan semua kontak di sebuah ruangan |
statis | load(query: string): Room | memuat ruangan berdasarkan id ruangan |
milik | id: readonly string | |
peristiwa | join | memancarkan ketika ada yang bergabung dengan ruangan mana pun |
peristiwa | topic | memancarkan ketika seseorang mengubah topik ruangan |
peristiwa | leave | memancarkan ketika ada yang meninggalkan ruangan |
peristiwa | invite | pancarkan saat menerima undangan ruangan |
metode | sync(): <Promise<void> | paksa muat ulang data untuk ruangan, sinkronkan lagi data dari API tingkat rendah. |
metode | say(text: string): Promise<void | Message> | Kirim teks, file media, kartu kontak, atau teks dengan penyebutan @sebutkan kontak di dalam Ruangan, kembalikan pesan yang dikirim bot (hanya didukung puppet-padplus ). |
metode | add(contact: Contact): Promise<void> | Tambahkan kontak di sebuah ruangan |
metode | del(contact: Contact): Promise<void> | Hapus kontak dari ruangan |
metode | quit(): Promise<void> | Bot keluar dari ruangan itu sendiri |
metode | topic(): Promise<string> | DAPATKAN topik dari ruangan |
metode | topic(newTopic: string): Promise<void> | SET topik dari ruangan |
metode | announce(text: string): Promise<void> | SET/GET diumumkan dari ruangan |
metode | qrcode(): Promise<string> | Dapatkan Kode QR Ruangan dari ruangan, yang dapat digunakan sebagai pemindaian dan bergabung dengan ruangan. |
metode | alias(contact: Contact): Promise<string> | Kembalikan ruang kontakAlias ke dalam ruangan |
metode | roomAlias(contact: Contact): Promise<string | null> | Sama seperti alias fungsi |
metode | has(contact: Contact): Promise<boolean> | Periksa apakah ruangan tersebut memiliki contact anggota |
metode | memberAll(query?: string): Promise<Contact[]> | Temukan semua kontak atau dengan nama tertentu di sebuah ruangan |
metode | member(query: string): Promise<null | Contact> | Temukan semua kontak dalam satu ruangan, jika mendapat banyak, kembalikan yang pertama. |
metode | memberList():Promise<Contact[]> | dapatkan semua anggota ruangan dari ruangan |
metode | owner(): null | Contact | Dapatkan pemilik kamar dari kamar. |
RoomInvitation
KelasTerima undangan kamar
Undangan Kamar | API | Keterangan |
---|---|---|
metode | accept(): Promise<void> | menerima Undangan Kamar |
metode | inviter(): Contact | dapatkan pengundang dari undangan kamar |
metode | roomTopic(): Promise<string> | dapatkan topik ruangan dari undangan ruangan |
metode | date(): Promise<Date> | waktu penciptaannya |
metode | age(): Promise<number> | jumlah detik sejak dibuat |
Wechaty sepenuhnya otomatis diuji melalui pengujian unit dan integrasi, dengan dukungan Continuous Integration & Continuous Delivery (CI/CD) yang didukung oleh CI seperti Travis, Shippable, dan Appveyor.
Untuk menguji Wechaty, jalankan:
npm test
Kenali lebih banyak tentang tes dari Wiki:Tes
Membuat dan menerbitkan Plugin Wechaty itu sederhana. Cukup ekspos modul Anda sebagai fungsi yang mengambil 1 parameter: wechaty. Saat plugin Anda diimpor oleh Wechaty, plugin tersebut akan masuk sebagai argumen, sehingga Anda bebas menambahkan konfigurasi apa pun yang didukung Wechaty.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
config
ada sehingga pengguna dapat meneruskan penyesuaian ke Plugin Anda. Dalam mendokumentasikan Plugin Wechaty Anda, Anda akan memaparkan konfigurasi yang didukung untuk pengguna.
Melihat:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
Dapatkan lebih banyak kode html/penurunan harga dari Wiki:Badge
Permintaan Tarik dipersilakan untuk menambahkan permintaan Anda!
Pelajari lebih lanjut tentang Proyek Menggunakan Wechaty di Wiki:Proyek Menggunakan Wechaty
Praktik terbaik untuk menjalankan Wechaty Docker/NPM adalah menggunakan VPS (Virtual Private Server) di luar China, yang dapat menghemat waktu berjam-jam karena npm install
dan docker pull
akan berjalan lancar tanpa masalah.
Penyedia VPS berikut digunakan oleh tim Wechaty, dan mereka bekerja dengan sempurna dalam produksi. Anda dapat menggunakan tautan berikut untuk mendapatkannya dalam hitungan menit. Selain itu, melakukan hal ini dapat mendukung Wechaty karena Anda dirujuk oleh kami.
Lokasi | Harga | Rama | Pembayaran | Penyedia |
---|---|---|---|---|
Singapura | $5 | 512MB | Paypal | Samudera Digital |
Jepang | $5 | 1GB | Paypal | Linode |
Korea | $10 | 1GB | Alipay, Paypal | Netdedi |
Singapura | $3,5 | 512MB | Alipay, WeChat | Vultr |
Pada tahun 2017...
Kehidupan/pekerjaan sehari-hari Huan bergantung pada terlalu banyak obrolan di WeChat.
Bisakah Anda bayangkan itu? Dia sekarat...
Jadi bot yang tak kenal lelah bekerja untuk saya 24x7 di WeChat, memantau/menyaring pesan yang paling penting sangat diperlukan. Misalnya menyoroti diskusi yang berisi KATA KUNCI yang ingin ditindaklanjuti (apalagi di ruangan yang bising). ;-)
Akhirnya, ini dibuat untuk tujuan studi pribadi huan tentang Pengujian Otomatis.
Proyek ini ada berkat semua orang yang berkontribusi. [Menyumbang].
Terima kasih kepada semua pendukung kami! [Menjadi pendukung]
Dukung proyek ini dengan menjadi sponsor. Logo Anda akan muncul di sini dengan tautan ke situs web Anda. [Menjadi sponsor]
Bekerja untuk reduksifikasi ekosistem Wechaty untuk menerapkan pola CQRS.
Rilis beta kedua Wechaty, dengan semua modul ekosistem npm dengan versi v1.10 (wechaty-puppet, wechaty-puppet-service, dll)
Untuk mengutip proyek ini dalam publikasi:
@misc { Wechaty ,
author = { Huan Li, Rui Li } ,
title = { Wechaty: Conversational SDK for Chatbot Makers } ,
year = { 2016 } ,
publisher = { GitHub } ,
journal = { GitHub Repository } ,
howpublished = { url{https://github.com/wechaty/wechaty} } ,
}