add Twitch IRC server and combime with Khuwitch SocketServer (example server)
Showing
5 changed files
with
108 additions
and
101 deletions
| ... | @@ -6,7 +6,8 @@ const dPAPAGO_URL = 'https://openapi.naver.com/v1/papago/detectLangs' | ... | @@ -6,7 +6,8 @@ const dPAPAGO_URL = 'https://openapi.naver.com/v1/papago/detectLangs' |
| 6 | const PAPAGO_ID = process.env.PAPAGO_ID | 6 | const PAPAGO_ID = process.env.PAPAGO_ID |
| 7 | const PAPAGO_SECRET = process.env.PAPAGO_SECRET | 7 | const PAPAGO_SECRET = process.env.PAPAGO_SECRET |
| 8 | 8 | ||
| 9 | -exports.trans = (message, lang, io, room) => { | 9 | + |
| 10 | +exports.transchat = (message, lang, client,io, target) => { | ||
| 10 | request.post( | 11 | request.post( |
| 11 | { | 12 | { |
| 12 | url: PAPAGO_URL, | 13 | url: PAPAGO_URL, |
| ... | @@ -17,16 +18,16 @@ exports.trans = (message, lang, io, room) => { | ... | @@ -17,16 +18,16 @@ exports.trans = (message, lang, io, room) => { |
| 17 | }, | 18 | }, |
| 18 | body: `source=${lang}&target=ko&text=` + message, | 19 | body: `source=${lang}&target=ko&text=` + message, |
| 19 | json:true | 20 | json:true |
| 20 | - },(error, response, body) => { | 21 | + },async (error, response, body) => { |
| 21 | if(!error && response.statusCode == 200) { | 22 | if(!error && response.statusCode == 200) { |
| 22 | - var Translated = body.message.result.translatedText; | 23 | + var Translated = await body.message.result.translatedText; |
| 23 | - io.to(room).emit('chat message', "trans", Translated); | 24 | + client.say(target, "(번역) "+Translated); |
| 25 | + io.to(target.replace('#','')).emit('chat message', "번역", Translated); | ||
| 24 | } | 26 | } |
| 25 | }); | 27 | }); |
| 26 | } | 28 | } |
| 27 | 29 | ||
| 28 | - | 30 | +exports.detectchat = (message, client, io, target) => { |
| 29 | -exports.detect = (message,io,room) => { | ||
| 30 | request.post( | 31 | request.post( |
| 31 | { | 32 | { |
| 32 | url: dPAPAGO_URL, | 33 | url: dPAPAGO_URL, |
| ... | @@ -41,48 +42,51 @@ exports.detect = (message,io,room) => { | ... | @@ -41,48 +42,51 @@ exports.detect = (message,io,room) => { |
| 41 | if(!error && response.statusCode == 200) { | 42 | if(!error && response.statusCode == 200) { |
| 42 | var lang = body.langCode; | 43 | var lang = body.langCode; |
| 43 | if(lang != 'ko'){ | 44 | if(lang != 'ko'){ |
| 44 | - this.trans(message,lang,io,room) | 45 | + this.transchat(message,lang,client,io,target) |
| 45 | } | 46 | } |
| 46 | } | 47 | } |
| 47 | }); | 48 | }); |
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | -exports.transchat = (message, lang, client, target) => { | ||
| 51 | - request.post( | ||
| 52 | - { | ||
| 53 | - url: PAPAGO_URL, | ||
| 54 | - headers: { | ||
| 55 | - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
| 56 | - 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
| 57 | - 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
| 58 | - }, | ||
| 59 | - body: `source=${lang}&target=ko&text=` + message, | ||
| 60 | - json:true | ||
| 61 | - },(error, response, body) => { | ||
| 62 | - if(!error && response.statusCode == 200) { | ||
| 63 | - var Translated = body.message.result.translatedText; | ||
| 64 | - client.say(target, "(번역) ", Translated); | ||
| 65 | - } | ||
| 66 | - }); | ||
| 67 | -} | ||
| 68 | 51 | ||
| 69 | -exports.detectchat = (message, client,target) => { | ||
| 70 | - request.post( | ||
| 71 | - { | ||
| 72 | - url: dPAPAGO_URL, | ||
| 73 | - headers: { | ||
| 74 | - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
| 75 | - 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
| 76 | - 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
| 77 | - }, | ||
| 78 | - body: `query=` + message, | ||
| 79 | - json:true | ||
| 80 | - },(error, response, body) => { | ||
| 81 | - if(!error && response.statusCode == 200) { | ||
| 82 | - var lang = body.langCode; | ||
| 83 | - if(lang != 'ko'){ | ||
| 84 | - this.trans(message,lang,client,target) | ||
| 85 | - } | ||
| 86 | - } | ||
| 87 | - }); | ||
| 88 | -} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 52 | +// exports.trans = (message, lang, io, room) => { | ||
| 53 | +// request.post( | ||
| 54 | +// { | ||
| 55 | +// url: PAPAGO_URL, | ||
| 56 | +// headers: { | ||
| 57 | +// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', | ||
| 58 | +// 'X-Naver-Client-Id': `${PAPAGO_ID}`, | ||
| 59 | +// 'X-Naver-Client-Secret': `${PAPAGO_SECRET}` | ||
| 60 | +// }, | ||
| 61 | +// body: `source=${lang}&target=ko&text=` + message, | ||
| 62 | +// json:true | ||
| 63 | +// },(error, response, body) => { | ||
| 64 | +// if(!error && response.statusCode == 200) { | ||
| 65 | +// var Translated = body.message.result.translatedText; | ||
| 66 | +// io.to(room).emit('chat message', "trans", Translated); | ||
| 67 | +// } | ||
| 68 | +// }); | ||
| 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 | + | ... | ... |
This diff could not be displayed because it is too large.
| ... | @@ -5,24 +5,24 @@ const http = require('http').Server(app); | ... | @@ -5,24 +5,24 @@ const http = require('http').Server(app); |
| 5 | const io = require('socket.io')(http); | 5 | const io = require('socket.io')(http); |
| 6 | const papago = require('./openAPIs/papago_api'); | 6 | const papago = require('./openAPIs/papago_api'); |
| 7 | 7 | ||
| 8 | -// const tmi = require('tmi.js'); | 8 | +const tmi = require('tmi.js'); |
| 9 | -// // Define configuration options | 9 | +// Define configuration options |
| 10 | -// var opts = { | 10 | +var opts = { |
| 11 | -// identity: { | 11 | + identity: { |
| 12 | -// username: process.env.BOT_USERNAME, | 12 | + username: process.env.BOT_USERNAME, |
| 13 | -// password: process.env.OAUTH_TOKEN | 13 | + password: process.env.OAUTH_TOKEN |
| 14 | -// }, | 14 | + }, |
| 15 | -// channels: [ | 15 | + channels: [ |
| 16 | -// 'bachelorchuckchuck' | 16 | + 'nnonuu' |
| 17 | -// ] | 17 | + ] |
| 18 | -// }; | 18 | + }; |
| 19 | -// // Create a client with our options | 19 | +// Create a client with our options |
| 20 | -// const client = new tmi.client(opts); //twitch chatbot client | 20 | +const client = new tmi.client(opts); //twitch chatbot client |
| 21 | 21 | ||
| 22 | app.set('view engine', 'ejs'); | 22 | app.set('view engine', 'ejs'); |
| 23 | app.set('views', './testviews'); | 23 | app.set('views', './testviews'); |
| 24 | 24 | ||
| 25 | -let room = ['streamer1', 'streamer2']; | 25 | +let room = ['nnonuu', 'bachelorchuckchuck']; |
| 26 | // client.opts.channels; | 26 | // client.opts.channels; |
| 27 | let a = 0; | 27 | let a = 0; |
| 28 | 28 | ||
| ... | @@ -46,55 +46,57 @@ io.on('connection', (socket) => { | ... | @@ -46,55 +46,57 @@ io.on('connection', (socket) => { |
| 46 | console.log('user disconnected'); | 46 | console.log('user disconnected'); |
| 47 | }); | 47 | }); |
| 48 | 48 | ||
| 49 | - socket.on('leaveRoom', (num,name) => { | 49 | + socket.on('leaveRoom', (streamer,name) => { |
| 50 | - socket.leave(room[num], () => { | 50 | + socket.leave(streamer, () => { |
| 51 | - console.log('Someone leave a ' + room[num]); | 51 | + console.log('Someone leave a ' + streamer); |
| 52 | - io.to(room[num]).emit('leaveRoom', num ,name); | 52 | + io.to(streamer).emit('leaveRoom', streamer ,name); |
| 53 | }); | 53 | }); |
| 54 | }); | 54 | }); |
| 55 | 55 | ||
| 56 | - socket.on('joinRoom', (num,name) => { | 56 | + socket.on('joinRoom', (streamer,name) => { |
| 57 | - socket.join(room[num], () => { | 57 | + socket.join(streamer, () => { |
| 58 | - console.log('Someone join a ' + room[num]); | 58 | + console.log('Someone join a ' + streamer); |
| 59 | - io.to(room[num]).emit('joinRoom', num ,name); | 59 | + io.to(streamer).emit('joinRoom', streamer ,name); |
| 60 | + console.log(streamer,io) | ||
| 60 | }); | 61 | }); |
| 61 | }); | 62 | }); |
| 62 | 63 | ||
| 63 | - socket.on('chat message', (num, name, msg) => { | 64 | + socket.on('chat message', (streamer, name, msg) => { |
| 64 | - papago.detect(msg,io,room[num]); | 65 | + io.to(streamer).emit('chat message', name, msg); |
| 65 | - io.to(room[a]).emit('chat message', name, msg); | ||
| 66 | }); | 66 | }); |
| 67 | }); | 67 | }); |
| 68 | 68 | ||
| 69 | + | ||
| 69 | http.listen(process.env.SOCKET_PORT, () => { | 70 | http.listen(process.env.SOCKET_PORT, () => { |
| 70 | console.log(`Connect at ${process.env.SOCKET_PORT}`); | 71 | console.log(`Connect at ${process.env.SOCKET_PORT}`); |
| 71 | }); | 72 | }); |
| 72 | 73 | ||
| 74 | + | ||
| 73 | /////////////////////Twitch Bot////////////////////////// | 75 | /////////////////////Twitch Bot////////////////////////// |
| 74 | 76 | ||
| 75 | 77 | ||
| 76 | -// // Register our event handlers (defined below) | 78 | +// Register our event handlers (defined below) |
| 77 | -// client.on('message', onMessageHandler); | 79 | +client.on('message', onMessageHandler); |
| 78 | -// client.on('connected', onConnectedHandler); | 80 | +client.on('connected', onConnectedHandler); |
| 79 | 81 | ||
| 80 | -// // Connect to Twitch: | 82 | +// Connect to Twitch: |
| 81 | -// client.connect(); | 83 | +client.connect(); |
| 82 | 84 | ||
| 83 | -// // Called every time a message comes in | 85 | +// Called every time a message comes in |
| 84 | -// function onMessageHandler (target, context, msg, self) { | 86 | +function onMessageHandler (target, context, msg, self) { |
| 85 | -// if (self) { return; } // Ignore messages from the bot | 87 | + if (self) { return; } // Ignore messages from the bot |
| 86 | 88 | ||
| 87 | -// io.to(target).emit('chatmessage',) | 89 | + io.to(target.replace('#','')).emit('chat message',context["display-name"],msg) |
| 88 | -// papago.detectchat(msg, client, target); | 90 | + papago.detectchat(msg, client, io, target); |
| 89 | 91 | ||
| 90 | 92 | ||
| 91 | -// if(msg == '척척학사'){ | 93 | + if(msg == '척척학사2'){ |
| 92 | -// client.say(target, `안녕하세요 척척학사의 방송입니다.`); | 94 | + client.say(target, `안녕하세요 척척학사의 방송입니다.`); |
| 93 | -// } | 95 | + } |
| 94 | 96 | ||
| 95 | -// } | 97 | +} |
| 96 | 98 | ||
| 97 | -// // Called every time the bot connects to Twitch chat | 99 | +// Called every time the bot connects to Twitch chat |
| 98 | -// function onConnectedHandler (addr, port) { | 100 | +function onConnectedHandler (addr, port) { |
| 99 | -// console.log(`*KwitchBot Connected to ${addr}:${port}`); | 101 | + console.log(`*KwitchBot Connected to ${addr}:${port}`); |
| 100 | -// } | 102 | +} | ... | ... |
| ... | @@ -50,8 +50,8 @@ | ... | @@ -50,8 +50,8 @@ |
| 50 | </head> | 50 | </head> |
| 51 | <body> | 51 | <body> |
| 52 | <select> | 52 | <select> |
| 53 | - <option value="streamer1">streamer1</option> | 53 | + <option value="nnonuu">nnonuu</option> |
| 54 | - <option value="streamer2">streamer2</option> | 54 | + <option value="bachelorchuckchuck">bachelorchuckchuck</option> |
| 55 | </select> | 55 | </select> |
| 56 | <ul id="messages"></ul> | 56 | <ul id="messages"></ul> |
| 57 | <form action=""> | 57 | <form action=""> |
| ... | @@ -64,21 +64,22 @@ | ... | @@ -64,21 +64,22 @@ |
| 64 | $(() => { | 64 | $(() => { |
| 65 | const name = prompt('What your name'); | 65 | const name = prompt('What your name'); |
| 66 | const socket = io(); | 66 | const socket = io(); |
| 67 | - let room = ['streamer1', 'streamer2']; | 67 | + let room = ['nnonuu', 'bachelorchuckchuck']; |
| 68 | + var streamer = room[0] | ||
| 68 | let num = 0; | 69 | let num = 0; |
| 69 | - | 70 | + socket.emit('joinRoom', streamer, name); |
| 70 | - socket.emit('joinRoom', num, name); | ||
| 71 | 71 | ||
| 72 | $('select').change(() => { | 72 | $('select').change(() => { |
| 73 | - socket.emit('leaveRoom', num, name); | 73 | + socket.emit('leaveRoom', room[num], name); |
| 74 | num++; | 74 | num++; |
| 75 | num = num % 2; | 75 | num = num % 2; |
| 76 | - socket.emit('joinRoom', num, name); | 76 | + $('#messages').append($('<li>').text(num + room[num])); |
| 77 | + socket.emit('joinRoom', room[num], name); | ||
| 77 | }); | 78 | }); |
| 78 | 79 | ||
| 79 | 80 | ||
| 80 | $('form').submit(() => { | 81 | $('form').submit(() => { |
| 81 | - socket.emit('chat message', num, name, $('#m').val()); | 82 | + socket.emit('chat message', streamer, name, $('#m').val()); |
| 82 | $('#m').val(''); | 83 | $('#m').val(''); |
| 83 | return false; | 84 | return false; |
| 84 | }); | 85 | }); |
| ... | @@ -88,14 +89,14 @@ | ... | @@ -88,14 +89,14 @@ |
| 88 | msg)); | 89 | msg)); |
| 89 | }); | 90 | }); |
| 90 | 91 | ||
| 91 | - socket.on('leaveRoom', (num, name) => { | 92 | + socket.on('leaveRoom', (streamer, name) => { |
| 92 | $('#messages').append($('<li>').text(name + ' leaved ' | 93 | $('#messages').append($('<li>').text(name + ' leaved ' |
| 93 | - + room[num] + ' :(')); | 94 | + + streamer + ' :(')); |
| 94 | }); | 95 | }); |
| 95 | 96 | ||
| 96 | - socket.on('joinRoom', (num, name) => { | 97 | + socket.on('joinRoom', (streamer, name) => { |
| 97 | $('#messages').append($('<li>').text(name + ' joined ' | 98 | $('#messages').append($('<li>').text(name + ' joined ' |
| 98 | - + room[num] + ':)')); | 99 | + + streamer + ':)')); |
| 99 | }); | 100 | }); |
| 100 | }); | 101 | }); |
| 101 | </script> | 102 | </script> | ... | ... |
-
Please register or login to post a comment