#!/usr/bin/env node /** * Wechaty Chatbot SDK - https://github.com/wechaty/wechaty * * @copyright 2016 Huan LI (李卓桓) , and * Wechaty Contributors . * * 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. * */ /* eslint-disable import/first */ require('dotenv').config() import { config, log, } from '../src/config' import { IoClient, IoClientOptions, } from '../src/io-client' import { Wechaty } from '../src/wechaty' const welcome = ` | __ __ _ _ | \\ \\ / /__ ___| |__ __ _| |_ _ _ | \\ \\ /\\ / / _ \\/ __| '_ \\ / _\` | __| | | | | \\ V V / __/ (__| | | | (_| | |_| |_| | | \\_/\\_/ \\___|\\___|_| |_|\\__,_|\\__|\\__, | | |___/ =============== Powered by Wechaty =============== -------- https://www.chatie.io -------- My super power: download cloud bot from www.chatie.io __________________________________________________ ` async function main () { const token = config.token if (!token) { throw new Error('token not found: please set WECHATY_TOKEN in environment before run io-client') } console.info(welcome) log.info('Client', 'Starting for WECHATY_TOKEN: %s', token) const wechaty = new Wechaty({ name: token }) let port if (process.env['WECHATY_HOSTIE_PORT']) { /** * https://github.com/wechaty/wechaty/issues/2122 */ log.warn('Wechaty', [ '', 'WECHATY_HOSTIE_PORT is deprecated.', 'Use WECHATY_PUPPET_SERVER_PORT instead.', 'See: https://github.com/wechaty/wechaty/issues/2122', ].join(' ')) port = parseInt(process.env['WECHATY_HOSTIE_PORT']) } else if (process.env['WECHATY_PUPPET_SERVER_PORT']) { port = parseInt(process.env['WECHATY_PUPPET_SERVER_PORT']) } const options: IoClientOptions = { token, wechaty, } if (port) { options.port = port } const client = new IoClient(options) client.start() .catch(onError.bind(client)) } async function onError ( this : IoClient, e : Error, ) { log.error('Client', 'start() fail: %s', e) await this.quit() process.exit(-1) } main() .catch(console.error)