Wechaty
Wechaty — это SDK для роботизированной автоматизации процессов (RPA), который помогает создавать ботов за 6 строк кода на JavaScript, Python, Go, и Java. Поддерживаются кроссплатформенные решения, включая Linux, Windows, MacOS, и Docker.
:spider_web: 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, создатель «社长不见了».
«Лучшая библиотека для разработки на WeChat». — @Jarvis, инженер Baidu.
«Wechaty позволяет сотрудникам отдела эксплуатации уделять больше времени планированию мероприятий, удержанию клиентов и получению прибыли». — @lijiarui, основатель и генеральный директор Juzi.BOT.
«Если вы знаете JavaScript... попробуйте Wechaty, он прост в использовании». — @Urinx Uri Lee, автор WeixinBot (Python).
«Wechaty — хороший проект, надеюсь, он будет развиваться! Поэтому я стал участником открытого коллектива». — @Simple.
Присоединяйтесь к нам
Wechaty используется во многих проектах ChatBot тысячами разработчиков. Если вы хотите поговорить с другими разработчиками, просто отсканируйте следующий QR-код в WeChat с секретным кодом wechaty и присоединяйтесь к нашему дому разработчиков Wechaty.
Сканируйте сейчас, потому что другие разработчики Wechaty тоже хотят поговорить с вами! (секретный код: wechaty)
Вы также можете присоединиться к нашему каналу Gitter по адресу https://gitter.im/wechaty/wechaty со своей учётной записью GitHub!
Ресурсы
За последние 4 года Wechaty провёл множество бесед и получил множество блогов. Вот все ресурсы Wechaty:
Самый короткий код ChatBot в мире: 6 строк JavaScript
import { WechatyBuilder } from 'wechaty'
const wechaty = WechatyBuilder.build() // получаем экземпляр Wechaty
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 в examples/ding-dong-bot.ts и другие примеры в нашем каталоге примеров.
Требования
Начало работы
— Wechaty starter repository — https://github.com/wechaty/wechaty-getting-started.
У нас есть стартовый репозиторий Wechaty для начинающих. Вот перевод текста на русский язык:
Простейшая настройка. Просто запустите после выполнения команд clone
, npm install
и npm start
.
Если вы новичок в Wechaty и хотите попробовать его впервые, мы настоятельно рекомендуем вам начать с этого репозитория и использовать его в качестве стартового шаблона для вашего проекта.
В противном случае сохраните приведённый ниже пример самого короткого кода чат-бота в мире: 6 строк JavaScript в файл с именем bot.js
, прежде чем запускать его с помощью NPM или Docker.
[](https://www.npmjs.com/package/wechaty)
[](https://www.npmjs.com/package/wechaty?activeTab=versions)
[](https://www.npmjs.com/package/wechaty)
[](https://packagephobia.now.sh/result?p=wechaty)
npm init
npm install wechaty
# создайте свой первый файл bot.js, вы можете скопировать/вставить из приведённого выше примера «Самый короткий код чат-бота в мире: 6 строк JavaScript»
# затем:
node bot.js
[](https://hub.docker.com/r/wechaty/wechaty/)
[](https://microbadger.com/#/images/wechaty/wechaty)
Wechaty Docker поддерживает как JavaScript, так и TypeScript. Чтобы использовать TypeScript, просто напишите на TypeScript и сохраните с расширением .ts
, компилировать не нужно, потому что мы используем ts-node
для запуска.
2.1. Запустите JavaScript
# для JavaScript
docker run -ti --rm --volume="$(pwd)":/bot wechaty/wechaty bot.js
2.2. Запустите TypeScript
# для TypeScript
docker run -ti --rm --volume="$(pwd)":/bot wechaty/wechaty bot.ts
Подробнее о Wechaty Docker читайте на Wiki:Docker.
Wechaty очень мощный инструмент, он может работать по разным протоколам. Вы можете указать протокол, установив переменную среды WECHATY_PUPPET
на другого провайдера puppet.
Если вы не можете использовать веб-протокол, вы можете применить другой протокол, следуя инструкциям здесь: https://github.com/wechaty/wechaty/wiki/Support-Developers. Мы предоставляем бесплатный токен для поддержки разработчиков в создании ценного чат-бота WeChat.
В настоящее время мы поддерживаем следующих провайдеров puppet:
Протокол | Провайдер Puppet | Переменная среды |
---|---|---|
Веб | PuppetPuppeteer | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
Windows | PuppetWxwork | export WECHATY_PUPPET=wechaty-puppet-service |
Mock | PuppetMock | export WECHATY_PUPCET=wechaty-puppet-mock |
Веб | PuppetWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | PuppetRock | export WECHATY_PUPPET=wechaty-puppet-rock |
iPad | PuppetPadLocal | export WECHATY_PUPPET=wechaty-puppet-padlocal |
Windows | PuppetDonut | export WECHATY_PUPPET=wechaty-puppet-donut |
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 |
Узнайте больше о Wechaty Puppet из Puppet Wiki:
](https://wechaty.github.io/wechaty/#Contact+self) | Проверить, является ли контакт самим собой | |
name(): string| Получить имя контакта | |
alias(): Promise| Получить псевдоним контакта | |
alias(newAlias: string): Promise| Установить или удалить псевдоним контакта | |
friend(): boolean| Проверить, является ли контакт другом | |
type(): ContactType| Вернуть тип контакта | |
province(): string| Получить регион «провинция» из контакта | |
city(): string| Получить регион «город» из контакта | |
avatar(): Promise| Получить поток файла картинки аватара | |
gender(): ContactGender` | Получить пол контакта |ContactSelf
Класс ContactSelf
является расширением Contact
.
Название метода | API | Описание |
---|---|---|
avatar(file: FileBox): Promise<void> |
— | Установить аватар для бота |
qrcode(): Promise<string> |
— | Получить qr-код для бота |
signature(text: string): Promise<void> |
— | Установить подпись для бота |
Friendship
Отправка и получение запросов на дружбу, а также подтверждение дружбы.
Название метода | API | Описание |
---|---|---|
static add(contact: Contact, hello?: string): Promise<void>
|
— | Отправить приглашение в друзья контакту |
method accept(): Promise<void>
|
— | Принять запрос в друзья |
method hello(): string
|
— | Получить строку приветствия из приглашения в друзья |
method contact(): Contact
|
— | Получить контакт из дружбы |
method type(): FriendshipType
|
— | Вернуть тип дружбы (неизвестно, подтвердить, получить, проверить) |
Message
Все сообщения WeChat будут инкапсулированы как Message.
Название метода | API | Описание |
---|---|---|
static find(query: string): Promise<null | Message>
|
— | Найти сообщение в кэше и вернуть первое |
static findAll(query: string): Promise<Message[]>
|
— | Поиск сообщений в кэше, возврат списка сообщений |
method from(): Contact
|
— | Получить отправителя из сообщения |
method to(): Contact
|
— | Получить получателя сообщения |
method room(): null | Room
|
— | Получить комнату из сообщения (если сообщение не в комнате, то вернёт null ) |
method text(): string
|
— | Получить текстовое содержимое сообщения |
method say(text: string): Promise<void | Message>
|
— | Ответить текстом, медиафайлом или сообщением о контакте отправителю, вернуть отправленное ботом сообщение (поддерживается только puppet-padplus ) |
method type(): MessageType
|
— | Получить тип из сообщения |
method self(): boolean
|
— | Проверить, отправлено ли сообщение самостоятельно |
method mention()
|
— | — |
метод | mentionSelf(): boolean |
проверить, является ли сообщение упоминанием самого себя. |
метод | forward(to: Контакт): Promise<void> |
переслать полученное сообщение. |
метод | age(): number |
количество секунд с момента создания сообщения. |
метод | date(): Date |
время создания сообщения. |
метод | toFileBox(): Promise<FileBox> |
извлечь медиафайл из сообщения и поместить его в FileBox. |
метод | toContact(): Promise<Контакт> |
получить карточку контакта из сообщения. |
Room
Все комнаты WeChat (группы) будут инкапсулированы как Room.
Комната | API | Описание |
---|---|---|
статический | create(contactList: Контакт[], 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> |
принудительно перезагрузить данные для комнаты, синхронизировать данные с низкоуровневым API снова. |
метод | say(text: string): Promise<void | Message> |
отправить текст, медиафайл, карточку контакта или текст с упоминанием @mention contact внутри комнаты, вернуть отправленное сообщение (поддерживается только puppet-padplus ). |
метод | add(contact: Контакт): Promise<void> |
добавить контакт в комнату. |
метод | del(contact: Контакт): Promise<void> |
удалить контакт из комнаты. |
метод | quit(): Promise<void> |
бот выходит из комнаты самостоятельно. |
метод | topic(): Promise<string> |
ПОЛУЧИТЬ тему из комнаты. |
метод | topic(newTopic: string): Promise<void> |
УСТАНОВИТЬ тему из комнаты. |
метод | announce(text: string): Promise<void> |
УСТАНОВИТЬ/ПОЛУЧИТЬ объявление из комнаты. |
метод | 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 | Контакт> | Найти все контакты в комнате, если их много, вернуть первый. |
метод | memberList():Promise<Контакт[]> |
получить всех участников комнаты из комнаты. |
метод | owner(): null | Контакт |
Получить владельца комнаты из комнаты. |
RoomInvitation
Принять приглашение в комнату
RoomInvitation | API | Описание |
---|---|---|
метод | accept(): Promise<void> |
принять приглашение в комнату |
метод | inviter(): Контакт |
получить пригласителя из приглашения в комнату |
метод | roomTopic(): Promise<string> |
получить тему комнаты из приглашения в комнату |
метод | date(): Promise<Дата> |
время его создания |
метод | age(): Promise<число> |
количество секунд с момента его создания. |
Wechaty полностью автоматически тестируется модульными и интеграционными тестами с поддержкой непрерывной интеграции и непрерывной доставки (CI/CD), работающими на таких платформах CI, как Travis, Shippable и Appveyor.
Чтобы протестировать Wechaty, выполните:
npm test
Узнайте больше о тестах из Wiki:Tests.
Создать и опубликовать плагин Wechaty очень просто. Просто предоставьте свой модуль в виде функции, которая принимает 1 параметр: wechaty. Когда ваш плагин будет импортирован Wechaty, он передаст себя в качестве аргумента, и вы сможете добавить любую конфигурацию, поддерживаемую Wechaty.
import { WechatyPlugin } from 'wechaty'
export default const MyPlugin: WechatyPlugin = (wechaty: Wechaty) => {
// ...
}
Параметр config
существует для того, чтобы пользователь мог передавать настройки вашему плагину. При документировании вашего плагина Wechaty вы должны указать поддерживаемые конфигурации для пользователя.
См.:
[](https://wechaty.js.org)
Получите больше кода для встраивания html/markdown из Вики:Значок.
[CONTRIBUTING.md].
Спасибо всем нашим вкладчикам! 🙏 Станьте вкладчиком.
Поддержите этот проект, став спонсором. Ваш логотип будет отображаться здесь с ссылкой на ваш веб-сайт. Станьте спонсором.
Работа над редуцированием экосистемы Wechaty для применения шаблона CQRS.
Второй бета-релиз Wechaty со всеми модулями экосистемы npm версии v1.10 (wechaty-puppet, wechaty-puppet-service и т. д.).
— релиз v1.0 Wechaty — это первый бета-релиз Wechaty.
Чтобы процитировать этот проект в публикациях:
@misc{wechaty,
author = {Huan LI, Jiarui LI},
title = {Wechaty: Conversational SDK for Chatbot Makers},
year = {2016},
publisher = {GitHub},
journal = {GitHub Repository},
howpublished = {\url{https://github.com/wechaty/wechaty}},
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )