discord developer 13

discord 유튜브 음악 봇 개발이 힘든 이유와 차선책

들어가기 전디스코드 음악 서비스 애플리케이션(이하 디스코드 뮤직 봇 또는 음악 봇)은 대표적으로 유튜브에 업로드된 음원을 무료로 들을 수 있다는 강점이 있습니다. 하지만 일반적으로 음악 봇은 유튜브 스트리밍 리소스 활용하여 사용자에게 음원 리소스를 제공합니다. 이때 음원 리소스는 당연히 저작권이 존재하기에 영리 목적으로 사용 불가능하며 자칫 잘못하다가는 법적인 문제가 발생할 가능성이 매우 높습니다. 그러기에 기존의 음악봇의 한계점과 해결 방안에 대해 이야기하고자 합니다. 목차음악 봇이 유명했던 이유음악 봇의 고질적인 문제앞으로의 해결방안 ( iframe api )1. 음악 봇이 유명했던 이유유튜브 광고에 지치고 타 음악 스트리밍 플랫폼의 비싼 월정액에 치인 사람들은 디스코드 봇을 통해 광고 없는 음악을 ..

discord developer 2025.03.07

"디스코드 초대 링크"와 "Oauth2 인증을 통한 guilds.join"간의 차이점이 있을까?

디스코드에서 서버에 참여하는 방법들디스코드에서 자신 또는 타인의 서버로 제삼자를 초대하기 위해서는 다음과 같은 과정을 거치게 된다.위의 이미지에서 볼 수 있듯이 사용자는 디스코드 초대 링크 또는 oauth2 인증을 통해 서버에 참여할 수 있다. 만약 Oauth2 인증 서비스나 디스코드 초대 링크 서비스 중 장애가 발생한다면 다른 하나 또한 장애의 영향을 받는 것인지 궁금해서 직접 discord developer 커뮤니티에 물어봤다.답변은 다음과 같았다.답변은 '디스코드 초대 링크 서비스와 Oauth2 인증을 통해 서버에 사용자를 초대하는 기능은 동일한 api 서버를 사용한다'는 것이였다. 즉 어떤 장애가 발생하냐의 따라 다른 결과가 나올 수 있지만 하나의 서비스에 장애가 발생한다면 다른 서비스 또한 일시..

discord developer 2025.01.14

ytdl-core로 높은 퀄리티의 디스코드 음악 스트리밍하기

이번 포스트에서는 itag란 무엇인지 높은 퀄리티의 음악 스트리밍 데이터를 가져오기 위해서는 어떻게 이용해야 할지 에 대해 알려드리겠습니다. Itag란 무엇일까? 유튜브 스트리밍 포멧을 의미합니다. 쉽게 말해서 소리, 영상의 유무, 화질, 음질에 대한 정보를 담고 있습니다. 준수한 품질의 정보를 가진 itag를 사용한다면 더 좋은 음질과 안정성을 보장할수있습니다. ytdl-core는 무엇일까? 유튜브 스트리밍 리소스를 가져와 스트리밍 하는 라이브러리입니다. (법적 문제 x) 해당 라이브러리를 이용하여 ReadableStream를 받아 스트리밍을 진행할 수 있으며 다운로드 또한 가능합니다. 해당 라이브러리를 이용하여 쾌적하게 스트리밍을 할려면 아래와 같이 설정해주는 것이 좋습니다. 비디오를 가져오지 않고 ..

discord developer 2024.04.17

디스코드 봇 개발 일지 (REST API를 이용하여 간단하게 디스코드 봇 사용하기)

디스코드 봇을 개발하고 있을 때 slash command를 등록하던 도중 디스코드 라이브러리에 REST를 불러와서 등록하는 것을 보고 "discord developer portal에 있는 restful api가이드를 이용하여 간단하게 봇을 이용할 수 있지 않을까?" 라는 생각에 공식 문서를 찾아보았습니다. 찾아본 결과 기존에는 client를 생성하고.. token등록하고... client.guilds.cache.get(guildId)을 해서 가져왔지만 REST를 사용할 때에는 그냥 REST 클래스에 token 등록하고. get("/guilds/{guildId}")만 하면 끝나더라고요..! 그래서 이번 포스트에서는 해당 부분에 대해 소개하고 공식문서를 어떻게 참조하는지 포스팅하겠습니다. REST 객체를 이..

discord developer 2024.02.15

디스코드 레니 봇 개발 일지_(비트레이트 높이는 방법,@distube/ytdl-core 사용, many request 해결)

지금까지는 ytdl-core를 사용하면서 음악봇을 운영했지만 해당 라이브러리는 버그가 많다..;; 대표적인 건 ECONNRESET, 429, 403 또는 스트리밍 멈춤, 렉, 불안정함... 아주 환장하겠다. (이래서.. 라바링크나 다른 사람이 만들걸 사용하나..?) 해당 포스트에서는 1. ytd-core의 일부 문제를 해결한 라이브러리 2. many request 문제를 해결하는 방법 에 대해 다룰 것이다. 1. ytld-core 문제점을 극복한 라이브러리 해당 라이브러리에 정체는 @distube/ytdl-core이다. 이름에서 보다시피 ytdl-core를 포크 한 라이브러리다. 그렇지만 렉이나 불안정한 것이 많이 잡혔으며 ytdl-core 버그들도 많이 픽스된 점이 포인트다. 실제로 사용해 본 결과 y..

discord developer 2024.01.19

디스코드 레니 봇 개발 일지_ ( 로그 편 )

디스코드 봇, 인공지능, 게임을 개발할 때 항상 느끼는 거지만 정상적으로 빌드됐는데 실행할 때 발생하는 오류가 가장 짜증 나는 거 같다. 물론 코드를 잘 짜는 것도 중요하지만.. 현실은 그렇게 하기 힘들다. 그래서 사후 처리를 위해 로그를 남기기로 했다. 1. 어떤 방법으로 로그를 저장하면 좋을까? 아마존 데이터베이스를 사용하거나 타 데이터베이스 서비스를 이용하는 것도 좋지만 음악봇 특성상 로그 이벤트가 자주 발생하며 여기서 발생하는 트래픽 비용 또한 만만치 않다.... (아마존 DB를 이용한 조회된 음악 데이터 저장 서비스 했다가 30분 만에 60만 원이 나갔다) 그래서 큰 비용 및 저장 비용 지출 우려가 있는 웹 클라우드 서비스를 사용하는 것보다 파일로 저장하는 걸로 결정하였다. 사용 라이브러리 im..

discord developer 2023.11.20

discord.js 를 이용한 디스코드 음악 봇 만들기 (ytdl-core 심화편)

디스코드 음악봇을 만들기 위해 인터넷을 찾아보면 대표적으로 3가지의 선택지를 발견하실 수 있습니다. 1. 다른 사람이 개발한 youtube player 라이브러리 사용하기 2. Lavalink 또는 ytdl-core를 사용하여 만들기 대부분 쉬운 방법을 선택하신다면 다른 개발자분들이 만든 라이브러리를 사용합니다. 하지만 이러한 방법은 오류가 발생하였을 때 수정하기 매우 까다로우며 / 자신이 원하는 방향으로 개발하기 힘들 수 있기에 저는 YTDL-CORE를 사용하는 것을 적극적으로 추천합니다. 그래서 YTDL-CORE가 뭐야? YTDL-CORE는 유튜브 영상 다운로드 라이브러리인 youtube-dl를 업그레이드하여 제작한 라이브러리입니다. 해당 라이브러리는 유튜브를 이용할 시 얻을 수 있는 모든 정보를 가..

discord developer 2023.07.30

interaction & message 올바른 type(Interface) 지정하는 법 (discord.js / typescript)

typescript로 디스코드 개발을 시작한다면 가장 고민이 되는게 바로 interaction의 올바른 type이 무엇인지 찾아보지만 docs를 찾아봐도 나오지않아 난감할때가 있습니다. 해당 포스팅에서는 해당 interaction 또는 message type에 대해 설명하도록 하겠습니다. 직접 discord.js를 뜯어본 후 확인하였으니 개발하는데 참조하시면 되겠습니다! 1. slash commands 선언 import { CacheType, ChatInputCommandInteractionMessage } from 'discord.js'; 사용 interaction: ChatInputCommandInteraction 2. Message 선언 import { Message } from 'discord.j..

discord developer 2023.07.28

how to fix 'node-pre-gyp error' in linux or ubuntu (@discordjs/opu installing issue)

linux 또는 ubuntu 환경에서 @discordjs/opu를 설치할 때 아래와 같은 오류가 발생할 수 있습니다. 해당 오류는 build-essential package가 os에 설치되지 않아 발생하는 오류입니다. 그러므로 아래의 명령어를 실행하여 위의 오류를 수정할 수 있습니다. sudo dnf install make automake gcc gcc-c++ kernel-devel 만약 위의 명령어를 실행하여도 문제가 발생할 경우 nodejs & npm 재설치를 권장드리며 그래도 오류가 발생한다면 오류코드를 자세히 분석하여 해결하는 방법밖에 없을거같습니다.

discord developer 2023.07.16

slash commands에 쿨타임 적용하기 [discord.js]

한번에 많은 명령어를 도배하듯이 사용한다면 봇이 버티기 힘들수있습니다. 그래서 setTimeout() 함수를 사용하여 간단한 쿨타임을 만들겠습니다! 전역 범위 코드 client.cooldowns = new Collection(); client.COOLDOWN_SECONDS = 1; 쿨타임 적용 코드 Client.on(Event.IntractionCreate, (interaction) => { if (!interaction.isChatInputCommand()) return; const command = interaction.client.commands.get(interaction.commandName); if (!command) { console.error(`명령어 [ ${interaction.comma..

discord developer 2023.06.30
반응형