본문 바로가기

Node.js 디스코드 봇 만들기 # 음성봇 - 이 강좌는 Node.js와 npm이 컴퓨터에 깔려있다는 전제 하에 작성되었습니다.전에 썼던 디스코드 챗봇 만들기에 이어서 이번에는 자바스크립트를 이용해 음성을 출력할수 있는 봇을 만들어보려 합니다. discord.js의 사용법을 모르는 분들은 여기를 먼저 읽으시면 됩니다. 모듈 설치하기 음성 기능을 이용하기 위해서는 음성관련 처리를 해주는 새로운 모듈이 필요한데요, node-opus 입니다. node-opus 말고 opusscript라는 모듈을 대신 사용할 수 있지만, 처리 효율성으로 봤을때 node-opus가 훨씬 좋습니다.package.json의 dependencies에 추가한 뒤 cmd를 켜서 npm install이라고 명령하거나, npm install node-opus를 쳐 주시면 됩니다. 다.. 더보기
자바스크립트 sleep 함수 다른 언어들에는 sleep함수가 있는데 어째서인지 자바스크립트엔 없습니다. 그 이유는, 자바스크립트가 단일 스레드(한번에 한 작업만 처리)언어이기 때문입니다. 진짜로 자바스크립트에 다른 언어같은 sleep 함수가 생긴다면, sleep하는 시간동안 다른 작업을 전혀 처리하지 못하겠죠. 페이지도 멈추고 때때로는 브라우저가 응답없음이 되기도 합니다.그렇기에 우리는 우리가 원하는대로 작동할 수 있는 sleep 함수를 만들어줄 필요가 있습니다. * 이 글을 읽을때 async function에 대해 알면 더 편합니다. 자바스크립트의 sleep 함수 만들기먼저, 자바스크립트의 비동기 함수(async function)의 await 라는 키워드에서 이용하는 Promise 객체를 만들어주는 함수여야 합니다. 그 Promi.. 더보기
C++ 람다식 익명함수 각종 라이브러리들에서 리스너, 특정 작업이 실행되었을때 발동되는 함수를 직접 하나하나 정의하지는 않고, 그대로 익명함수로 쓰는 표기법이 있어서 찾아 보았습니다. C++에서도 익명함수를 사용할 수 있더군요. 바로 "람다식" 이라는 표기법이었습니다. 람다식의 가장 쉽고 간단한 표기법C++ 람다식은 다른 언어의 람다식과 다르게 특이한 것들이 많습니다. 다른 언어들이 편하게 함수를 만들고 이용하는 데에 초점을 뒀다면, 여기서는 그저 "익명 함수"를 만들기 위한 방법인듯 합니다.이런 람다식에서 간단하게 필요한 부분만 뽑아내면 다음과 같습니다. [](매개변수) -> 리턴타입 { 실행내용 }여기서 매개변수는 함수를 정의할때 인수로 들어갈 수 있는 것들과 같은 의미이고, 리턴타입은 리턴값의 타입(int, string .. 더보기