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-08 02:40:54 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1a3e726e240c3bcf836c33c2c926b9ef27cf0d3d
1a3e726e
1 parent
1d60f2dd
고래알람 설정 해제 기능 추가
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
127 additions
and
24 deletions
app.js
app.js
View file @
1a3e726
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
=
'ePTcnuOEn0TvohbtMRnbZRo0YqKVUOyjkkZ/jE6qh5VC5dajFgFBuWY+MAzdY8VKybwB34iz2AbFRtM0G9fL0+Xo4U+Lz7uBNpCo5m//COlWZdQsx1Ywmh61NopAomnNjWT41rNV1YyvI9aeX5CKxgdB04t89/1O/w1cDnyilFU='
const
USER_ID
=
'U2988a9f8583a616c1285db2224662211'
const
TARGET_URL_reply
=
'https://api.line.me/v2/bot/message/reply'
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
HTTPS
=
require
(
'https'
);
const
domain
=
"2018102193.oss2021.tk"
const
sslport
=
23023
;
const
bodyParser
=
require
(
'body-parser'
);
const
express
=
require
(
'express'
);
const
app
=
express
();
const
fetch
=
require
(
'node-fetch'
);
...
...
@@ -7,20 +22,47 @@ var cursor = ''
url2
=
'https://api.whale-alert.io/v1/transactions?api_key='
+
api_key
+
'&cursor='
+
cursor
;
const
options
=
{
method
:
'GET'
,
headers
:
{
Accept
:
'application/json'
}};
//Initialize cursor
const
KR_TIME_DIFF
=
9
*
60
*
60
*
1000
;
var
TimeNow
=
parseInt
((
new
Date
()).
getTime
()
/
1000
)
var
uts2time
=
new
Date
()
var
PushTimeId
;
console
.
log
(
TimeNow
)
fetch
(
url2
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
console
.
log
(
json
)
cursor
=
json
.
cursor
})
.
catch
((
err
)
=>
{
console
.
log
(
'error : inital_fetch:'
+
err
)
})
app
.
use
(
bodyParser
.
json
());
app
.
post
(
'/hook'
,
function
(
req
,
res
)
{
var
eventObj
=
req
.
body
.
events
[
0
];
var
source
=
eventObj
.
source
;
var
message
=
eventObj
.
message
;
// request log
console
.
log
(
'======================'
,
new
Date
()
,
'======================'
);
console
.
log
(
'[request]'
,
req
.
body
);
console
.
log
(
'[request source] '
,
source
);
console
.
log
(
'[request message]'
,
message
);
// if(message.text === '김프'){
// command = '김프';
// }
// else if (message.text === '거래량비율')
// volumePumpingRatioThreeMinutePerWeek(eventObj.replyToken, message.text);
// else{
// if(command === '김프'){
// kimp(eventObj.replyToken, message.text);
// }
// }
//
if
(
message
.
text
==
'고래알람'
){
PushTimeId
=
SetWhaleAlert
()
}
else
if
(
message
.
text
==
'고래알람해제'
){
clearTimeout
(
PushTimeId
)
}
res
.
sendStatus
(
200
);
});
function
chk_param
(
data
,
query_limit
,
callback
){
//query_limit (non_int) => return 0;
...
...
@@ -30,16 +72,19 @@ function chk_param(data, query_limit, callback){
else
{
return
callback
(
data
,
query_limit
)}
}
function
data_collector
(
data
,
limit
){
var
ret
=
''
;
var
ret
=
new
Array
()
;
var
str
=
''
;
ret
+=
'# of Transactions : '
+
data
.
count
+
'\n'
//
ret += '# of Transactions : ' + data.count + '\n'
for
(
var
i
=
0
;
i
<
data
.
count
;
i
++
){
uts2time
.
setTime
(
data
.
transactions
[
i
].
timestamp
*
1000
)
str
=
'#'
+
(
i
+
1
)
+
' \tTime: '
+
uts2time
.
toLocaleString
()
+
'\tChainName: '
+
data
.
transactions
[
i
].
blockchain
+
'\t
Amount: '
+
data
.
transactions
[
i
].
amount
+
' USD'
uts2time
.
setTime
(
data
.
transactions
[
i
].
timestamp
*
1000
+
KR_TIME_DIFF
)
str
=
/*'#' + (i+1)+*/
'Time: '
+
uts2time
.
toLocaleString
()
+
'\nChainName: '
+
data
.
transactions
[
i
].
blockchain
+
'\n
Amount: '
+
data
.
transactions
[
i
].
amount
+
' USD'
if
(
data
.
transactions
[
i
].
amount
>
limit
){
//console.log(str)
ret
+=
'</br>'
+
str
;
// ret += '\n\n' + str;
o
=
{
'type'
:
'text'
,
'text'
:
str
}
ret
.
push
(
o
)
}
else
{
//console.log(str)
...
...
@@ -47,24 +92,82 @@ function data_collector(data, limit){
}
return
ret
;
}
app
.
get
(
'/whale'
,
function
(
req
,
res
)
{
console
.
log
(
'cursor'
,
cursor
)
fu
=
fetch
(
url2
+
cursor
,
options
);
fu
.
then
(
res
=>
res
.
json
())
function
SetWhaleAlert
(){
fetch
(
url2
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
console
.
log
(
json
)
fetch
(
url2
+
json
.
cursor
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
console
.
log
(
json
)
fetch
(
url2
+
json
.
cursor
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
console
.
log
(
json
)
if
(
json
.
cursor
!=
undefined
){
cursor
=
json
.
cursor
}
})
.
catch
((
err
)
=>
{
console
.
log
(
'error : inital_fetch:'
+
err
)
})
})
.
catch
((
err
)
=>
{
console
.
log
(
'error : inital_fetch:'
+
err
)
})
})
.
catch
((
err
)
=>
{
console
.
log
(
'error : inital_fetch:'
+
err
)
})
return
setInterval
(()
=>
{
fetch
(
url2
+
cursor
,
options
)
.
then
(
res
=>
res
.
json
())
.
then
(
json
=>
{
//API usage limit
console
.
log
(
json
)
if
(
json
.
result
==
'error'
){
res
.
send
(
"Please try later"
)
}
else
{
cursor
=
json
.
cursor
res
.
send
(
chk_param
(
json
,
req
.
query
.
limit
,
data_collector
))
var
msg2user
=
chk_param
(
json
,
5000000
,
data_collector
)
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
]]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
,
error
)
});
}
}
}
})
.
catch
(
err
=>
{
console
.
error
(
'error: var:fu:'
+
err
)
res
.
send
(
'ERROR'
)
})
})
var
server
=
app
.
listen
(
23023
)
\ No newline at end of file
},
5000
);
}
try
{
const
option
=
{
ca
:
fs
.
readFileSync
(
'/etc/letsencrypt/live/'
+
domain
+
'/fullchain.pem'
),
key
:
fs
.
readFileSync
(
path
.
resolve
(
process
.
cwd
(),
'/etc/letsencrypt/live/'
+
domain
+
'/privkey.pem'
),
'utf8'
).
toString
(),
cert
:
fs
.
readFileSync
(
path
.
resolve
(
process
.
cwd
(),
'/etc/letsencrypt/live/'
+
domain
+
'/cert.pem'
),
'utf8'
).
toString
(),
};
HTTPS
.
createServer
(
option
,
app
).
listen
(
sslport
,
()
=>
{
console
.
log
(
`[HTTPS] Server is started on port
${
sslport
}
`
);
});
}
catch
(
error
)
{
console
.
log
(
'[HTTPS] HTTPS 오류가 발생하였습니다. HTTPS 서버는 실행되지 않습니다.'
);
console
.
log
(
error
);
}
...
...
Please
register
or
login
to post a comment