diff --git a/example/ding-dong-bot.ts b/example/ding-dong-bot.ts index 2b236eec5564ce635e5fa300979bd73275bdbac8..92d7834e1d05e30555dd5f2a4a4e439a3d350ed6 100644 --- a/example/ding-dong-bot.ts +++ b/example/ding-dong-bot.ts @@ -43,7 +43,7 @@ bot .on('logout' , user => log.info('Bot', `${user.name()} logouted`)) .on('error' , e => log.info('Bot', 'error: %s', e)) .on('scan', (url, code) => { - if (!/201|200/.test(code)) { + if (!/201|200/.test(String(code))) { let loginUrl = url.replace(/\/qrcode\//, '/l/') require('qrcode-terminal').generate(loginUrl) } diff --git a/example/friend-bot.ts b/example/friend-bot.ts index b3998df0152e7655806c1fb3167fa60effcb4606..9f76a91ec70fc5639a06e4116e96ab1c76620766 100644 --- a/example/friend-bot.ts +++ b/example/friend-bot.ts @@ -45,7 +45,7 @@ bot .on('logout' , user => log.info('Bot', `${user.name()} logouted`)) .on('error' , e => log.info('Bot', 'error: %s', e)) .on('scan', (url, code) => { - if (!/201|200/.test(code)) { + if (!/201|200/.test(String(code))) { let loginUrl = url.replace(/\/qrcode\//, '/l/') require('qrcode-terminal').generate(loginUrl) } diff --git a/example/tuling123-bot.ts b/example/tuling123-bot.ts index 8633bd9e29fcf68ed9ba826e550c7ea17c58e9dd..1830edef6bf84a04a481e002f93b463578e51999 100644 --- a/example/tuling123-bot.ts +++ b/example/tuling123-bot.ts @@ -50,7 +50,7 @@ Loading... bot .on('login' , user => log.info('Bot', `bot login: ${user}`)) .on('logout' , e => log.info('Bot', 'bot logout.')) -.on('scan', ({url, code}) => { +.on('scan', (url, code) => { console.log(`Scan QR Code in url to login: ${code}\n${url}`) }) .on('message', async m => { diff --git a/src/config.ts b/src/config.ts index 0f2784b5168ff1ec80d3f451e40fce197268b087..1161becef3e866f1f3f8be200ae1458b33303da7 100644 --- a/src/config.ts +++ b/src/config.ts @@ -143,11 +143,20 @@ type ScanInfo = { code: number } +type RecommendInfo = { + UserName: string + NickName: string + Content: string // request message + Ticket: string // a pass token + VerifyFlag: number +} + export default Config export { Config , HeadType , PuppetType + , RecommendInfo , ScanInfo , WatchdogFood , WechatyEventName diff --git a/src/message.ts b/src/message.ts index fa330502f99ebf8f732d3e6cd92fb88176fc39aa..5838b1b7f29d91ad5d7cb2fff29a2e8ef36b6a91 100644 --- a/src/message.ts +++ b/src/message.ts @@ -6,7 +6,11 @@ * https://github.com/wechaty/wechaty * */ -import Config from './config' +import { + Config + , RecommendInfo +} from './config' + import Contact from './contact' import Room from './room' import UtilLib from './util-lib' @@ -21,6 +25,8 @@ type MessageRawObj = { Status: string MMDigest: string MMDisplayTime: string // Javascript timestamp of milliseconds + + RecommendInfo?: RecommendInfo } type MessageObj = { @@ -73,7 +79,7 @@ class Message { throw Error('abstract method') } - constructor(private rawObj?: MessageRawObj) { + constructor(public rawObj?: MessageRawObj) { Message.counter++ if (typeof rawObj === 'string') { diff --git a/src/puppet-web/firer.spec.ts b/src/puppet-web/firer.spec.ts index 50a8124c086105321cc4e38bb55ef68450572deb..19db5ce544495f4d1078093362ab73fd3a9587fb 100644 --- a/src/puppet-web/firer.spec.ts +++ b/src/puppet-web/firer.spec.ts @@ -60,14 +60,15 @@ test('Firer.checkRoomJoin', t => { let result contentList.forEach(([content, inviter, inviteeList]) => { - result = Firer.checkRoomJoin(content) + result = Firer.checkRoomJoin(content as string) t.truthy(result, 'should check room join message right for ' + content) t.deepEqual(result[0], inviteeList, 'should get inviteeList right') t.is(result[1], inviter, 'should get inviter right') }) - result = Firer.checkRoomJoin('fsadfsadfsdfsdfs') - t.false(result, 'should get false if message is not expected') + t.throws(() => { + Firer.checkRoomJoin('fsadfsadfsdfsdfs') + }, 'should throws if message is not expected') }) test('Firer.checkRoomLeave', t => { @@ -81,8 +82,9 @@ test('Firer.checkRoomLeave', t => { t.truthy(leaver, 'should get leaver for leave message') t.is(leaver, data[1], 'should get leaver name right') - leaver = Firer.checkRoomLeave('fafdsfsdfafa') - t.false(leaver, 'should get false if message is not expected') + t.throws(() => { + Firer.checkRoomLeave('fafdsfsdfafa') + }, 'should throw if message is not expected') }) test('Firer.checkRoomTopic', t => { diff --git a/src/puppet-web/firer.ts b/src/puppet-web/firer.ts index 66c9994c3d9d8160fa5cf1ea5c0d35eb8c6571f5..6635ace99806139a470ae6a6ea64e020a2cc4eec 100644 --- a/src/puppet-web/firer.ts +++ b/src/puppet-web/firer.ts @@ -20,6 +20,10 @@ /* tslint:disable:no-var-requires */ const retryPromise = require('retry-promise').default +import { + // RecommendInfo +} from '../config' + import Contact from '../contact' import Message from '../message' import log from '../brolog-env' @@ -53,7 +57,7 @@ const regexConfig = { , roomTopic: /^"?(.+?)"? changed the group name to "(.+)"$/ } -async function fireFriendRequest(m) { +async function fireFriendRequest(m: Message) { const info = m.rawObj.RecommendInfo log.verbose('PuppetWebFirer', 'fireFriendRequest(%s)', info) diff --git a/src/puppet-web/friend-request.spec.ts b/src/puppet-web/friend-request.spec.ts index 2881f04cb76d01395139a0c055e9d02df5f0dadd..f54564596dac67728e67783a3e80a5a2afc2dea3 100644 --- a/src/puppet-web/friend-request.spec.ts +++ b/src/puppet-web/friend-request.spec.ts @@ -3,10 +3,12 @@ import { test } from 'ava' import Config from '../config' import Contact from '../contact' import Message from '../message' - +import Puppet from '../puppet' import PuppetWebFriendRequest from './friend-request' -Config.puppetInstance({}) +Config.puppetInstance({ + userId: 'xxx' +} as Puppet) test('PuppetWebFriendRequest.receive smoking test', t => { /* tslint:disable:max-line-length */ diff --git a/src/puppet-web/friend-request.ts b/src/puppet-web/friend-request.ts index b9ad1c5c6389d72d06f503749f193bceaf672214..2d249640b100ecd447aba976eff24ad07c947103 100644 --- a/src/puppet-web/friend-request.ts +++ b/src/puppet-web/friend-request.ts @@ -19,18 +19,13 @@ /* tslint:disable:no-var-requires */ const retryPromise = require('retry-promise').default -import Contact from '../contact' -import Config from '../config' -import FriendRequest from '../friend-request' -import log from '../brolog-env' - -type RecommendInfo = { - UserName: string - NickName: string - Content: string // request message - Ticket: string // a pass token - VerifyFlag: number -} +import Contact from '../contact' +import { + Config + , RecommendInfo +} from '../config' +import FriendRequest from '../friend-request' +import log from '../brolog-env' class PuppetWebFriendRequest extends FriendRequest {