Wechaty é um SDK RPA conversacional que simplifica o processo de construção de chatbots. É como um canivete suíço para desenvolvimento de chatbot, fornecendo uma interface universal para várias plataformas de mensagens, como WhatsApp, WeChat e muito mais. Com o Wechaty, você escreve o código do seu bot uma vez e ele é executado em qualquer uma das plataformas suportadas. Isso significa que você pode se concentrar na criação de experiências de conversação envolventes sem se preocupar com as complexidades subjacentes da API de cada plataforma. É de código aberto, fácil de usar e apoiado por uma comunidade vibrante que está pronta para ajudá-lo a dar vida às suas ideias de chatbot.
Wechaty é um SDK RPA (Robotic Process Automation) para Chatbot Makers que pode ajudá-lo a criar um bot em 6 linhas de JavaScript, Python, Go e Java, com suporte multiplataforma, incluindo Linux, Windows, MacOS e 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 é uma ótima solução; acredito que haveria muito mais usuários que a reconheceriam." link
- @Gcaufy, engenheiro da Tencent, autor de WePY"太好用,好用的想哭"
— @xinbenlv, engenheiro do Google, fundador da HaoShiYou.org”好用到哭“——你们对得起这个评价! link
— @bigbrother666sh, criador de《社长不见了》剧本杀 NPC DMLink "最好的微信开发库"
- @Jarvis, engenheiro do Baidu"Wechaty让运营人员更多的时间思考如何进行活动策划、留存用户,商业变现" link
— @lijiarui, fundador e CEO da Juzi.BOT."Se você conhece js... experimente o Wechaty. É fácil de usar."
- @Urinx Uri Lee, autor de WeixinBot (Python)"Wechaty é um bom projeto; espero que possa continuar! Portanto, me tornei um contribuidor do coletivo aberto."
- @Simples
Veja mais em Wiki:Voice Of Developer
Wechaty é usado em muitos projetos ChatBot por milhares de desenvolvedores. Para conversar com outros desenvolvedores, escaneie o QR Code abaixo e junte-se à nossa comunidade de desenvolvedores Wechaty .
Digitalize agora porque outros desenvolvedores do Wechaty também querem falar com você!
Wechaty já deu muitas palestras e ganhou muitos blogs nos últimos anos; aqui estão todos os recursos 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 ( )
Aviso: Wechaty requer versão Node.js >= 16
Este bot pode registrar todas as mensagens no console após o login pela verificação.
Você pode encontrar os exemplos oficiais do Wechaty em exemplos/ding-dong-bot.ts e muito mais em nosso diretório de exemplos.
Temos um repositório inicial Wechaty para iniciantes com a configuração mais simples. Funcionará imediatamente depois que você clone
& npm install
& npm start
.
Se você é novo no Wechaty e deseja experimentá-lo pela primeira vez, gostaríamos de recomendar fortemente que você comece a partir deste repositório e o use como modelo inicial para o seu projeto.
Caso contrário, salve o código acima do ChatBot mais curto do mundo: 6 linhas de exemplo JavaScript em um arquivo chamado bot.js
antes de usar o NPM ou o Docker para executá-lo.
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 oferece suporte a JavaScript e TypeScript. Para usar TypeScript basta escrever em TypeScript e salvar com o nome de extensão
.ts
, não há necessidade de compilar porque usamosts-node
para executá-lo.
2.1. Execute JavaScript
# for JavaScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.js
2.2. Execute o TypeScript
# for TypeScript
docker run -ti --rm --volume= " $( pwd ) " :/bot wechaty/wechaty bot.ts
Saiba mais sobre o Wechaty Docker em Wiki:Docker.
Wechaty é muito poderoso e pode ser executado em diferentes protocolos. Você pode especificar o protocolo configurando a variável de ambiente WECHATY_PUPPET
para um provedor de fantoches diferente.
Se você não puder usar o protocolo da Web, poderá aplicar outros protocolos seguindo as instruções aqui: https://github.com/wechaty/wechaty/wiki/Support-Developers Fornecemos token gratuito para ajudar os desenvolvedores a criar um valioso chatbot do WeChat.
Atualmente oferecemos suporte aos seguintes fornecedores de fantoches:
Protocolo | Provedor de fantoches | Variável de ambiente |
---|---|---|
Rede | Marionetista | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
Windows | PuppetWorkPro | export WECHATY_PUPPET=wechaty-puppet-service |
Zombar | FantocheMock | export WECHATY_PUPPET=wechaty-puppet-mock |
Rede | Fantoche Wechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | PuppetRock | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | PuppetPadLocal | export WECHATY_PUPPET=wechaty-puppet-service |
Windows | Fantoche Donut | 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 | |
Windows | export WECHATY_PUPPET=wechaty-puppet-service |
Saiba mais sobre o Wechaty Puppet no Puppet Wiki:
Leia a documentação completa na referência oficial da API Wechaty
Wechaty
Classe principal de bot.
Um Bot
é uma instância do Wechaty que controla um fantoche wechaty específico.
new Wechaty(options?: WechatyOptions)
options.name?: string
o nome deste bot (opcional)options.puppet?: string
selecione qual provedor de fantoches queremos usar. deve ser um dos:options.puppetOptions?: PuppetOptions
para o provedor de fantoches.Wechaty | API | Descrição |
---|---|---|
evento | login | emitir após login do bot totalmente bem-sucedido |
evento | logout | emitir após o logout do bot |
evento | friendship | emitir quando alguém envia um pedido de amizade ao bot |
evento | message | emitir quando houver uma nova mensagem |
evento | room-join | emitir quando alguém entrar em qualquer sala |
evento | room-topic | emitir quando alguém muda de tópico da sala |
evento | room-leave | emitir quando alguém sai da sala |
evento | room-invite | emitir quando houver um convite para sala |
evento | scan | emitir quando o bot precisar mostrar um código QR para digitalização |
método | start(): Promise<void> | iniciar o bot |
método | stop(): Promise<void> | pare o robô |
método | logonoff(): boolean | status de login do bot |
método | logout(): Promise<void> | sair do bot |
método | currentUser(): ContactSelf | obter o contato do bot com login efetuado |
método | say(text: string): Promise<void> | deixe o bot dizer text para si mesmo |
Contact
de ClasseTodos os contatos do Wechat (amigos/não amigos) serão encapsulados como um Contato.
Contato | API | Descrição |
---|---|---|
estático | find(query: string): Promise<null | Contact> | encontre o contato pelo nome ou apelido, se o resultado for mais de um, retorne o primeiro. |
estático | findAll(query: string): Promise<Contact[]> | encontrar contato por name ou alias |
estático | load(query: string): Contact | obter contato por id |
propriedade | id: readonly string | obter ID de contato |
método | sync(): Promise<void> | forçar a recarga de dados para contato, sincronizar dados da API de baixo nível novamente |
método | say(text: string): Promise<void | Message> | envie texto, contato ou arquivo para contato, retorne a mensagem que o bot enviou (apenas puppet-padplus suportado). |
método | self(): boolean | verifique se o contato é próprio |
método | name(): string | obter o nome de um contato |
método | alias(): Promise<string> | obter o alias de um contato |
método | alias(newAlias: string): Promise<void> | definir ou excluir o alias de um contato |
método | friend(): boolean | verifique se o contato é amigo |
método | type(): ContactType | retornar o tipo do contato |
método | province(): string | obter a região 'província' de um contato |
método | city(): string | obter a região 'cidade' de um contato |
método | avatar(): Promise<FileBox> | obter fluxo de arquivo de imagem de avatar |
método | gender(): ContactGender | obter gênero de um contato |
ContactSelf
A classe ContactSelf
é estendida de Contact
.
Contato próprio | API | Descrição |
---|---|---|
método | avatar(file: FileBox): Promise<void> | definir avatar para bot |
método | qrcode(): Promise<string> | obter qrcode para bot |
método | signature(text: string): Promise<void> | definir assinatura para bot |
Friendship
de ClasseEnvie, receba solicitações de amizade e eventos de confirmação de amizade.
Amizade | API | Descrição |
---|---|---|
estático | add(contact: Contact, hello?: string): Promise<void> | envie um convite de amigo para contato |
método | accept(): Promise<void> | aceitar pedido de amizade |
método | hello(): string | receba a string de olá de um convite de amizade |
método | contact(): Contact | obter o contato da amizade |
método | type(): FriendshipType | retorne o tipo de amizade (desconhecido, confirme, receba, verifique) |
Message
de 3 aulasTodas as mensagens do wechat serão encapsuladas como uma mensagem.
Mensagem | API | Descrição |
---|---|---|
estático | find(query: string): Promise<null | Message> | encontre a mensagem no cache e retorne a primeira |
estático | findAll(query: string): Promise<Message[]> | encontre mensagens no cache, retorne uma lista de mensagens |
método | from(): Contact | obter o remetente de uma mensagem |
método | to(): Contact | obter o destino da mensagem |
método | room(): null | Room | obtenha a sala da mensagem. (Se a mensagem não estiver em uma sala, retornará null ) |
método | text(): string | obter o conteúdo do texto da mensagem |
método | say(text: string): Promise<void | Message> | responda um texto, arquivo de mídia ou mensagem de contato ao remetente, retorne a mensagem que o bot enviou (somente puppet-padplus suportado). |
método | type(): MessageType | obter o tipo da mensagem |
método | self(): boolean | verificar se uma mensagem foi enviada por você mesmo |
método | mention(): Contact[] | receber mensagem mencionada contactList. |
método | mentionSelf(): boolean | verifique se uma mensagem é mencionada a si mesmo |
método | forward(to: Contact): Promise<void> | Encaminhar a mensagem recebida |
método | age(): number | o número de segundos desde que foi criado |
método | date(): Date | a hora em que foi criado |
método | toFileBox(): Promise<FileBox> | extraia o arquivo de mídia da mensagem e coloque-o no FileBox. |
método | toContact(): Promise<Contact> | obter cartão de compartilhamento da mensagem |
Room
AulaTodas as salas (grupos) de wechat serão encapsuladas como uma sala.
Sala | API | Descrição |
---|---|---|
estático | create(contactList: Contact[], topic?: string): Promise<Room> | criar uma nova sala |
estático | find(query: string): Promise<null | Room> | Tente encontrar uma sala por filtro. Se conseguir muitos, devolva o primeiro. |
estático | findAll(query: string): Promise<Room[]> | Encontre todos os contatos em uma sala |
estático | load(query: string): Room | carregar sala por ID da sala |
propriedade | id: readonly string | |
evento | join | emitir quando alguém entrar em qualquer sala |
evento | topic | emitir quando alguém muda de assunto da sala |
evento | leave | emitir quando alguém sai da sala |
evento | invite | emitir quando receber um convite para sala |
método | sync(): <Promise<void> | forçar o recarregamento dos dados da sala, sincronizar os dados da API de baixo nível novamente. |
método | say(text: string): Promise<void | Message> | Envie texto, arquivo de mídia, cartão de contato ou texto com menção @mencionar contato dentro da Room, retorne a mensagem que o bot enviou (apenas puppet-padplus suportado). |
método | add(contact: Contact): Promise<void> | Adicionar contato em uma sala |
método | del(contact: Contact): Promise<void> | Excluir um contato da sala |
método | quit(): Promise<void> | Bot saiu da sala sozinho |
método | topic(): Promise<string> | PEGUE o tópico da sala |
método | topic(newTopic: string): Promise<void> | DEFINIR tópico da sala |
método | announce(text: string): Promise<void> | SET/GET anuncia da sala |
método | qrcode(): Promise<string> | Obtenha o QR Code da sala na sala, que pode ser usado para digitalizar e entrar na sala. |
método | alias(contact: Contact): Promise<string> | Retornar a sala do contatoAlias na sala |
método | roomAlias(contact: Contact): Promise<string | null> | Igual ao alias da função |
método | has(contact: Contact): Promise<boolean> | Verifique se a sala possui contact de membro |
método | memberAll(query?: string): Promise<Contact[]> | Encontre todos os contatos ou com nome específico em uma sala |
método | member(query: string): Promise<null | Contact> | Encontre todos os contatos de uma sala, se conseguir muitos, retorne o primeiro. |
método | memberList():Promise<Contact[]> | obter todos os membros da sala da sala |
método | owner(): null | Contact | Obtenha o dono do quarto. |
RoomInvitation
de aulaAceitar convite para sala
Convite para quarto | API | Descrição |
---|---|---|
método | accept(): Promise<void> | aceitar convite para sala |
método | inviter(): Contact | obtenha o convidador do convite da sala |
método | roomTopic(): Promise<string> | obter o tópico da sala no convite da sala |
método | date(): Promise<Date> | a hora em que foi criado |
método | age(): Promise<number> | o número de segundos desde que foi criado |
Wechaty é testado de forma totalmente automática por testes de unidade e integração, com suporte de integração contínua e entrega contínua (CI/CD) alimentado por CI como Travis, Shippable e Appveyor.
Para testar o Wechaty, execute:
npm test
Saiba mais sobre os testes em Wiki:Testes
Criar e publicar um plugin Wechaty é simples. Simplesmente exponha seu módulo como uma função que recebe 1 parâmetro: wechaty. Quando seu plugin for importado pelo Wechaty, ele se passará como argumento e, portanto, você estará livre para adicionar qualquer configuração suportada pelo Wechaty.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin : WechatyPlugin = ( wechaty : Wechaty ) => {
// ...
}
A config
existe para que o usuário possa passar customizações para o seu Plugin. Ao documentar seu plug-in Wechaty, você apresentaria sua configuração suportada para o usuário.
Ver:
[ ![ Powered by Wechaty ] ( https://img.shields.io/badge/Powered%20By-Wechaty-brightgreen.svg )] ( https://wechaty.js.org )
Obtenha mais códigos html/markdown incorporados em Wiki:Badge
Pull Request é bem-vindo para adicionar o seu!
Saiba mais sobre projetos usando Wechaty em Wiki:Projetos usando Wechaty
A melhor prática para executar o Wechaty Docker/NPM é usar um VPS (Virtual Private Server) fora da China, o que pode economizar horas porque npm install
e docker pull
funcionarão sem problemas.
Os seguintes provedores VPS são usados pela equipe Wechaty e funcionaram perfeitamente na produção. Você pode usar o link a seguir para obter um em minutos. Além disso, fazer isso pode apoiar o Wechaty porque você foi indicado por nós.
Localização | Preço | Bater | Pagamento | Provedor |
---|---|---|---|---|
Cingapura | US$ 5 | 512 MB | PayPal | Oceano Digital |
Japão | US$ 5 | 1 GB | PayPal | Linode |
Coréia | US$ 10 | 1 GB | Alipay, Paypal | Netdedi |
Cingapura | US$ 3,5 | 512 MB | Alipay, Wechat | Vultr |
Em 2017...
A vida/trabalho diário de Huan depende de muito bate-papo no wechat.
Você pode imaginar isso? Ele estava morrendo...
Portanto, um bot incansável trabalhando para mim 24 horas por dia, 7 dias por semana no wechat, monitorando/filtrando a mensagem mais importante é extremamente necessário. Por exemplo, destaca a discussão que contém as PALAVRAS-CHAVE que ele deseja acompanhar (especialmente em uma sala barulhenta). ;-)
Por fim, ele foi desenvolvido para o propósito de estudo pessoal de teste automático de huan.
Este projeto existe graças a todas as pessoas que contribuem. [Contribuir].
Obrigado a todos os nossos apoiadores! [Torne-se um apoiador]
Apoie este projeto tornando-se um patrocinador. Seu logotipo aparecerá aqui com um link para seu site. [Torne-se um patrocinador]
Trabalhando na reduxificação do ecossistema Wechaty para aplicação do padrão CQRS.
Segunda versão beta do Wechaty, com todos os módulos npm do ecossistema com versão v1.10 (wechaty-puppet, wechaty-puppet-service, etc)
Para citar este projeto em publicações:
@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} } ,
}