Wechaty는 챗봇 구축 프로세스를 단순화하는 대화형 RPA SDK입니다. 이는 WhatsApp, WeChat 등과 같은 다양한 메시징 플랫폼에 범용 인터페이스를 제공하는 챗봇 개발을 위한 스위스 군용 칼과 같습니다. Wechaty를 사용하면 봇 코드를 한 번만 작성하면 지원되는 모든 플랫폼에서 실행됩니다. 즉, 각 플랫폼 API의 근본적인 복잡성에 대해 걱정하지 않고 매력적인 대화 경험을 만드는 데 집중할 수 있습니다. 오픈 소스이고 사용하기 쉬우며 챗봇 아이디어를 실현하는 데 도움을 줄 준비가 되어 있는 활발한 커뮤니티의 지원을 받습니다.
Wechaty는 Linux, Windows, MacOS 및 Docker를 포함한 크로스 플랫폼 지원을 통해 JavaScript, Python, Go 및 Java의 6줄로 봇을 생성하는 데 도움이 되는 Chatbot Maker용 RPA(Robotic Process Automation) SDK입니다.
?️ 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 창립자”好用到哭“——你们对得起这个评价! link
— @bigbrother666sh, 《社长不见了》剧本杀 NPC DM 제작자"당신의 멋진 꿈" 링크
— @Jarvis, Baidu 엔지니어"Wechaty에서 더 많은 정보를 얻을 수 있습니다.
— @lijiarui, Juzi.BOT의 창립자 겸 CEO."js를 아신다면... Wechaty를 사용해 보세요. 사용하기 쉽습니다."
— @Urinx Uri Lee, WeixinBot(Python) 작성자"위채티는 좋은 프로젝트입니다. 계속 이어졌으면 좋겠습니다! 그래서 오픈콜렉티브의 기여자가 되었습니다."
- @단순한
Wiki:Voice Of Developer에서 자세한 내용을 확인하세요.
Wechaty는 수천 명의 개발자가 많은 ChatBot 프로젝트에서 사용하고 있습니다. 다른 개발자와 대화하려면 아래 QR 코드를 스캔하고 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이 필요합니다.
이 봇은 검색을 통해 로그인한 후 모든 메시지를 콘솔에 기록할 수 있습니다.
example/ding-dong-bot.ts에서 Wechaty의 공식 예제를 찾을 수 있으며 예제 디렉토리에서 더 많은 정보를 찾을 수 있습니다.
가장 간단한 설정으로 초보자를 위한 Wechaty 스타터 저장소가 있습니다. clone
& npm install
& npm start
후에는 즉시 사용할 수 있습니다.
Wechaty를 처음 사용하고 처음으로 시도하고 싶다면 이 저장소에서 시작하여 프로젝트의 시작 템플릿으로 사용하는 것이 좋습니다.
그렇지 않은 경우 NPM 또는 Docker를 사용하여 실행하기 전에 위의 세계에서 가장 짧은 ChatBot 코드: 6줄의 JavaScript 예제를 bot.js
라는 파일에 저장하세요.
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. TypeScript 실행
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Wiki:Docker에서 Wechaty Docker에 대해 자세히 알아보세요.
Wechaty는 매우 강력하여 다양한 프로토콜을 통해 실행될 수 있습니다. 환경 변수 WECHATY_PUPPET
다른 인형 공급자로 설정하여 프로토콜을 지정할 수 있습니다.
웹 프로토콜을 사용할 수 없는 경우 여기 지침에 따라 다른 프로토콜을 적용할 수 있습니다: https://github.com/wechaty/wechaty/wiki/Support-Developers 우리는 개발자가 귀중한 WeChat 챗봇을 구축할 수 있도록 무료 토큰을 제공합니다.
현재 우리는 다음과 같은 인형 공급자를 지원합니다:
규약 | 인형 제공자 | 환경변수 |
---|---|---|
편물 | 꼭두각시인형을 조종하는 사람 | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
윈도우 | PuppetWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
모조품 | 꼭두각시모의 | export WECHATY_PUPPET=wechaty-puppet-mock |
편물 | 꼭두각시Wechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
아이패드 | 꼭두각시록 | export WECHATY_PUPPET=wechaty-puppet-service |
아이패드 | PuppetPad로컬 | 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 |
Puppet Wiki에서 Wechaty Puppet에 대해 자세히 알아보세요.
Wechaty 공식 API 참조에서 전체 문서를 읽어보세요.
Wechaty
메인 봇 클래스.
Bot
특정 wechaty-puppet을 제어하는 Wechaty 인스턴스입니다.
new Wechaty(options?: WechatyOptions)
options.name?: string
이 봇의 이름(선택 사항)options.puppet?: string
우리가 사용할 puppet 공급자를 선택합니다. 다음 중 하나여야 합니다.options.puppetOptions?: PuppetOptions
옵션입니다.위챗티 | API | 설명 |
---|---|---|
이벤트 | login | 봇 로그인이 완전히 성공한 후 방출 |
이벤트 | logout | 봇이 로그아웃한 후 방출 |
이벤트 | friendship | 누군가가 봇에게 친구 요청을 보낼 때 내보냅니다. |
이벤트 | message | 새 메시지가 있을 때 내보냅니다. |
이벤트 | room-join | 누구든 방에 참여할 때 방출 |
이벤트 | room-topic | 누군가가 방 주제를 바꾸면 방출합니다. |
이벤트 | room-leave | 누군가가 방을 나갈 때 방출 |
이벤트 | room-invite | 방 초대가 있을 때 발신 |
이벤트 | scan | 봇이 스캔을 위해 QR 코드를 표시해야 할 때 내보냅니다. |
방법 | start(): Promise<void> | 봇을 시작하다 |
방법 | stop(): Promise<void> | 봇을 중지하세요 |
방법 | logonoff(): boolean | 봇 로그인 상태 |
방법 | logout(): Promise<void> | 봇 로그아웃 |
방법 | currentUser(): ContactSelf | 로그인한 봇 연락처 받기 |
방법 | say(text: string): Promise<void> | 봇이 스스로에게 text 말하게 하세요 |
Contact
모든 위챗 연락처(친구/친구가 아님)는 연락처로 캡슐화됩니다.
연락하다 | API | 설명 |
---|---|---|
공전 | find(query: string): Promise<null | Contact> | 이름이나 별칭으로 연락처를 찾고, 결과가 둘 이상인 경우 첫 번째 항목을 반환합니다. |
공전 | findAll(query: string): Promise<Contact[]> | name 이나 alias 으로 연락처 찾기 |
공전 | load(query: string): Contact | 아이디로 연락받다 |
재산 | id: readonly string | 연락처 ID 가져오기 |
방법 | sync(): Promise<void> | 연락처에 대한 데이터를 강제로 다시 로드하고, 낮은 수준 API의 데이터를 다시 동기화합니다. |
방법 | 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
에서 확장되었습니다.
본인에게 연락하기 | API | 설명 |
---|---|---|
방법 | avatar(file: FileBox): Promise<void> | 봇의 아바타 설정 |
방법 | qrcode(): Promise<string> | 봇의 QR코드 받기 |
방법 | signature(text: string): Promise<void> | 봇의 서명 설정 |
Friendship
친구요청 보내기, 받기, 친구확인 이벤트 등을 할 수 있습니다.
우정 | API | 설명 |
---|---|---|
공전 | add(contact: Contact, hello?: string): Promise<void> | 연락할 친구 초대장 보내기 |
방법 | accept(): Promise<void> | 친구 요청 수락 |
방법 | hello(): string | 우정 초대에서 안녕하세요 문자열을 받으세요 |
방법 | contact(): Contact | 친구에게서 연락을 받아 |
방법 | type(): FriendshipType | 우정 유형(알 수 없음, 확인, 수신, 확인)을 반환합니다. |
Message
모든 wechat 메시지는 메시지로 캡슐화됩니다.
메시지 | API | 설명 |
---|---|---|
공전 | 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[] | contactList에 언급된 메시지를 받으세요. |
방법 | mentionSelf(): boolean | 메시지가 자신을 언급했는지 확인 |
방법 | forward(to: Contact): Promise<void> | 받은 메시지를 전달하세요 |
방법 | age(): number | 생성된 이후 경과된 시간(초) |
방법 | date(): Date | 그것이 만들어진 시간 |
방법 | toFileBox(): Promise<FileBox> | 메시지에서 미디어 파일을 추출하여 FileBox에 넣습니다. |
방법 | toContact(): Promise<Contact> | 메시지 공유카드 받기 |
Room
모든 위챗 방(그룹)은 방으로 캡슐화됩니다.
방 | API | 설명 |
---|---|---|
공전 | create(contactList: Contact[], topic?: string): Promise<Room> | 새 방을 만들어 |
공전 | find(query: string): Promise<null | Room> | 필터로 방을 찾아보세요. 많이 얻으면 첫 번째 것을 반환하십시오. |
공전 | findAll(query: string): Promise<Room[]> | 방의 모든 연락처 찾기 |
공전 | load(query: string): Room | 방 ID로 방 로드 |
재산 | id: readonly string | |
이벤트 | join | 누구든 방에 참여할 때 방출 |
이벤트 | topic | 누군가가 방 주제를 바꾸면 방출합니다. |
이벤트 | leave | 누군가가 방을 나갈 때 방출 |
이벤트 | invite | 방 초대를 받을 때 발신 |
방법 | sync(): <Promise<void> | 회의실의 데이터를 강제로 다시 로드하고, 낮은 수준 API의 데이터를 다시 동기화하세요. |
방법 | say(text: string): Promise<void | Message> | 텍스트, 미디어 파일, 연락처 카드 또는 Room 내 연락처 @멘션이 포함된 텍스트를 보내고 봇이 보낸 메시지를 반환합니다( 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> | SET/GET 방에서 알림 |
방법 | qrcode(): Promise<string> | 방에서 방의 QR 코드를 받아 스캔하고 방에 참여할 수 있습니다. |
방법 | 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
회의실 초대 수락
방초대 | API | 설명 |
---|---|---|
방법 | accept(): Promise<void> | 회의실 초대 수락 |
방법 | inviter(): Contact | 방 초대에서 초대자 받기 |
방법 | roomTopic(): Promise<string> | 룸 초대에서 룸 주제 가져오기 |
방법 | date(): Promise<Date> | 그것이 만들어진 시간 |
방법 | age(): Promise<number> | 생성된 이후 경과된 시간(초) |
Wechaty는 Travis, Shippable 및 Appveyor와 같은 CI를 기반으로 하는 CI/CD(지속적 통합 및 지속적 전달) 지원을 통해 단위 및 통합 테스트를 통해 완전히 자동으로 테스트됩니다.
Wechaty를 테스트하려면 다음을 실행하세요.
npm test
Wiki:Tests에서 테스트에 대해 자세히 알아보세요.
Wechaty 플러그인을 만들고 게시하는 것은 간단합니다. 간단하게 1개의 매개변수(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 )
Wiki:Badge에서 추가 HTML/마크다운 코드 삽입을 받으세요.
Pull Request를 추가하는 것을 환영합니다!
Wiki:Wechaty를 사용하는 프로젝트에서 Wechaty를 사용하는 프로젝트에 대해 자세히 알아보세요.
Wechaty Docker/NPM을 실행하는 가장 좋은 방법은 중국 이외의 지역에서 VPS(Virtual Private Server)를 사용하는 것입니다. 이렇게 하면 npm install
및 docker pull
문제 없이 원활하게 실행되므로 시간을 절약할 수 있습니다.
다음 VPS 제공업체는 Wechaty 팀에서 사용하며 프로덕션 환경에서 완벽하게 작동했습니다. 다음 링크를 사용하면 몇 분 안에 얻을 수 있습니다. 또한 이렇게 하면 Wechaty가 귀하를 추천하므로 Wechaty를 지원할 수 있습니다.
위치 | 가격 | 숫양 | 지불 | 공급자 |
---|---|---|---|---|
싱가포르 | $5 | 512MB | 페이팔 | 디지털오션 |
일본 | $5 | 1GB | 페이팔 | 리노드 |
한국 | $10 | 1GB | 알리페이,페이팔 | 넷데디 |
싱가포르 | $3.5 | 512MB | 알리페이, 위챗 | 불터 |
2017년에는 ...
Huan의 일상/일은 위챗의 과도한 채팅에 달려있습니다.
상상할 수 있나요? 그는 죽어가고 있었다...
따라서 WeChat에서 나를 위해 24시간 연중무휴로 일하는 지칠 줄 모르는 봇, 가장 중요한 메시지를 모니터링/필터링하는 것이 절실히 필요합니다. 예를 들어, 그가 후속 조치를 취하고 싶은 키워드가 포함된 토론을 강조합니다(특히 시끄러운 방에서). ;-)
마침내 Huan의 개인 학습 목적인 자동 테스트를 위해 만들어졌습니다.
이 프로젝트는 기여하는 모든 사람들 덕분에 존재합니다. [기여하다].
모든 후원자분들께 감사드립니다! [후원자가 되세요]
후원자가 되어 이 프로젝트를 지원하세요. 귀하의 로고가 귀하의 웹사이트 링크와 함께 여기에 표시됩니다. [후원자가 되세요]
CQRS 패턴을 적용하기 위해 Wechaty 생태계를 재정화하는 작업을 진행하고 있습니다.
v1.10 버전의 모든 생태계 npm 모듈(wechaty-puppet, wechaty-puppet-service 등)이 포함된 Wechaty의 두 번째 베타 릴리스
출판물에서 이 프로젝트를 인용하려면:
@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} } ,
}