Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
.Veneno.
wechaty
提交
3b616560
W
wechaty
项目概览
.Veneno.
/
wechaty
与 Fork 源项目一致
Fork自
wechaty / wechaty
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
W
wechaty
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3b616560
编写于
4月 29, 2018
作者:
Huan (李卓桓)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix finis to be able to let bot say goodbye when user Ctrl+C
上级
a76bdba8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
71 addition
and
29 deletion
+71
-29
examples/ding-dong-bot.ts
examples/ding-dong-bot.ts
+71
-29
未找到文件。
examples/ding-dong-bot.ts
浏览文件 @
3b616560
...
...
@@ -19,8 +19,8 @@
import
*
as
path
from
'
path
'
/* tslint:disable:variable-name */
const
QrcodeTerminal
=
require
(
'
qrcode-terminal
'
)
const
finis
=
require
(
'
finis
'
)
import
*
as
QrcodeTerminal
from
'
qrcode-terminal
'
import
finis
from
'
finis
'
/**
* Change `import { ... } from '../'`
...
...
@@ -103,13 +103,6 @@ bot
}
})
bot
.
start
()
.
catch
(
e
=>
{
log
.
error
(
'
Bot
'
,
'
start() fail: %s
'
,
e
)
bot
.
stop
()
process
.
exit
(
-
1
)
})
bot
.
on
(
'
error
'
,
async
e
=>
{
log
.
error
(
'
Bot
'
,
'
error: %s
'
,
e
)
if
(
bot
.
logonoff
())
{
...
...
@@ -118,31 +111,80 @@ bot.on('error', async e => {
// await bot.stop()
})
let
killChrome
:
NodeJS
.
SignalsListener
bot
.
start
()
.
then
(()
=>
{
const
listenerList
=
process
.
listeners
(
'
SIGINT
'
)
for
(
const
listener
of
listenerList
)
{
if
(
listener
.
name
===
'
killChrome
'
)
{
process
.
removeListener
(
'
SIGINT
'
,
listener
)
killChrome
=
listener
}
}
})
.
catch
(
e
=>
{
log
.
error
(
'
Bot
'
,
'
start() fail: %s
'
,
e
)
bot
.
stop
()
process
.
exit
(
-
1
)
})
let
quiting
=
false
finis
(
async
(
code
,
signal
)
=>
{
finis
((
code
,
signal
)
=>
{
log
.
info
(
'
Bot
'
,
'
finis(%s, %s)
'
,
code
,
signal
)
if
(
!
bot
.
logonoff
())
{
log
.
info
(
'
Bot
'
,
'
finis() bot had been already stopped
'
)
doExit
(
code
)
}
if
(
quiting
)
{
log
.
warn
(
'
Bot
'
,
'
finis(
%s, %s) called when quiting... just wait...
'
,
code
,
signal
)
log
.
warn
(
'
Bot
'
,
'
finis(
) already quiting... return and wait...
'
)
return
}
quiting
=
true
log
.
info
(
'
Bot
'
,
'
finis(%s, %s)
'
,
code
,
signal
)
let
done
=
false
// let checkNum = 0
const
exitMsg
=
`Wechaty will exit
${
code
}
because of
${
signal
}
`
if
(
bot
.
logonoff
())
{
log
.
info
(
'
Bot
'
,
'
finis() stoping bot
'
)
await
bot
.
say
(
exitMsg
).
catch
(
console
.
error
)
}
else
{
log
.
info
(
'
Bot
'
,
'
finis() bot had been already stopped
'
)
}
setTimeout
(
async
()
=>
{
log
.
info
(
'
Bot
'
,
'
finis() setTimeout() going to exit with %d
'
,
code
)
try
{
if
(
bot
.
logonoff
())
{
await
bot
.
stop
()
}
}
catch
(
e
)
{
log
.
error
(
'
Bot
'
,
'
finis() setTimeout() exception: %s
'
,
e
)
}
finally
{
process
.
exit
(
code
)
log
.
info
(
'
Bot
'
,
'
finis() broadcast quiting message for bot
'
)
bot
.
say
(
exitMsg
)
// .then(() => bot.stop())
.
catch
(
e
=>
log
.
error
(
'
Bot
'
,
'
finis() catch rejection: %s
'
,
e
))
.
then
(()
=>
done
=
true
)
setImmediate
(
checkForExit
)
function
checkForExit
()
{
// if (checkNum++ % 100 === 0) {
log
.
info
(
'
Bot
'
,
'
finis() checkForExit() checking done: %s
'
,
done
)
// }
if
(
done
)
{
log
.
info
(
'
Bot
'
,
'
finis() checkForExit() done!
'
)
setTimeout
(()
=>
doExit
(
code
),
1000
)
// delay 1 second
return
}
},
3
*
1000
)
// death loop to wait for `done`
// process.nextTick(checkForExit)
// setImmediate(checkForExit)
setTimeout
(
checkForExit
,
100
)
}
})
function
doExit
(
code
:
number
):
void
{
log
.
info
(
'
Bot
'
,
'
doExit(%d)
'
,
code
)
if
(
killChrome
)
{
killChrome
(
'
SIGINT
'
)
}
process
.
exit
(
code
)
}
// process.on('SIGINT', function() {
// console.log('Nice SIGINT-handler')
// const listeners = process.listeners('SIGINT')
// for (let i = 0; i < listeners.length; i++) {
// console.log(listeners[i].toString())
// }
// })
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录