Neste artigo, falaremos de crear manualmente un bot para reproducir música en discordia. Pode simplemente copiar todo o código enviado e editalo por si mesmo se ten habilidades de JavaScript. O bot foi creado por nós, pero nalgunhas etapas o usuario aínda pode afrontar diferentes problemas, polo que aconsellamos a ler coidadosamente non só as nosas instrucións, senón que tamén aparecen nos códigos de erro de pantalla se hai tal.
Se resulta que este material é demasiado complicado para ti ou non adecuado por outros motivos, use bots gratuitos preparados para reproducir música. O artigo sobre a ligazón a continuación atoparás información detallada sobre isto e podes implementar a tarefa.
Le máis:
Engadindo un bot musical ao servidor en discordia
Reproducir música a través de bot en discordia
Paso 1: Crear unha nova aplicación
Cada bot para o descarte debe estar rexistrado no portal oficial para os desenvolvedores. Entón, accede a todas as configuracións necesarias asociadas aos permisos e ao comportamento xeral do bot, pode copiar a ligazón á súa autorización no servidor persoal e usar o token único que é necesario para o desenvolvemento posterior dos comandos.
Ir ao sitio web oficial do portal de desarrolladores de discordia
- Use a ligazón de arriba para abrir a páxina principal do portal para os desenvolvedores, inicie sesión na conta persoal da discordia e faga clic na "nova aplicación" para crear unha nova aplicación.
- Introduza o seu nome, dada a singularidade, porque se hai moitos bots co mesmo nome, non será posible crealo - notifícase un aviso de renomeamento.
- Tras a conclusión, abra o menú no sitio e selecciona a categoría "Bot".
- Fronte á cadea de "Build-A-Bot" prema no botón "Engadir bot".
- Confirme a adición do bot para a aplicación seleccionada.
- A través dun menú familiar, vai a «Oauth2».
- Esta sección é responsable dos parámetros xerais do bot ea súa autorización. No bloque de "ámbitos", marque o parágrafo "Bot".
- Na lista de permisos, asegúrese de activar a conexión coas canles de voz e a capacidade de falar, xa que é necesario para a música de radiodifusión.
- O bot debería ser capaz de ler e enviar mensaxes, polo que non esqueza habilitar estas opcións na sección con permisos de chat de texto. Por suposto, pode proporcionar todos os permisos á vez, pero este enfoque é incrible, especialmente nos casos nos que fai un bot para un usuario de masa.
- Axiña que se completa a configuración de permisos, copie a ligazón para a primeira autorización do bot no servidor, porque doutro xeito engádeo ata que resulta.
- Siga esta ligazón e seleccione o servidor de probas onde desexa comprobar o bot.
- Confirma a captura e agarde a información sobre a autorización exitosa.
Agora tes un bot cun token único e o bot xa foi engadido ao servidor, pero mentres está en modo sen conexión. Para comezar, terá que realizar algunhas accións máis na computadora local, xa que aínda que non descargamos o boting para a operación sen conexión.
Paso 2: Accións preparatorias
As accións preparatorias inclúen a creación dos directorios e ficheiros requiridos, a instalación de ferramentas e dependencias para eles. Non hai nada complicado neste, só ten que facer cada acción á súa vez, atendendo coidadosamente os erros en calquera etapa.
- Crea un cartafol co nome do bot. Pode escoller calquera lugar, pero o cartafol persoal do usuario é máis adecuado para iso.
- Crea dous ficheiros nel: "config.json" e "index.js". Na primeira instalación a configuración xeral do bot - o seu prefixo e símbolo único, e no segundo - todo o código do programa con comandos e tarefas comúns desta ferramenta.
- Para o traballo do bot, necesitará node.js. Esta ferramenta está deseñada para iniciar scripts na computadora local. Siga a seguinte ligazón e descargue o seu instalador para Windows.
Descarga Node.js desde o sitio oficial
- Espere descargar o executable de ficheiros executable, executalo e pasar o procedemento de instalación simple, seguindo as instrucións que se amosan na pantalla.
- Despois diso, abra a "liña de comandos" conveniente para ti, por exemplo, entrando en CMD na utilidade "Executar" (comeza a combinación de teclas Win + R).
- Instala o módulo para traballar coa discordia API, que se chama "discordd.js". Para facelo, na xanela da consola que se abre, introduza a instalación de consola discord.js ffmpeg-binarios opsscript ytdl-core --Save e prema Intro - para que engada de inmediato todas as dependencias necesarias.
- Agarde por notificacións na pantalla a unha instalación exitosa, sen pechar a xanela da consola actual. Se aparecen erros, aprende o seu código e use o motor de busca para atopar unha decisión de traballo sobre os foros ou o sitio web oficial.
Como resultado, o cartafol persoal do usuario debería aparecer arquivos asociados co compoñente NODE.JS e engadido despois do módulo. Reinicie a computadora para que o bot non teña un inicio de dificultade, despois vaia ao seguinte paso.
Paso 3: Edición de Bot Configuration File
Xa sabes que no ficheiro de configuración BOT creado haberá todo un par de filas do código que sexa responsable do prefixo usado (símbolo antes de introducir o comando no servidor) e un token único que define a aplicación na API. Para cumprir todas as accións máis, recomendamos descargar un programa con soporte de sintaxe JS ou calquera editor de texto avanzado se isto non se fixo anteriormente. O artigo sobre a ligazón a continuación poderá familiarizarse coas solucións axeitadas dispoñibles.
Ler máis: Selección do ambiente de desenvolvemento para a programación
Axiña que estea instalado na computadora e listo para traballar, pode comezar de forma segura a editar o ficheiro de configuración, introducindo datos de usuario alí.
- Executa o ficheiro CONFIG.JS a través dun editor de texto ou ambiente de desenvolvemento, insira o código a continuación.
{
"Prefixo": "!",
"Token": "Your-TOKE"
}
Cambia o prefixo en comiñas dobres ao desexado ou deixa unha marca de exclamación. Un exemplo dun comando usando este sinal parece así: xogar.
- Ir ao seu bot no portal de desenvolvemento, atopar un token único alí e copialo.
- Insira a inspección de TOKE sen borrar comiñas dobres.
- Garda os cambios e pecha este ficheiro. Por certo, pode realizar a mesma acción a través dun "portátil" estándar.
Sobre estas accións co ficheiro de configuración completáronse, xa non hai que prescribir unha única liña de código. Pecha, sen esquecerme de gardar as edicións feitas e proceder a escribir o bot para reproducir música.
Paso 4: Proba iniciar o bot
En primeiro lugar, necesitamos asegurarse de que o bot xeralmente se execute no servidor e vai ao modo en liña, será necesario escribir a súa parte principal do código para indexar.
- A través do ambiente de desenvolvemento ou o editor de texto seleccionado, abra o ficheiro mencionado para a edición.
- Insira o bloque de código que é responsable da instalación de dependencia e indica os módulos utilizados:
Const discord = require ('discord.js');
const {
Prefixo,
token.
} = Requirir ('./ config.json');
const ytdl = require ('ytdl-core');
- Coa axuda dos tokens previamente especificados, crea un cliente e inicia sesión, que se realiza ingresando só dúas liñas sinxelas:
Const client = novo discordd.client ();
Client.Login (token);
- Queda só para especificar as últimas liñas básicas para escoitar o bot.
Cliente.once ('preparado', () => {
Console.log ('listo!');
});
Cliente.once ('reconexións', () => {
Console.log ('reconnectar!');
});
Cliente.once ('desconexión', () => {
Console.Log ('Desconectar!');
});
- Expande o menú "Ficheiro" e garda os cambios feitos.
- Executa a consola de novo de xeito cómodo.
- Introduza o comando index.js de nodos para iniciar o Script BOT.
- Se os seus ficheiros non están situados no directorio persoal do usuario, despois de que o nodo terá que especificar un completo que lles permita.
- O lanzamento exitoso do bot está indicado pola inscripción aparecida "Ready!".
- Abre discordia e asegúrese de que o bot foi ao estado de "en liña".
Paso 5: Escribir o codificador principal do bot musical
O proceso máis complexo permaneceu: escribindo o código básico para o bot musical. Existe unha lista de tarefas que debe realizar: ler mensaxes e procesar comandos, definición dun nome de canción ou a súa dirección, conectarse á canle de voz e á reprodución. Os permisos sobre todo este bot son, polo que só precisa especificar accións usando funcións de JavaScript, que se realiza no mesmo ficheiro "index.js".
Engade unha característica sinxela para ler mensaxes:
Client.on ('Message', Async Message => {
}
Consta de só dúas liñas, pero permitirá que o bot tome unha consulta personalizada e procesase correctamente. Pódese dicir que este é un dos equipos máis importantes para os bots de calquera tipo. Asegúrese de engadir ignorando mensaxes doutros bots ingresando
Se (message.author.bot) devolve;
Isto evita conflitos mentres usa varios bots no servidor simultaneamente. A continuación, será necesario comprobar o prefixo para que o bot acepte ao equipo ou devolveuno.
se (! mensaxe.content.startswith (prefix)) devolución;
A verificación de comandos lanzados realízase usando simples se os operadores, eo deseño no noso caso parece así:
Const serverqueueue = cola.get (message.guild.id);
if (message.content.startswith (`$ {prefix} play`)) {
Executar (mensaxe, servidorqueue);
Regreso;
} Máis se (message.content.startswith (`$ {prefix} Skip`)) {
Saltar (mensaxe, servidorqueue);
Regreso;
} Máis se (mensaxe.content.startswith (`$ {prefix} parar`)) {
Parar (mensaxe, servidorqueue);
Regreso;
} Máis {
Message.channel.send ('Debes usar o comando existente!')
}
Ten en conta que a función Enviar ('') envía a mensaxe ao usuario se de súpeto entra no comando non funcional. Esta mensaxe pode editar, cambiando a inscrición en comiñas.
Agora o bot aprendeu a tomar comandos, pero ata que pode interactuar con eles, xa que as accións non se especifican. Primeiro engade o comando de xogo, que é responsable da reprodución. Para iso, é necesaria unha matriz coa seguinte forma:
Const cola = novo mapa ();
El envía todos os comandos na cola e fai que as cancións xoguen só cando remata o anterior. A continuación, será necesario crear unha función que verificará se o usuario conectado á canle de voz e se o bot é os permisos correspondentes.
Función de Async Execute (mensaxe, servidorqueue) {
const args = message.content.Split ('');
Const voicechannel = message.member.voicechannel;
Se (! Voicechannel) devolve Message.channel.Send ('Para escoitar música, ten que estar en canle de voz!');
conred permisos = voicechannel.permission (message.client.user);
If (! Permissions.Has ('Connect') || Permissions.Has ('Speak')) {
Devolve a mensaxe.channel.send ('Necesito permisos para unirse e falar a túa canle de voz!');
}
}
Seguinte acción: conectando a biblioteca YTDL, xa que este bot vai ler o nome da canción na ligazón de YouTube, despois de que se xoga no servidor. Levará a inserir unha pequena peza de inserción de código.
Const songinfo = Agardando ytdl.getinfo (args [1]);
Const Song = {
Título: SongInfo.Title,
URL: SongInfo.Video_URL,
};
O seguinte bloque de código permitirá que entenda se hai cancións na cola ou pode conectarse inmediatamente á canle de voz e comezar a reprodución.
Se (! Serverqueueue) {
} Máis {
Servernqueue.songs.push (canción);
Console.log (servidorqueue.songs);
Devolve a mensaxe.channel.send (`$ {Song.title} engadiuse á cola!`);
}
A continuación vén un pouco complicado para os programadores novatos un esquema de contrato que engade unha canción a unha matriz e fai o mesmo cada vez que ingrese! Xoga, comprobando a cola e elixindo a acción correcta. Preste atención aos comentarios presentados, que permiten tratar con todas as sutilezas.
// creando un contrato para a cola
Const queueconstruct = {
TextChannel: Message.Channel,
Voicechannel: Voicechannel,
Conexión: NULL,
Cancións: [],
Volume: 5,
Xogando: TRUE,
};
// establece a cola co noso contrato
cola.set (message.guild.id, queueconstruct);
// inserir a composición na nosa matriz de cancións
queueconstruct.songs.push (canción);
tentar {
// Aquí estamos intentando unirse ao chat de voz e gardar a conexión do obxecto
var conexión = agarda voicechannel.join ();
Queueconstruct.connection = Conexión;
// Chamando a función de reprodución para iniciar a canción
PLAY (message.guild, Queueconstruct.song [0]);
} Captura (errar) {
// Mostrar unha mensaxe de erro se o bot non pode unirse ao chat de voz
Consola.log (errar);
cola.delete (message.guild.id);
Devolver a mensaxe.channel.send (Err);
}
Coa cola, todo está claro, pero aínda non xoga cancións, porque non hai asignación para a función de xogo. Para facelo no código é necesario engadir estrutura
Función de función (gremio, canción) {
Const serverqueueue = cola.get (guild.id);
If (! Canción) {
Servernqueue.voicechannel.leave ();
Queue.Delete (Guild.id);
Regreso;
}
}
A reprodución comeza a usar a función PlayStream () e a ligazón especificada á pista.
Const dispatcher = servernqueue.connection.plystream (ytdl (Song.URL))
.on ('END', () => {
Console.Log ('Music is Over!');
// elimina a canción rematada da cola
servernqueue.songs.shift ();
// de novo causa a función de reprodución coa seguinte canción
Play (Guild, ServerQueueue.song [0]);
})
.on ('ERROR', ERROR => {
Consola.error (erro);
});
Dispatcher.SetvolumElogaritmic (serverarkqueue.volume / 5);
Se queres engadir unha función de saltar a canción, por exemplo, cando decides xogar unha lista de reprodución, primeiro coidar do comando apropiado e engadir un fragmento deste tipo:
Función omitir (mensaxe, servidorqueue) {
se (! mensaxe.member.voicechannel) devolve Message.channel.send ('Debería estar nunha canle de voz para deter a música!');
If (! Serverqueue) devolve message.channel.send ('Non hai canción que eu podería omitir!');
Servernqueue.connection.dispatcher.end ();
}
Aproximadamente o mesmo esquema tamén funciona a función de parada, pero o bloque co código adquire un aspecto un pouco diferente:
Función Stop (mensaxe, servidorqueue) {
if (! message.member.voicechannel) devolve Message.channel.send ('
Debes estar na canle de voz para deter a música! ');
Servernqueue.songs = [];
Servernqueue.connection.dispatcher.end ();
}
Considere que a información presentada anteriormente é adecuada exclusivamente para aqueles usuarios que xa están familiarizados coa linguaxe JavaScript ou só se dedica a estudar e decidiron crear un bot musical. Se non tes habilidades en xeral e os bloques especificados co código que non digas nada, simplemente insira o código fonte completo no ficheiro, substitúe as mensaxes do bot en ruso (están en comiñas) e gardar o Cambios. Todo o código fonte ten este tipo:
Const discord = require ('discord.js');
const {
Prefixo,
token.
} = Requirir ('./ config.json');
const ytdl = require ('ytdl-core');
Const client = novo discordd.client ();
Const cola = novo mapa ();
Cliente.once ('preparado', () => {
Console.log ('listo!');
});
Cliente.once ('reconexións', () => {
Console.log ('reconnectar!');
});
Cliente.once ('desconexión', () => {
Console.Log ('Desconectar!');
});
Client.on ('Message', Async Message => {
Se (message.author.bot) devolve;
se (! mensaxe.content.startswith (prefix)) devolución;
Const serverqueueue = cola.get (message.guild.id);
if (message.content.startswith (`$ {prefix} play`)) {
Executar (mensaxe, servidorqueue);
Regreso;
} Máis se (message.content.startswith (`$ {prefix} Skip`)) {
Saltar (mensaxe, servidorqueue);
Regreso;
} Máis se (mensaxe.content.startswith (`$ {prefix} parar`)) {
Parar (mensaxe, servidorqueue);
Regreso;
} Máis {
Message.channel.send ('Debe introducir un comando válido!')
}
});
Función de Async Execute (mensaxe, servidorqueue) {
const args = message.content.Split ('');
Const voicechannel = message.member.voicechannel;
Se (! Voicechannel) devolve a mensaxe.channel.send ('Debe estar nunha canle de voz para reproducir música!');
conred permisos = voicechannel.permission (message.client.user);
If (! Permissions.Has ('Connect') || Permissions.Has ('Speak')) {
Devolve a mensaxe.channel.send ('Necesito os permisos para unirse e falar na túa canle de voz!');
}
Const songinfo = Agardando ytdl.getinfo (args [1]);
Const Song = {
Título: SongInfo.Title,
URL: SongInfo.Video_URL,
};
Se (! Serverqueueue) {
Const queueconstruct = {
TextChannel: Message.Channel,
Voicechannel: Voicechannel,
Conexión: NULL,
Cancións: [],
Volume: 5,
Xogando: TRUE,
};
cola.set (message.guild.id, queueconstruct);
queueconstruct.songs.push (canción);
tentar {
var conexión = agarda voicechannel.join ();
Queueconstruct.connection = Conexión;
PLAY (message.guild, Queueconstruct.song [0]);
} Captura (errar) {
Consola.log (errar);
cola.delete (message.guild.id);
Devolver a mensaxe.channel.send (Err);
}
} Máis {
Servernqueue.songs.push (canción);
Console.log (servidorqueue.songs);
Devolve a mensaxe.channel.send (`$ {Song.title} engadiuse á cola!`);
}
}
Función omitir (mensaxe, servidorqueue) {
if (! message.member.voicechannel) devolve Message.Channel.Send ('Debes estar nunha canle de voz para deter a música!');
if (! serverqueue) devolve message.channel.send ('Non hai canción que eu podería omitir!');
Servernqueue.connection.dispatcher.end ();
}
Función Stop (mensaxe, servidorqueue) {
if (! message.member.voicechannel) devolve Message.Channel.Send ('Debes estar nunha canle de voz para deter a música!');
Servernqueue.songs = [];
Servernqueue.connection.dispatcher.end ();
}
Función de función (gremio, canción) {
Const serverqueueue = cola.get (guild.id);
If (! Canción) {
Servernqueue.voicechannel.leave ();
Queue.Delete (Guild.id);
Regreso;
}
Const dispatcher = servernqueue.connection.plystream (ytdl (Song.URL))
.on ('END', () => {
Console.Log ('Music rematou!');
servernqueue.songs.shift ();
Play (Guild, ServerQueueue.song [0]);
})
.on ('ERROR', ERROR => {
Consola.error (erro);
});
Dispatcher.SetvolumElogaritmic (serverarkqueue.volume / 5);
}
Client.Login (token);
Tras a conclusión, é mellor reiniciar o bot, despois de que pode ir ao seu servidor, conectarse á canle de voz e introducir calquera comando da interacción, comprobar como reaccionar ao bot.
Se a variante anterior do bot non é adecuada para ti, pode atopar os códigos fonte do mesmo github e copialos no seu computador. O principio de rexistro e lanzamento segue sendo o mesmo, polo que, se é necesario, simplemente edite o código rematado e despois proceda a probar o bot.
Neste artigo, non afectamos a descarga dun bot no hospedaxe, distribuílo entre outros usuarios, creando un avatar e o uso de sitios abertos, desde onde se pode autorizar. Todo isto é de procesos separados que deben estar comprometidos só cando teña afinado a súa habilidade para crear bots e está preparado para distribuír proxectos na rede.