Wechaty — это диалоговый RPA SDK, который упрощает процесс создания чат-ботов. Это своего рода швейцарский нож для разработки чат-ботов, обеспечивающий универсальный интерфейс для различных платформ обмена сообщениями, таких как WhatsApp, WeChat и других. В Wechaty вы пишете код своего бота один раз, и он работает на любой из поддерживаемых платформ. Это означает, что вы можете сосредоточиться на создании увлекательного диалога, не беспокоясь о базовых сложностях API каждой платформы. Он имеет открытый исходный код, прост в использовании и поддерживается активным сообществом, которое готово помочь вам воплотить в жизнь идеи ваших чат-ботов.
Wechaty — это SDK RPA (Robotic Process Automation) для создателей чат-ботов, который поможет вам создать бота на 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Ссылка "最好的微信开发库"
— @Джарвис, инженер BaiduСсылка "Wechaty让运营人员更多的时间思考如何进行活动策划、留存用户,商业变现"
— @lijiarui, основатель и генеральный директор Juzi.BOT.«Если вы знаете js… попробуйте Wechaty. Он прост в использовании».
— @Urinx Ури Ли, автор WeixinBot (Python)«Wechaty — хороший проект. Надеюсь, он сможет продолжиться! Поэтому я стал участником открытого коллектива».
- @Простой
Дополнительную информацию можно найти на Wiki:Голос разработчика.
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.
Этот бот может выводить все сообщения на консоль после входа в систему посредством сканирования.
Вы можете найти официальные примеры Wechaty по адресу example/ding-dong-bot.ts и многое другое в нашем каталоге примеров.
У нас есть стартовый репозиторий Wechaty для новичков с самой простой настройкой. Он будет работать сразу после clone
, npm install
и npm start
.
Если вы новичок в Wechaty и хотите попробовать его впервые, мы настоятельно рекомендуем вам начать с этого репозитория и использовать его в качестве стартового шаблона для вашего проекта.
В противном случае сохраните приведенный выше пример «Самый короткий в мире код чат-бота»: 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. Запустить JavaScript
# 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
Узнайте больше о Wechaty Docker на Wiki:Docker.
Wechaty очень мощный инструмент, способный работать по разным протоколам. Вы можете указать протокол, установив для переменной среды WECHATY_PUPPET
другого поставщика марионеток.
Если вы не можете использовать веб-протокол, вы можете применить другие протоколы, следуя инструкциям здесь: https://github.com/wechaty/wechaty/wiki/Support-Developers. Мы предоставляем бесплатный токен, чтобы помочь разработчикам создать ценного чат-бота WeChat.
В настоящее время мы поддерживаем следующих поставщиков марионеток:
Протокол | Поставщик кукол | Переменная среды |
---|---|---|
Интернет | МарионеткаКукловод | export WECHATY_PUPPET=wechaty-puppet-puppeteer |
Окна | КукольнаяРаботаПро | export WECHATY_PUPPET=wechaty-puppet-service |
Насмехаться | КукольныйMock | export WECHATY_PUPPET=wechaty-puppet-mock |
Интернет | МарионеткаWechat4u | export WECHATY_PUPPET=wechaty-puppet-wechat4u |
iPad | КукольныйРок | export WECHATY_PUPPET=wechaty-puppet-service |
iPad | PuppetPadЛокальный | export WECHATY_PUPPET=wechaty-puppet-service |
Окна | МарионеткаПончик | 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 | |
Мак | export WECHATY_PUPPET=wechaty-puppet-macpro | |
Окна | export WECHATY_PUPPET=wechaty-puppet-service |
Узнайте больше о Wechaty Puppet на Puppet Wiki:
Прочтите полную документацию в официальном справочнике API Wechaty.
Wechaty
Основной класс ботов.
Bot
— это экземпляр Wechaty, который управляет определенной марионеткой Wechaty.
new Wechaty(options?: WechatyOptions)
options.name?: string
имя этого бота (необязательно)options.puppet?: string
выбирает, какой поставщик марионеток мы хотим использовать. должен быть одним из: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
Все контакты Wechat (друзья/не друзья) будут инкапсулированы как контакт.
Контакт | API | Описание |
---|---|---|
статический | find(query: string): Promise<null | Contact> | найти контакт по имени или псевдониму, если результата больше одного, вернуть первый. |
статический | findAll(query: string): Promise<Contact[]> | найти контакт по name или alias |
статический | load(query: string): Contact | получить контакт по идентификатору |
свойство | id: readonly string | получить идентификатор контакта |
метод | 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> | получить qrcode для бота |
метод | 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[] | получить сообщение, упомянутое в списке контактов. |
метод | mentionSelf(): boolean | проверьте, есть ли в сообщении упоминание о себе |
метод | forward(to: Contact): Promise<void> | Переслать полученное сообщение |
метод | age(): number | количество секунд с момента создания |
метод | date(): Date | время его создания |
метод | toFileBox(): Promise<FileBox> | извлеките медиафайл из сообщения и поместите его в FileBox. |
метод | toContact(): Promise<Contact> | получить карту обмена сообщениями |
Room
для 4 классовВсе комнаты (группы) Wechat будут инкапсулированы как комнаты.
Комната | API | Описание |
---|---|---|
статический | 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> | принудительно перезагрузить данные для комнаты, снова синхронизировать данные из низкоуровневого API. |
метод | say(text: string): Promise<void | Message> | Отправьте текст, медиафайл, карточку контакта или текст с упоминанием контакта @mention внутри комнаты, верните сообщение, отправленное ботом (поддерживается только 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 полностью автоматически тестируется с помощью модульных и интеграционных тестов с поддержкой непрерывной интеграции и непрерывной доставки (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 часа в сутки, 7 дней в неделю в 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} } ,
}