npm install --save wechat4u@latest
const Wechat = require ( 'wechat4u' )
let bot = new Wechat ( )
bot . start ( )
// 或使用核心API
// const WechatCore = require('wechat4u/lib/core')
git clone https://github.com/nodeWechat/wechat4u.git
cd wechat4u
npm install
npm run core // 命令行模式
npm run compile // babel编译
node run-core.js
Логику смотрите в коде, он краткий и полный, обязательно прочтите
let bot = new Wechat ( [ botData ] )
Если переданы botData
, эта информация о роботе будет использоваться для перезапуска предыдущей синхронизации.
Все свойства доступны только для чтения
Экспортируемая основная информация об экземпляре. Вы можете заполнить эту информацию и повторно синхронизировать ее при следующем создании нового бота.
Необходимая информация для входа в систему
Информация о конфигурации, включая текущий адрес сервера, путь к API и некоторые константы.
Программе необходимо использовать константы в CONF для определения нового типа сообщения текущего статуса.
bot . state == bot . CONF . STATE . init // 初始化状态
bot . state == bot . CONF . STATE . uuid // 已获取 UUID
bot . state == bot . CONF . STATE . login // 已登录
bot . state == bot . CONF . STATE . logout // 已退出登录
msg . MsgType == bot . CONF . MSGTYPE_TEXT // 文本消息
msg . MsgType == bot . CONF . MSGTYPE_IMAGE // 图片消息
msg . MsgType == bot . CONF . MSGTYPE_VOICE // 语音消息
msg . MsgType == bot . CONF . MSGTYPE_EMOTICON // 自定义表情消息
msg . MsgType == bot . CONF . MSGTYPE_MICROVIDEO // 小视频消息
msg . MsgType == bot . CONF . MSGTYPE_VIDEO // 视频消息
Текущий статус
Информация о текущем вошедшем в систему пользователе
Все контакты, включая контакты адресной книги, недавние группы контактов и общедоступные учетные записи.
Ключом является имя пользователя контакта. Имя пользователя — это UUID каждого контакта во время этого входа в систему, но он изменится при следующем входе в систему.
value — объект Contact
. Конкретные методы атрибутов см. в src/interface/contact.js
Все сообщения, полученные после входа в систему
msg — объект Message
. Конкретные методы атрибутов см. в src/interface/message.js
Запустите экземпляр, войдите в систему и оставайтесь в синхронизации
После вызова этого метода обработайте сообщение, прослушав событие
Используйте необходимую информацию, полученную экземпляром, для повторного входа в систему и синхронизации.
Остановите экземпляр и выйдите из системы
После вызова этого метода выйдите из системы, прослушав событие logout
.
Настройте содержимое сообщения о пульсе
Функция getter
возвращает содержимое сообщения пульса.
typeof(getter())
должен быть "string"
bot . setRollingMessageGetter ( function ( ) {
//
return ( new Date ( ) ) . toJSON ( ) ;
} ) ;
Пользовательский интервал пульса
Функция getter
возвращает интервал пульса в миллисекундах.
typeof(getter())
должен быть "number"
bot . setRollingIntervalGetter ( function ( ) {
return 2 * 60 * 1000 ;
} ) ;
Настраиваемый целевой пользователь пульса
Функция getter
возвращает UserName
целевого пользователя (в форме @xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
).
typeof(getter())
должен быть "string"
Примечание. Если вы хотите использовать bot.user.UserName
, вам необходимо определить целевого пользователя после события login
.
bot . setRollingmeGetter ( function ( ) {
return bot . user . UserName ;
} ) ;
Следующие методы возвращают Promise
Отправляйте текстовые сообщения, которые могут включать смайлы emoji (?) и QQ ([плохая улыбка]).
Загрузить медиафайлы
возвращаться
{
name : name ,
size : size ,
ext : ext ,
mediatype : mediatype ,
mediaId : mediaId
}
Отправляйте изображения, mediaId — это идентификатор mediaId, возвращаемый функцией uploadMedia.
bot . uploadMedia ( fs . createReadStream ( 'test.png' ) )
. then ( res => {
return bot . sendPic ( res . mediaId , ToUserName )
} )
. catch ( err => {
console . log ( err )
} )
Отправьте смайлик, но это MD5 смайлика или mediaId, возвращенный методом uploadMedia.
MD5 смайлика можно вычислить самостоятельно, но он может отсутствовать на сервере WeChat. Его также можно получить из сообщения смайлика, возвращаемого WeChat.
Отправить видео
Отправляйте файлы в виде карточек приложений, и вы сможете отправлять голоса через этот API.
Инкапсуляция описанного выше метода отправки сообщений является общим методом отправки сообщений.
Если msg
представляет собой строку, отправьте текстовое сообщение
Если msg
равно {file:xxx,filename:'xxx.ext'}
, отправьте соответствующий медиафайл.
Если msg
равно {emoticonMd5:xxx}
, отправьте смайлик.
bot . sendMsg ( {
file : request ( 'https://raw.githubusercontent.com/nodeWechat/wechat4u/master/bot-qrcode.jpg' ) ,
filename : 'bot-qrcode.jpg'
} , ToUserName )
. catch ( err => {
console . log ( err )
} )
Переслать сообщение, msg
объект msg
передаваемый событием message
.
Отозвать сообщение
MsgID
— это идентификатор, представляющий сообщение, возвращаемое после отправки сообщения.
bot . sendMsg ( '测试撤回' , toUserName )
. then ( res => {
return bot . revokeMsg ( res . MsgID , toUserName )
} )
. catch ( err => {
console . log ( err )
} )
Получить контакты из адресной книги
Seq
— это seq, возвращаемый после последнего вызова bot.getContact. Его не нужно передавать при первом вызове.
Пакетное получение указанных контактных данных
массив contacts
, указывающий данные, которые необходимо получить
Если contacts
является [{UserName: xxx}]
, можно получить указанную информацию о контакте или группе.
Если contacts
является [{UserName: xxx, EncryChatRoomId: xxx}]
, можно получить подробную информацию об участниках в указанной группе, а EncryChatRoomId можно получить из информации о группе.
Получить контактный аватар
bot . getHeadImg ( bot . contacts [ UserName ] . HeadImgUrl ) . then ( res => {
fs . writeFileSync ( ` ${ UserName } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Получите картинку или смайлик
bot . getMsgImg ( msg . MsgId ) . then ( res => {
fs . writeFileSync ( ` ${ msg . MsgId } .jpg` , res . data )
} ) . catch ( err => {
console . log ( err )
} )
Получить голос
Получите короткие видеоролики или видеоролики
Получите файл. Если MsgType
сообщения равен 49, а AppMsgType
— 6, это файл.
Добавить друзей
UserName
обычно можно получить из информации о группе.
Информация о проверке Content
Добавить запрос через друга
Создать группу
Название Topic
группового чата
Массив MemberList
, имя пользователя как минимум двух человек, кроме вас, формат: [ {"UserName":"@250d8d156ad9f8b068c2e3df3464ecf2"}, {"UserName":"@42d725733741de6ac53cbe3738d8dd2e"} ]
Обновить участников группы
Имя пользователя группы ChatRoomUserName
, начинающееся с '@@'
Массив MemberList
, свяжитесь с UserNa
fun
необязательно «addmember», «delmember», «invitemember»
Обновить название группы
Имя пользователя группы ChatRoomUserName
, начинающееся с '@@'
Строка NewName
, новое имя группы.
Закрепите или открепите контакт вверху. Вы можете получить группу ChatRoomOwner, напрямую открепив группу.
OP == 0 Открепить
ОП == 1 закреплено
Установка заметок или меток контакта
Получив uuid, вы можете создать QR-код или получить QR-код с сервера WeChat.
bot . on ( 'uuid' , uuid => {
qrcode . generate ( 'https://login.weixin.qq.com/l/' + uuid , {
small : true
} )
console . log ( '二维码链接:' , 'https://login.weixin.qq.com/qrcode/' + uuid )
} )
После сканирования с помощью мобильного телефона вы можете получить URL-адрес данных аватара вошедшего в систему пользователя.
Подтверждение входа в систему с мобильного телефона
Успешно вышел из системы
Обновление контактов, вы можете получить обновленный список контактов
Для всех сообщений, полученных посредством синхронизации, тип сообщения определяется msg.MsgType
bot . on ( 'message' , msg => {
switch ( msg . MsgType ) {
case bot . CONF . MSGTYPE_STATUSNOTIFY :
break
case bot . CONF . MSGTYPE_TEXT :
break
case bot . CONF . MSGTYPE_RECALLED :
break
}
} )
Каждый контакт наследуется от интерфейса/контакта и расширяет следующие атрибуты в дополнение к исходному json:
contact . AvatarUrl // 处理过的头像地址
contact . isSelf // 是否是登录用户本人
contact . getDisplayName ( )
contact . canSearch ( keyword )
Кроме того, wechat4u предоставляет Contact в качестве общего интерфейса для контактов в экземпляре, расширяя следующие свойства:
wechat . Contact . isRoomContact ( )
wechat . Contact . isSpContact ( )
wechat . Contact . isPublicContact ( )
wechat . Contact . getUserByUserName ( )
wechat . Contact . getSearchUser ( keyword )
Каждый объект msg наследуется от интерфейса/сообщения и имеет следующие атрибуты в дополнение к исходному json:
message . isSendBySelf // 是否是本人发送
message . isSendBy ( contact )
message . getPeerUserName ( ) // 获取所属对话的联系人 UserName
message . getDisplayTime ( ) // 获取形如 12:00 的时间戳信息
Что касается внедрения веб-роботов WeChat, то здесь уже есть много колес. Спасибо всем! (Рейтинг не в порядке. Коллекция должна быть неравномерной.)
Что касается описания интерфейса веб-страницы WeChat, то есть несколько статей, в которых он очень хорошо анализируется.
Массачусетский технологический институт