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 05:03:34 +0000
Browse Files
Options
Browse Files
Download
Plain Diff
Commit
a82c1eb8e4e98f8f32efcce8be474ef1adacd7bf
a82c1eb8
2 parents
622d2e8c
ace8f564
Merge branch 'whale_alert'
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
288 additions
and
0 deletions
app_chatbot.js
app_whale.js
app_chatbot.js
0 → 100644
View file @
a82c1eb
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
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'
}};
const
KR_TIME_DIFF
=
9
*
60
*
60
*
1000
;
var
TimeNow
=
parseInt
((
new
Date
()).
getTime
()
/
1000
)
var
uts2time
=
new
Date
()
console
.
log
(
TimeNow
)
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
)
})
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
+
KR_TIME_DIFF
)
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'
,
'text'
:
str
}
ret
.
push
(
o
)
}
else
{
//console.log(str)
}
}
return
ret
;
}
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
,
1000000
,
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
)
})
},
5000
);
\ No newline at end of file
app_whale.js
0 → 100644
View file @
a82c1eb
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'
);
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'
}};
const
KR_TIME_DIFF
=
9
*
60
*
60
*
1000
;
var
TimeNow
=
parseInt
((
new
Date
()).
getTime
()
/
1000
)
var
uts2time
=
new
Date
()
var
PushTimeId
;
console
.
log
(
TimeNow
)
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;
//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
+
KR_TIME_DIFF
)
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'
,
'text'
:
str
}
ret
.
push
(
o
)
}
else
{
//console.log(str)
}
}
return
ret
;
}
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'
){
}
else
{
cursor
=
json
.
cursor
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
)
})
},
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