mirror of
https://github.com/wechaty/getting-started.git
synced 2026-10-18 06:20:54 +08:00
85 lines
2.5 KiB
JavaScript
85 lines
2.5 KiB
JavaScript
/**
|
|
* Wechaty - https://github.com/wechaty/wechaty
|
|
*
|
|
* @copyright 2016-now Huan LI <zixia@zixia.net>
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
import 'dotenv/config.js'
|
|
|
|
import {
|
|
WechatyBuilder,
|
|
ScanStatus,
|
|
log,
|
|
} from 'wechaty'
|
|
import qrcodeTerminal from 'qrcode-terminal'
|
|
|
|
function onScan (qrcode, status) {
|
|
if (status === ScanStatus.Waiting || status === ScanStatus.Timeout) {
|
|
qrcodeTerminal.generate(qrcode, { small: true }) // show qrcode on console
|
|
|
|
const qrcodeImageUrl = [
|
|
'https://wechaty.js.org/qrcode/',
|
|
encodeURIComponent(qrcode),
|
|
].join('')
|
|
|
|
log.info('StarterBot', 'onScan: %s(%s) - %s', ScanStatus[status], status, qrcodeImageUrl)
|
|
|
|
} else {
|
|
log.info('StarterBot', 'onScan: %s(%s)', ScanStatus[status], status)
|
|
}
|
|
}
|
|
|
|
function onLogin (user) {
|
|
log.info('StarterBot', '%s login', user)
|
|
}
|
|
|
|
function onLogout (user) {
|
|
log.info('StarterBot', '%s logout', user)
|
|
}
|
|
|
|
async function onMessage (msg) {
|
|
log.info('StarterBot', msg.toString())
|
|
|
|
if (msg.text() === 'ding') {
|
|
await msg.say('dong')
|
|
}
|
|
}
|
|
|
|
const bot = WechatyBuilder.build({
|
|
name: 'ding-dong-bot',
|
|
/**
|
|
* How to set Wechaty Puppet Provider:
|
|
*
|
|
* 1. Specify a `puppet` option when instantiating Wechaty. (like `{ puppet: 'wechaty-puppet-padlocal' }`, see below)
|
|
* 1. Set the `WECHATY_PUPPET` environment variable to the puppet NPM module name. (like `wechaty-puppet-padlocal`)
|
|
*
|
|
* You can use the following providers:
|
|
* - wechaty-puppet-wechat (no token required)
|
|
* - wechaty-puppet-padlocal (token required)
|
|
* - wechaty-puppet-service (token required, see: <https://wechaty.js.org/docs/puppet-services>)
|
|
* - etc. see: <https://github.com/wechaty/wechaty-puppet/wiki/Directory>
|
|
*/
|
|
// puppet: 'wechaty-puppet-wechat',
|
|
})
|
|
|
|
bot.on('scan', onScan)
|
|
bot.on('login', onLogin)
|
|
bot.on('logout', onLogout)
|
|
bot.on('message', onMessage)
|
|
|
|
bot.start()
|
|
.then(() => log.info('StarterBot', 'Starter Bot Started.'))
|
|
.catch(e => log.error('StarterBot', e))
|