Toggle navigation
Toggle navigation
This project
Loading...
Sign in
정홍주
/
Coin-trade-assistant
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
배지승
2021-06-07 01:51:05 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
2d229817e6bbd984c04214ced49bdcbbea184e60
2d229817
1 parent
c4e923e1
chatbot 에서 일정 시간간격으로 거래 정보를 push하는 기능 추가
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
94 additions
and
0 deletions
app_chatbot.js
app_chatbot.js
0 → 100644
View file @
2d22981
const
request
=
require
(
'request'
);
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/push'
const
MULTI_TARGET_URL
=
'https://api.line.me/v2/bot/message/multicast'
const
BROAD_TARGET_URL
=
'https://api.line.me/v2/bot/message/broadcast'
const
TOKEN
=
''
//Token, userid 입력후 사용
const
USER_ID
=
''
const
express
=
require
(
'express'
);
const
app
=
express
();
const
fetch
=
require
(
'node-fetch'
);
const
fs_apikey
=
require
(
'fs'
);
const
api_key
=
fs_apikey
.
readFileSync
(
'apikey'
,
'ascii'
)
var
cursor
=
''
url2
=
'https://api.whale-alert.io/v1/transactions?api_key='
+
api_key
+
'&cursor='
+
cursor
;
const
options
=
{
method
:
'GET'
,
headers
:
{
Accept
:
'application/json'
}};
var
TimeNow
=
parseInt
((
new
Date
()).
getTime
()
/
1000
)
var
uts2time
=
new
Date
()
console
.
log
(
TimeNow
)
fetch
(
url2
,
options
)
//커서값(갱신)을 얻기 위한 fetch
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
console
.
log
(
json
)
cursor
=
json
.
cursor
})
.
catch
((
err
)
=>
{
console
.
log
(
'error : inital_fetch:'
+
err
)
})
function
chk_param
(
data
,
query_limit
,
callback
){
//query_limit (non_int) => return 0;
//query_limit (int) => return query_limit;
query_limit
=
parseInt
(
query_limit
)
if
(
isNaN
(
query_limit
)){
return
callback
(
data
,
0
)}
else
{
return
callback
(
data
,
query_limit
)}
}
function
data_collector
(
data
,
limit
){
var
ret
=
new
Array
();
var
str
=
''
;
//ret += '# of Transactions : ' + data.count + '\n'
for
(
var
i
=
0
;
i
<
data
.
count
;
i
++
){
uts2time
.
setTime
(
data
.
transactions
[
i
].
timestamp
*
1000
)
str
=
/*'#' + (i+1)+*/
'Time: '
+
uts2time
.
toLocaleString
()
+
'\nChainName: '
+
data
.
transactions
[
i
].
blockchain
+
'\nAmount: '
+
data
.
transactions
[
i
].
amount
+
' USD'
if
(
data
.
transactions
[
i
].
amount
>
limit
){
//console.log(str)
// ret += '\n\n' + str;
o
=
{
'type'
:
'text'
,
//message 형태에 맞춰 저장
'text'
:
str
}
ret
.
push
(
o
)
}
else
{
//console.log(str)
}
}
return
ret
;
}
//5초 간격으로 fetch후 메시지 전송
setInterval
(()
=>
{
fetch
(
url2
+
cursor
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
//API usage limit
console
.
log
(
json
)
if
(
json
.
result
==
'error'
){
}
else
{
cursor
=
json
.
cursor
var
msg2user
=
chk_param
(
json
,
0
,
data_collector
)
//fetch후 message Object 배열 리턴
console
.
log
(
'msg'
,
msg2user
)
if
(
msg2user
.
length
){
var
i
=
0
;
for
(
i
;
i
<
msg2user
.
length
;
i
++
){
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"to"
:
`
${
USER_ID
}
`
,
"messages"
:[
msg2user
[
i
]]
//5개 초과하면 err나서 하나씩 넣음
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
,
error
)
});
}
}
}
})
.
catch
(
err
=>
{
console
.
error
(
'error: var:fu:'
+
err
)
})
},
5000
);
\ No newline at end of file
Please
register
or
login
to post a comment