Showing
5 changed files
with
85 additions
and
55 deletions
... | @@ -48,45 +48,23 @@ exports.detectchat = (message, client, io, target) => { | ... | @@ -48,45 +48,23 @@ exports.detectchat = (message, client, io, target) => { |
48 | }); | 48 | }); |
49 | } | 49 | } |
50 | 50 | ||
51 | - | 51 | +exports.trans = (message, client,io, target) => { |
52 | -// exports.trans = (message, lang, io, room) => { | 52 | + request.post( |
53 | -// request.post( | 53 | + { |
54 | -// { | 54 | + url: PAPAGO_URL, |
55 | -// url: PAPAGO_URL, | 55 | + headers: { |
56 | -// headers: { | 56 | + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', |
57 | -// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | 57 | + 'X-Naver-Client-Id': `${PAPAGO_ID}`, |
58 | -// 'X-Naver-Client-Id': `${PAPAGO_ID}`, | 58 | + 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` |
59 | -// 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | 59 | + }, |
60 | -// }, | 60 | + body: `source=ko&target=en&text=` + message, |
61 | -// body: `source=${lang}&target=ko&text=` + message, | 61 | + json:true |
62 | -// json:true | 62 | + },async (error, response, body) => { |
63 | -// },(error, response, body) => { | 63 | + if(!error && response.statusCode == 200) { |
64 | -// if(!error && response.statusCode == 200) { | 64 | + var Translated = await body.message.result.translatedText; |
65 | -// var Translated = body.message.result.translatedText; | 65 | + client.say(target, "(Trans) "+Translated); |
66 | -// io.to(room).emit('chat message', "trans", Translated); | 66 | + io.to(target.replace('#','')).emit('chat message', "Trans", Translated); |
67 | -// } | 67 | + } |
68 | -// }); | 68 | + }); |
69 | -// } | 69 | +} |
70 | - | ||
71 | - | ||
72 | -// exports.detect = (message,io,room) => { | ||
73 | -// request.post( | ||
74 | -// { | ||
75 | -// url: dPAPAGO_URL, | ||
76 | -// headers: { | ||
77 | -// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
78 | -// 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
79 | -// 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
80 | -// }, | ||
81 | -// body: `query=` + message, | ||
82 | -// json:true | ||
83 | -// },(error, response, body) => { | ||
84 | -// if(!error && response.statusCode == 200) { | ||
85 | -// var lang = body.langCode; | ||
86 | -// if(lang != 'ko'){ | ||
87 | -// this.trans(message,lang,io,room) | ||
88 | -// } | ||
89 | -// } | ||
90 | -// }); | ||
91 | -// } | ||
92 | 70 | ... | ... |
... | @@ -160,6 +160,14 @@ | ... | @@ -160,6 +160,14 @@ |
160 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", | 160 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", |
161 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" | 161 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" |
162 | }, | 162 | }, |
163 | + "axios": { | ||
164 | + "version": "0.21.0", | ||
165 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz", | ||
166 | + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==", | ||
167 | + "requires": { | ||
168 | + "follow-redirects": "^1.10.0" | ||
169 | + } | ||
170 | + }, | ||
163 | "balanced-match": { | 171 | "balanced-match": { |
164 | "version": "1.0.0", | 172 | "version": "1.0.0", |
165 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | 173 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
... | @@ -488,6 +496,11 @@ | ... | @@ -488,6 +496,11 @@ |
488 | "unpipe": "~1.0.0" | 496 | "unpipe": "~1.0.0" |
489 | } | 497 | } |
490 | }, | 498 | }, |
499 | + "follow-redirects": { | ||
500 | + "version": "1.13.0", | ||
501 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", | ||
502 | + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" | ||
503 | + }, | ||
491 | "forever-agent": { | 504 | "forever-agent": { |
492 | "version": "0.6.1", | 505 | "version": "0.6.1", |
493 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | 506 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", | ... | ... |
... | @@ -9,6 +9,7 @@ | ... | @@ -9,6 +9,7 @@ |
9 | "author": "Daeyeonkim97", | 9 | "author": "Daeyeonkim97", |
10 | "license": "ISC", | 10 | "license": "ISC", |
11 | "dependencies": { | 11 | "dependencies": { |
12 | + "axios": "^0.21.0", | ||
12 | "dotenv": "^8.2.0", | 13 | "dotenv": "^8.2.0", |
13 | "ejs": "^3.1.5", | 14 | "ejs": "^3.1.5", |
14 | "express": "^4.17.1", | 15 | "express": "^4.17.1", | ... | ... |
... | @@ -13,12 +13,13 @@ var opts = { | ... | @@ -13,12 +13,13 @@ var opts = { |
13 | username: process.env.BOT_USERNAME, | 13 | username: process.env.BOT_USERNAME, |
14 | password: process.env.OAUTH_TOKEN | 14 | password: process.env.OAUTH_TOKEN |
15 | }, | 15 | }, |
16 | - channels: ["nnonuu"] | 16 | + channels: ["tmwardo"] |
17 | }; | 17 | }; |
18 | // Create a client with our options | 18 | // Create a client with our options |
19 | var client = new tmi.client(opts); //twitch chatbot client | 19 | var client = new tmi.client(opts); //twitch chatbot client |
20 | 20 | ||
21 | var bodyParser = require('body-parser'); | 21 | var bodyParser = require('body-parser'); |
22 | +const { default: Axios } = require('axios'); | ||
22 | app.use(bodyParser.urlencoded({ extended: false })); | 23 | app.use(bodyParser.urlencoded({ extended: false })); |
23 | app.use(bodyParser.json()); | 24 | app.use(bodyParser.json()); |
24 | app.set('view engine', 'ejs'); | 25 | app.set('view engine', 'ejs'); |
... | @@ -33,22 +34,59 @@ app.get('/', (req, res) => { | ... | @@ -33,22 +34,59 @@ app.get('/', (req, res) => { |
33 | }); | 34 | }); |
34 | 35 | ||
35 | app.get('/list',(req,res) => { | 36 | app.get('/list',(req,res) => { |
36 | - res.send(client.channels); | 37 | + var result = [] |
38 | + for (var i = 0; i<client.channels.length; i++){ | ||
39 | + result.push(client.channels[i].slice(1)) | ||
40 | + } | ||
41 | + res.send(result) | ||
42 | +}); | ||
43 | + | ||
44 | +app.post('/jointest',async (req,res)=>{ | ||
45 | + // requests.post(`https://id.twitch.tv/oauth2/token?client_id=<클라이언트 ID>&client_secret=${process.env.TOKEN}&grant_type=client_credentials`).json() | ||
46 | + JoinChannel(req.body.streamer); | ||
47 | + res.send(req.body.streamer) | ||
48 | +}); | ||
49 | + | ||
50 | +////////////////////////oauth//////////////////////// | ||
51 | +const axios = require('axios') | ||
52 | +app.get('/oauth',(req,res)=>{ | ||
53 | + let codeAddr = `https://id.twitch.tv/oauth2/authorize?response_type=code&approval_prompt=auto&redirect_uri=${process.env.HOST_URI+':'+process.env.SOCKET_PORT}/join&client_id=${process.env.TWITCH_CLIENT}` | ||
54 | + | ||
55 | + res.redirect(codeAddr) | ||
56 | +}); | ||
57 | +app.get('/join', async (req,res)=>{ | ||
58 | + let code = req.query.code | ||
59 | + let reqAddr = `https://id.twitch.tv/oauth2/token?client_id=${process.env.TWITCH_CLIENT}&client_secret=${process.env.TWITCH_SECRET}&code=${code}&grant_type=authorization_code&redirect_uri=${process.env.HOST_URI+':'+process.env.SOCKET_PORT}/test` | ||
60 | + axios.post(reqAddr).then(resp1=>{ | ||
61 | + axios.get('https://id.twitch.tv/oauth2/validate', | ||
62 | + { | ||
63 | + headers:{ | ||
64 | + Authorization : "Bearer "+ resp1.data.access_token | ||
65 | + } | ||
66 | + } | ||
67 | + ).then(resp2=>{ | ||
68 | + JoinChannel(resp2.data.login) | ||
69 | + res.send("Joinned "+resp2.data.login) | ||
70 | + }) | ||
71 | + }) | ||
72 | + | ||
73 | +}) | ||
74 | + | ||
75 | +app.get('/test',(req,res)=>{ | ||
76 | + res.send("") | ||
37 | }) | 77 | }) |
78 | +////////////////////////oauth//////////////////////// | ||
38 | 79 | ||
39 | -app.post('/add',async (req,res)=>{ | ||
40 | 80 | ||
41 | - /// 봇을 새로운 채널에 추가 | 81 | +async function JoinChannel(streamer){ |
42 | - await client.action(req.body.streamer,'Khuwitchbot이 입장'); | 82 | + await client.action(streamer,'KhuwitchBot 두두등장'); |
43 | - await opts.channels.push('#'+req.body.streamer); | 83 | + await opts.channels.push('#'+streamer); |
44 | await delete client; | 84 | await delete client; |
45 | client = await new tmi.client(opts); | 85 | client = await new tmi.client(opts); |
46 | client.on('message', onMessageHandler); | 86 | client.on('message', onMessageHandler); |
47 | client.on('connected', onConnectedHandler); | 87 | client.on('connected', onConnectedHandler); |
48 | client.connect(); | 88 | client.connect(); |
49 | - res.send(req.body.streamer) | 89 | +} |
50 | - /// | ||
51 | -}) | ||
52 | 90 | ||
53 | 91 | ||
54 | io.on('connection', (socket) => { | 92 | io.on('connection', (socket) => { |
... | @@ -91,15 +129,15 @@ client.on('connected', onConnectedHandler); | ... | @@ -91,15 +129,15 @@ client.on('connected', onConnectedHandler); |
91 | 129 | ||
92 | // Connect to Twitch: | 130 | // Connect to Twitch: |
93 | client.connect(); | 131 | client.connect(); |
94 | -console.log(client); | ||
95 | 132 | ||
96 | // Called every time a message comes in | 133 | // Called every time a message comes in |
97 | function onMessageHandler (target, context, msg, self) { | 134 | function onMessageHandler (target, context, msg, self) { |
98 | if (self) { return; } // Ignore messages from the bot | 135 | if (self) { return; } // Ignore messages from the bot |
99 | - console.log("chatdetected") | ||
100 | - | ||
101 | if (msg.startsWith('!')){ | 136 | if (msg.startsWith('!')){ |
102 | - return; | 137 | + if(msg.startsWith('!번역')){ |
138 | + io.to(target.replace('#','')).emit('chat message',context["display-name"],msg.slice(4)) | ||
139 | + papago.trans(msg.slice(4), client, io, target) | ||
140 | + } | ||
103 | } | 141 | } |
104 | else if(context["display-name"] == "빵_떡" | 142 | else if(context["display-name"] == "빵_떡" |
105 | || context["display-name"]=="Nightbot" | 143 | || context["display-name"]=="Nightbot" | ... | ... |
-
Please register or login to post a comment