Wechaty عبارة عن RPA SDK للمحادثة تعمل على تبسيط عملية إنشاء برامج الدردشة الآلية. إنه يشبه سكين الجيش السويسري لتطوير روبوتات الدردشة، حيث يوفر واجهة عالمية لمنصات المراسلة المختلفة مثل WhatsApp وWeChat والمزيد. مع Wechaty، يمكنك كتابة رمز الروبوت الخاص بك مرة واحدة، ويتم تشغيله على أي من الأنظمة الأساسية المدعومة. وهذا يعني أنه يمكنك التركيز على إنشاء تجارب محادثة جذابة دون القلق بشأن التعقيدات الأساسية لواجهة برمجة التطبيقات الخاصة بكل نظام أساسي. إنه مفتوح المصدر، وسهل الاستخدام، ومدعوم بمجتمع نابض بالحياة وجاهز لمساعدتك على إحياء أفكار chatbot الخاصة بك.
Wechaty عبارة عن حزمة SDK لـ RPA (أتمتة العمليات الروبوتية) لصانعي Chatbot والتي يمكنها مساعدتك في إنشاء روبوت في 6 أسطر من JavaScript وPython وGo وJava، مع دعم عبر الأنظمة الأساسية بما في ذلك Linux وWindows وMacOS و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 حلاً رائعًا؛ وأعتقد أنه سيكون هناك عدد أكبر بكثير من المستخدمين الذين سيتعرفون عليه." وصلة
— @Gcaufy، مهندس Tencent، مؤلف كتاب WePY"太好用،好用的想哭"
- @xinbenlv، مهندس Google، مؤسس HaoShiYou.org”好用到哭“——你们对得起这个评价! الرابط
— @bigbrother666sh، منشئ 《社长不见了》剧本杀 NPC DMالرابط "最好的微信开发库".
- @ جارفيس، مهندس بايدورابط "Wechaty让运营人员更多的时间思考如何进行活动策划、留存用户،商业变现"
— @lijiarui، المؤسس والرئيس التنفيذي لشركة Juzi.BOT."إذا كنت تعرف js... جرب Wechaty. إنه سهل الاستخدام."
— @Urinx Uri Lee، مؤلف WeixinBot(Python)"Wechaty هو مشروع جيد؛ وآمل أن يستمر! لذلك، أصبحت مساهمًا في المجموعة المفتوحة."
- @بسيط
شاهد المزيد على ويكي: صوت المطور
يتم استخدام Wechaty في العديد من مشاريع ChatBot بواسطة آلاف المطورين. للتحدث مع مطورين آخرين، قم بمسح رمز الاستجابة السريعة أدناه وانضم إلى مجتمع مطوري Wechaty الخاص بنا.
قم بالمسح الآن لأن مطوري Wechaty الآخرين يريدون التحدث معك أيضًا!
لقد أجرى Wechaty بالفعل الكثير من المحادثات وحصل على الكثير من المدونات في السنوات الماضية؛ هنا جميع موارد 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 ( )
ملاحظة: يتطلب Wechaty إصدار Node.js >= 16
يمكن لهذا الروبوت تسجيل جميع الرسائل إلى وحدة التحكم بعد تسجيل الدخول عن طريق الفحص.
يمكنك العثور على أمثلة Wechaty الرسمية على example/ding-dong-bot.ts والمزيد من دليل الأمثلة الخاص بنا.
لدينا مستودع Wechaty للمبتدئين بأبسط الإعدادات. سيتم العمل خارج الصندوق بعد clone
npm install
npm start
.
إذا كنت جديدًا على Wechaty وترغب في تجربته للمرة الأولى، نود أن نوصيك بشدة بالبدء من هذا المستودع واستخدامه كقالب بداية لمشروعك.
بخلاف ذلك، يرجى حفظ أقصر رمز ChatBot في العالم أعلاه: 6 أسطر من مثال JavaScript في ملف يسمى bot.js
قبل أن تتمكن من استخدام NPM أو Docker لتشغيله.
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 كلاً من JavaScript وTypeScript. لاستخدام TypeScript، ما عليك سوى الكتابة في TypeScript وحفظه باسم الامتداد
.ts
، ولا حاجة إلى الترجمة لأننا نستخدمts-node
لتشغيله.
2.1. قم بتشغيل جافا سكريبت
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2. قم بتشغيل تايب سكريبت
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
تعرف على المزيد حول Wechaty Docker على Wiki:Docker.
Wechaty قوي للغاية بحيث يمكنه تشغيل بروتوكولات مختلفة. يمكنك تحديد البروتوكول عن طريق تعيين متغير البيئة WECHATY_PUPPET
لموفر دمية مختلف.
إذا لم تتمكن من استخدام بروتوكول الويب، فيمكنك تطبيق بروتوكولات أخرى باتباع التعليمات هنا: https://github.com/wechaty/wechaty/wiki/Support-Developers نحن نقدم رمزًا مجانيًا لدعم المطورين في إنشاء برنامج WeChat chatbot ذي قيمة.
نحن ندعم حاليًا موفري الدمى التاليين:
بروتوكول | مزود الدمى | متغير البيئة |
---|---|---|
ويب | محرك الدمى | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
ويندوز | PuppetWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
وهمية | PuppetMock | export WECHATY_PUPPET=wechaty-puppet-mock |
ويب | دميةWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
آي باد | بابيت روك | export WECHATY_PUPPET=wechaty-puppet-service |
آي باد | PuppetPadLocal | export WECHATY_PUPPET=wechaty-puppet-service |
ويندوز | دمية دونات | export WECHATY_PUPPET=wechaty-puppet-service |
آي باد | export WECHATY_PUPPET=wechaty-puppet-padpro | |
آي باد | export WECHATY_PUPPET=wechaty-puppet-padchat | |
آي باد | export WECHATY_PUPPET=wechaty-puppet-padplus | |
ماك | export WECHATY_PUPPET=wechaty-puppet-macpro | |
ويندوز | export WECHATY_PUPPET=wechaty-puppet-service |
تعرف على المزيد حول Wechaty Puppet من Puppet Wiki:
اقرأ الوثائق الكاملة على مرجع Wechaty الرسمي لواجهة برمجة التطبيقات (API).
Wechaty
فئة الروبوت الرئيسية.
Bot
هو مثيل Wechaty الذي يتحكم في دمية wechaty معينة.
new Wechaty(options?: WechatyOptions)
options.name?: string
اسم هذا الروبوت (اختياري)options.puppet?: string
تحدد موفر الدمية الذي نريد استخدامه. يجب أن يكون واحدًا من:options.puppetOptions?: PuppetOptions
لموفر الدمية.ويتشاتي | واجهة برمجة التطبيقات | وصف |
---|---|---|
حدث | login | تنبعث بعد تسجيل دخول الروبوت بنجاح |
حدث | logout | تنبعث بعد تسجيل خروج الروبوت |
حدث | friendship | تنبعث عندما يرسل شخص ما طلب صداقة إلى الروبوت |
حدث | message | تنبعث عندما يكون هناك رسالة جديدة |
حدث | room-join | تنبعث عندما ينضم أي شخص إلى أي غرفة |
حدث | room-topic | تنبعث عندما يقوم شخص ما بتغيير موضوع الغرفة |
حدث | room-leave | تنبعث عندما يغادر أي شخص الغرفة |
حدث | room-invite | تنبعث عندما تكون هناك دعوة للغرفة |
حدث | scan | تنبعث عندما يحتاج الروبوت إلى إظهار رمز الاستجابة السريعة لك للمسح الضوئي |
طريقة | start(): Promise<void> | ابدأ الروبوت |
طريقة | stop(): Promise<void> | أوقف الروبوت |
طريقة | logonoff(): boolean | حالة تسجيل الدخول للبوت |
طريقة | logout(): Promise<void> | تسجيل الخروج من الروبوت |
طريقة | currentUser(): ContactSelf | احصل على جهة اتصال تسجيل الدخول إلى الروبوت |
طريقة | say(text: string): Promise<void> | دع الروبوت يقول text لنفسه |
Contact
سيتم تغليف جميع جهات اتصال Wechat (الأصدقاء/غير الأصدقاء) كجهة اتصال.
اتصال | واجهة برمجة التطبيقات | وصف |
---|---|---|
ثابت | find(query: string): Promise<null | Contact> | البحث عن جهة اتصال بالاسم أو الاسم المستعار، إذا كانت النتيجة أكثر من واحدة، قم بإرجاع الأولى. |
ثابت | findAll(query: string): Promise<Contact[]> | ابحث عن جهة اتصال name أو alias |
ثابت | load(query: string): Contact | الحصول على اتصال عن طريق الهوية |
ملكية | id: readonly string | الحصول على معرف جهة الاتصال |
طريقة | sync(): Promise<void> | فرض إعادة تحميل البيانات لجهة الاتصال، ومزامنة البيانات من واجهة برمجة التطبيقات ذات المستوى المنخفض مرة أخرى |
طريقة | say(text: string): Promise<void | Message> | إرسال نص أو جهة اتصال أو ملف إلى جهة اتصال، وإرجاع الرسالة التي أرسلها الروبوت (يدعم puppet-padplus فقط). |
طريقة | self(): boolean | تحقق مما إذا كان الاتصال ذاتيًا |
طريقة | name(): string | الحصول على الاسم من جهة اتصال |
طريقة | alias(): Promise<string> | الحصول على الاسم المستعار لجهة اتصال |
طريقة | alias(newAlias: string): Promise<void> | تعيين أو حذف الاسم المستعار لجهة اتصال |
طريقة | friend(): boolean | تحقق مما إذا كانت جهة الاتصال صديقًا |
طريقة | type(): ContactType | إرجاع نوع جهة الاتصال |
طريقة | province(): string | احصل على "المقاطعة" في المنطقة من جهة اتصال |
طريقة | city(): string | احصل على "مدينة" المنطقة من جهة اتصال |
طريقة | avatar(): Promise<FileBox> | الحصول على دفق ملف الصورة الرمزية |
طريقة | gender(): ContactGender | الحصول على الجنس من جهة اتصال |
ContactSelf
تم تمديد فئة ContactSelf
من Contact
.
اتصل بالنفس | واجهة برمجة التطبيقات | وصف |
---|---|---|
طريقة | avatar(file: FileBox): Promise<void> | تعيين الصورة الرمزية للبوت |
طريقة | qrcode(): Promise<string> | الحصول على رمز الاستجابة السريعة لبوت |
طريقة | signature(text: string): Promise<void> | تعيين التوقيع لبوت |
Friendship
الصفيةإرسال واستقبال طلبات الصداقة وأحداث تأكيد الصداقة.
الصداقة | واجهة برمجة التطبيقات | وصف |
---|---|---|
ثابت | add(contact: Contact, hello?: string): Promise<void> | إرسال دعوة صديق للاتصال |
طريقة | accept(): Promise<void> | قبول طلب الصداقة |
طريقة | hello(): string | احصل على سلسلة الترحيب من دعوة الصداقة |
طريقة | contact(): Contact | الحصول على الاتصال من الصداقة |
طريقة | type(): FriendshipType | إرجاع نوع الصداقة (مجهول، تأكيد، استلام، تحقق) |
Message
الصفسيتم تغليف جميع رسائل wechat كرسالة.
رسالة | واجهة برمجة التطبيقات | وصف |
---|---|---|
ثابت | find(query: string): Promise<null | Message> | ابحث عن الرسالة في ذاكرة التخزين المؤقت وأرجع الرسالة الأولى |
ثابت | findAll(query: string): Promise<Message[]> | البحث عن الرسائل في ذاكرة التخزين المؤقت، وإرجاع قائمة الرسائل |
طريقة | from(): Contact | الحصول على المرسل من الرسالة |
طريقة | to(): Contact | الحصول على وجهة الرسالة |
طريقة | room(): null | Room | احصل على الغرفة من الرسالة. (إذا لم تكن الرسالة في غرفة، فسوف تعود null ) |
طريقة | text(): string | الحصول على المحتوى النصي للرسالة |
طريقة | say(text: string): Promise<void | Message> | قم بالرد على رسالة نصية أو ملف وسائط أو رسالة جهة اتصال إلى المرسل، وقم بإرجاع الرسالة التي أرسلها الروبوت (يدعم puppet-padplus فقط). |
طريقة | type(): MessageType | احصل على النوع من الرسالة |
طريقة | self(): boolean | تحقق مما إذا تم إرسال الرسالة بنفسك |
طريقة | mention(): Contact[] | الحصول على الرسالة المذكورة قائمة الاتصال. |
طريقة | mentionSelf(): boolean | تحقق مما إذا كانت الرسالة تشير إلى الذات |
طريقة | forward(to: Contact): Promise<void> | إعادة توجيه الرسالة المستلمة |
طريقة | age(): number | عدد الثواني منذ إنشائه |
طريقة | date(): Date | الوقت الذي تم إنشاؤه فيه |
طريقة | toFileBox(): Promise<FileBox> | قم باستخراج ملف الوسائط من الرسالة ووضعه في FileBox. |
طريقة | toContact(): Promise<Contact> | احصل على بطاقة مشاركة الرسالة |
Room
صفيةسيتم تغليف جميع غرف (مجموعات) wechat كغرفة.
غرفة | واجهة برمجة التطبيقات | وصف |
---|---|---|
ثابت | create(contactList: Contact[], topic?: string): Promise<Room> | إنشاء غرفة جديدة |
ثابت | find(query: string): Promise<null | Room> | حاول العثور على غرفة عن طريق الفلتر. إذا حصلت على الكثير، قم بإرجاع الأول. |
ثابت | findAll(query: string): Promise<Room[]> | البحث عن جميع جهات الاتصال في الغرفة |
ثابت | load(query: string): Room | تحميل الغرفة حسب معرف الغرفة |
ملكية | id: readonly string | |
حدث | join | تنبعث عندما ينضم أي شخص إلى أي غرفة |
حدث | topic | تنبعث عندما يقوم شخص ما بتغيير موضوع الغرفة |
حدث | leave | تنبعث عندما يغادر أي شخص الغرفة |
حدث | invite | تنبعث عند تلقي دعوة للغرفة |
طريقة | sync(): <Promise<void> | فرض إعادة تحميل البيانات للغرفة، ومزامنة البيانات من واجهة برمجة التطبيقات ذات المستوى المنخفض مرة أخرى. |
طريقة | say(text: string): Promise<void | Message> | أرسل نصًا أو ملف وسائط أو بطاقة جهة اتصال أو نصًا مع الإشارة إلى جهة اتصال داخل الغرفة، وأعد الرسالة التي أرسلها الروبوت (يدعم puppet-padplus فقط). |
طريقة | add(contact: Contact): Promise<void> | إضافة جهة اتصال في الغرفة |
طريقة | del(contact: Contact): Promise<void> | حذف جهة اتصال من الغرفة |
طريقة | quit(): Promise<void> | غادر بوت الغرفة نفسها |
طريقة | topic(): Promise<string> | الحصول على الموضوع من الغرفة |
طريقة | topic(newTopic: string): Promise<void> | تعيين الموضوع من الغرفة |
طريقة | announce(text: string): Promise<void> | تعيين/الحصول على إعلان من الغرفة |
طريقة | qrcode(): Promise<string> | احصل على رمز الاستجابة السريعة للغرفة من الغرفة، والذي يمكن استخدامه للمسح الضوئي والانضمام إلى الغرفة. |
طريقة | alias(contact: Contact): Promise<string> | إرجاع الاسم المستعار لغرفة جهة الاتصال في الغرفة |
طريقة | roomAlias(contact: Contact): Promise<string | null> | نفس الاسم المستعار للوظيفة |
طريقة | has(contact: Contact): Promise<boolean> | تحقق مما إذا كانت الغرفة بها contact للأعضاء |
طريقة | memberAll(query?: string): Promise<Contact[]> | ابحث عن جميع جهات الاتصال أو باسم محدد في الغرفة |
طريقة | member(query: string): Promise<null | Contact> | ابحث عن جميع جهات الاتصال في الغرفة، وإذا كان هناك الكثير منها، قم بإرجاع أول جهة اتصال. |
طريقة | memberList():Promise<Contact[]> | أخرج جميع أعضاء الغرفة من الغرفة |
طريقة | owner(): null | Contact | أخرج صاحب الغرفة من الغرفة. |
RoomInvitation
الصفقبول دعوة الغرفة
دعوة الغرفة | واجهة برمجة التطبيقات | وصف |
---|---|---|
طريقة | accept(): Promise<void> | قبول دعوة الغرفة |
طريقة | inviter(): Contact | الحصول على المدعو من دعوة الغرفة |
طريقة | roomTopic(): Promise<string> | الحصول على موضوع الغرفة من دعوة الغرفة |
طريقة | date(): Promise<Date> | الوقت الذي تم إنشاؤه فيه |
طريقة | age(): Promise<number> | عدد الثواني منذ إنشائه |
يتم اختبار Wechaty تلقائيًا بالكامل من خلال اختبارات الوحدة والتكامل، مع دعم التكامل المستمر والتسليم المستمر (CI/CD) المدعوم من CI مثل Travis وShippable وAppveyor.
لاختبار Wechaty، قم بتشغيل:
npm test
تعرف على المزيد حول الاختبارات من Wiki:Tests
يعد إنشاء ونشر مكون Wechaty الإضافي أمرًا بسيطًا. ما عليك سوى الكشف عن الوحدة الخاصة بك كوظيفة تأخذ معلمة واحدة: wechaty. عندما يتم استيراد المكون الإضافي الخاص بك بواسطة Wechaty، فسوف يمرر نفسه كوسيطة، وبالتالي لديك الحرية في إضافة أي تكوين يدعمه Wechaty.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
config
موجود حتى يتمكن المستخدم من تمرير التخصيصات إلى المكون الإضافي الخاص بك. عند توثيق مكون Wechaty الإضافي الخاص بك، عليك أن تحدد التكوين المدعوم للمستخدم.
يرى:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
احصل على المزيد من كود html/markdown المضمن من Wiki:Badge
طلب السحب مرحب به لإضافة طلبك!
تعرف على المزيد حول المشاريع التي تستخدم Wechaty على Wiki:المشاريع التي تستخدم Wechaty
أفضل ممارسة لتشغيل Wechaty Docker/NPM هي استخدام VPS (خادم خاص افتراضي) خارج الصين، والذي يمكن أن يوفر لك ساعات من الوقت لأن npm install
docker pull
سيتم تشغيلهما بسلاسة دون أي مشكلة.
يتم استخدام موفري VPS التاليين من قبل فريق Wechaty، وقد عملوا بشكل مثالي في الإنتاج. يمكنك استخدام الرابط التالي للحصول على واحدة في دقائق. كما أن القيام بذلك يمكن أن يدعم Wechaty لأنه تمت إحالتك من قبلنا.
موقع | سعر | كبش | قسط | مزود |
---|---|---|---|---|
سنغافورة | 5 دولارات | 512 ميجابايت | باي بال | المحيط الرقمي |
اليابان | 5 دولارات | 1 جيجابايت | باي بال | لينود |
كوريا | 10 دولارات | 1 جيجابايت | أليباي، باي بال | نيتديدي |
سنغافورة | 3.5 دولار | 512 ميجابايت | أليباي، ويتشات | فولتر |
في عام 2017...
تعتمد حياة/عمل هوان اليومي على الكثير من الدردشة على تطبيق wechat.
هل يمكنك تخيل ذلك؟ كان يموت...
لذا فإن الروبوت الذي لا يكل يعمل لصالحي على مدار 24 ساعة طوال أيام الأسبوع على Wechat، وهناك حاجة ماسة إلى مراقبة/تصفية الرسائل الأكثر أهمية. على سبيل المثال، يسلط الضوء على المناقشة التي تحتوي على الكلمات الرئيسية التي يريد متابعتها (خاصة في غرفة صاخبة). ؛-)
أخيرًا، تم تصميمه لغرض الدراسة الشخصية لهوان وهو الاختبار التلقائي.
هذا المشروع موجود بفضل جميع الأشخاص الذين ساهموا فيه. [يساهم].
شكرا لجميع الداعمين لدينا! [كن داعمًا]
ادعم هذا المشروع من خلال أن تصبح راعياً. سيظهر شعارك هنا مع رابط لموقعك على الويب. [كن راعيًا]
العمل على إعادة تأهيل نظام Wechaty البيئي لتطبيق نمط CQRS.
الإصدار التجريبي الثاني من Wechaty، مع جميع وحدات النظام البيئي npm مع الإصدار v1.10 (wechaty-puppet، wechaty-puppet-service، إلخ)
للإشارة إلى هذا المشروع في المنشورات:
@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} } ,
}