Toggle navigation
Toggle navigation
This project
Loading...
Sign in
방승일
/
Stock_Alert_Chatbot
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
EC2 Default User
2022-06-08 16:31:31 +0000
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5809cff097a103c4683aa7a21c44ad7ea794a3ba
5809cff0
1 parent
ffb570fe
Delete : No longer needed .js
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
295 deletions
push.js
reply.js
push.js
deleted
100644 → 0
View file @
ffb570f
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
=
'채널 토큰으로 교체'
const
USER_ID
=
'사용자의 ID, 메세지 수신 시에 확인할 수 있음'
var
client_id
=
'naver client_id'
;
var
client_secret
=
'naver client_secret'
;
var
headline_max
=
''
;
var
headline_min
=
''
;
// Broadcast -> 채널 전체 유저에게
const
PushFunc_max
=
function
()
{
var
api_url
=
'https://openapi.naver.com/v1/search/news?query='
+
encodeURI
(
'상한가 주식'
);
// json 결과
var
options
=
{
url
:
api_url
,
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
request
.
get
(
options
,
function
(
error
,
response
,
body
)
{
const
obj
=
JSON
.
parse
(
body
);
const
str
=
JSON
.
stringify
(
obj
.
items
[
0
]);
const
obj2
=
JSON
.
parse
(
str
);
if
(
headline_max
==
''
||
headline_max
!=
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
))
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
headline_max
=
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
request
.
post
(
{
url
:
BROAD_TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
"[상한가 소식]"
},
{
"type"
:
"text"
,
"text"
:
"<<<헤드라인>>>\n"
+
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
},
{
"type"
:
"text"
,
"text"
:
"<<<주요문단>>>\n"
+
JSON
.
stringify
(
obj2
.
description
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
},
{
"type"
:
"text"
,
"text"
:
"뉴스 바로가기\n"
+
JSON
.
stringify
(
obj2
.
link
)
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
}
)
}
else
{
res
.
status
(
response
.
statusCode
).
end
();
console
.
log
(
'error = '
+
response
.
statusCode
);
}
}
else
{
console
.
log
(
'새로운 소식 없음_max'
)
}
});
};
const
PushFunc_min
=
function
()
{
var
api_url
=
'https://openapi.naver.com/v1/search/news?query='
+
encodeURI
(
'하한가 주식'
);
// json 결과
var
options
=
{
url
:
api_url
,
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
request
.
get
(
options
,
function
(
error
,
response
,
body
)
{
const
obj
=
JSON
.
parse
(
body
);
const
str
=
JSON
.
stringify
(
obj
.
items
[
0
]);
const
obj2
=
JSON
.
parse
(
str
);
if
(
headline_min
==
''
||
headline_min
!=
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
))
{
if
(
!
error
&&
response
.
statusCode
==
200
)
{
headline_min
=
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
request
.
post
(
{
url
:
BROAD_TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
"[하한가 소식]"
},
{
"type"
:
"text"
,
"text"
:
"<<<헤드라인>>>\n"
+
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
},
{
"type"
:
"text"
,
"text"
:
"<<<주요문단>>>\n"
+
JSON
.
stringify
(
obj2
.
description
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
},
{
"type"
:
"text"
,
"text"
:
"뉴스 바로가기\n"
+
JSON
.
stringify
(
obj2
.
link
)
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
}
)
}
else
{
res
.
status
(
response
.
statusCode
).
end
();
console
.
log
(
'error = '
+
response
.
statusCode
);
}
}
else
{
console
.
log
(
'새로운 소식 없음_min'
)
}
});
};
const
intervalId_max
=
setInterval
(
PushFunc_max
,
60000
);
const
intervalId_min
=
setInterval
(
PushFunc_min
,
60000
);
\ No newline at end of file
reply.js
deleted
100644 → 0
View file @
ffb570f
var
express
=
require
(
'express'
);
const
request
=
require
(
'request'
);
const
TARGET_URL
=
'https://api.line.me/v2/bot/message/reply'
const
TOKEN
=
'채널 토큰으로 변경'
const
fs
=
require
(
'fs'
);
const
path
=
require
(
'path'
);
const
HTTPS
=
require
(
'https'
);
const
domain
=
"도메인 변경"
const
sslport
=
23023
;
var
client_id
=
'YOUR_CLIENT_ID'
;
var
client_secret
=
'YOUR_CLIENT_SECRET'
;
var
newsOn
=
false
;
var
newsOff
=
true
;
const
bodyParser
=
require
(
'body-parser'
);
var
app
=
express
();
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] '
,
eventObj
.
source
);
console
.
log
(
'[request message]'
,
eventObj
.
message
);
if
(
message
.
text
==
'news on'
)
{
newsOn
=
true
;
newsOff
=
false
;
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
eventObj
.
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
"[news On] 키워드를 입력 하세요."
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
else
if
(
message
.
text
==
'news off'
)
{
newsOn
=
false
;
newsOff
=
true
;
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
eventObj
.
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
"[news Off] 뉴스를 종료합니다."
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
if
(
newsOn
&
message
.
text
!=
'help'
&
message
.
text
!=
'news on'
)
{
var
api_url
=
'https://openapi.naver.com/v1/search/news?query='
+
encodeURI
(
message
.
text
);
// json 결과
var
options
=
{
url
:
api_url
,
headers
:
{
'X-Naver-Client-Id'
:
client_id
,
'X-Naver-Client-Secret'
:
client_secret
}
};
request
.
get
(
options
,
function
(
error
,
response
,
body
)
{
const
obj
=
JSON
.
parse
(
body
);
const
str
=
JSON
.
stringify
(
obj
.
items
[
0
]);
const
obj2
=
JSON
.
parse
(
str
);
if
(
!
error
&&
response
.
statusCode
==
200
)
{
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
eventObj
.
replyToken
,
"messages"
:
[
{
"type"
:
"text"
,
"text"
:
"<<<헤드라인>>>\n"
+
JSON
.
stringify
(
obj2
.
title
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
},
{
"type"
:
"text"
,
"text"
:
"<<<주요문단>>>\n"
+
JSON
.
stringify
(
obj2
.
description
).
replace
(
/<
[^
>
]
*>
?
/g
,
''
)
},
{
"type"
:
"text"
,
"text"
:
"뉴스 바로가기\n"
+
JSON
.
stringify
(
obj2
.
link
)
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
}
)
}
else
{
res
.
status
(
response
.
statusCode
).
end
();
console
.
log
(
'error = '
+
response
.
statusCode
);
}
});
}
if
(
message
.
text
==
'help'
)
{
request
.
post
(
{
url
:
TARGET_URL
,
headers
:
{
'Authorization'
:
`Bearer
${
TOKEN
}
`
},
json
:
{
"replyToken"
:
eventObj
.
replyToken
,
"messages"
:[
{
"type"
:
"text"
,
"text"
:
"*****************\
\n반갑습니다. 주식 news 알리미 입니다.\
\n1. 뉴스 검색 기능 활성화\
\n\'news on\' 입력\
\n2. 뉴스 검색 기능 비활성화\
\n\'news off\' 입력\
\n*****************"
}
]
}
},(
error
,
response
,
body
)
=>
{
console
.
log
(
body
)
});
}
res
.
sendStatus
(
200
);
});
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