En aquest article, anem a parlar de la creació manual d'un robot per a la reproducció de música en discòrdia. Vostè pot simplement copiar el codi de tota presentat i editar per si mateix si posseeix habilitats de JavaScript. El robot va ser creat per nosaltres, però en algunes etapes l'usuari encara pot fer front a diferents problemes, pel que recomanem que llegeixi atentament no només les nostres instruccions, sinó que també apareix a la pantalla dels codis d'error si hi ha tals.
Si resulta que aquest material és massa complicat per a vostè o no adequada per altres raons, utilitzar robots gratuïtes preparades per reproduir música. L'article en el següent enllaç trobareu informació detallada sobre aquest i es pot posar en pràctica la tasca.
Llegeix més:
L'addició d'un robot musical a servidor de la discòrdia
Reproduir música a través bot en discòrdia
Pas 1: Creació d'una nova aplicació
Cada robot per al descart ha d'estar registrat al portal oficial per als desenvolupadors. Així podrà accedir a tots els ajustos necessaris associats amb els permisos i el comportament general de l'robot, pot copiar l'enllaç a la seva autorització al servidor personal i utilitzar el testimoni únic, que és necessària per al desenvolupament addicional de les ordres.
Anar a la pàgina oficial de la discòrdia desenvolupador Portal
- Utilitzeu l'enllaç de dalt per obrir la pàgina principal del portal de desenvolupadors, entreu en el compte personal de la discòrdia i feu clic a la "nova sol·licitud" per crear una nova aplicació.
- Introdueix el nom, donada la singularitat, ja que si hi ha molts robots amb el mateix nom, no serà possible crear - un avís de canvi de nom es notifica.
- Un cop completat, obriu el menú al lloc i seleccionar la categoria "Bot".
- Enfront de la "Build-A-Bot" cadena de clic a "Afegeix Bot".
- Confirmar l'addició de la bot per a l'aplicació seleccionada.
- A través d'un menú familiar, anar a «OAuth2».
- Aquesta secció és responsable dels paràmetres generals de l'robot i la seva autorització. En el bloc "Abastos", marqui el paràgraf "Bot".
- A la llista de permisos, vos d'activar la connexió als canals de veu i la capacitat de parlar, ja que és necessari per a una major difusió de música.
- El robot ha de ser capaç de llegir i enviar missatges, de manera que no s'oblidi d'activar aquestes opcions a la secció amb permisos de xat de text. Per descomptat, pot proporcionar tots els permisos a la vegada, però aquest enfocament és increïble, sobretot en els casos en què faci un bot per a un usuari de masses.
- Tan aviat com s'hagi completat la configuració de l'permís, copiar l'enllaç de la primera autorització de l'robot al servidor, perquè en cas contrari afegir fins que en resulta.
- Seguiu aquest enllaç i seleccioneu el servidor de prova en la qual desitja comprovar el bot.
- Confirmar captura i esperar que la informació sobre l'autorització reeixida.
Ara vostè té un robot amb un únic testimoni, i el robot ja s'ha afegit als servidor, però mentre que en la manera fora de línia. Per iniciar-lo, s'haurà de realitzar algunes accions més en l'equip local, ja que mentre no ens descarreguem el Boting Boting per al funcionament fora de línia.
Pas 2: Accions preparatòries
Accions preparatòries inclouen la creació dels directoris i arxius requerits, la instal·lació d'eines i dependències per a ells. No hi ha res complicat en això, només ha de fer cada acció, al seu torn, seguint amb cura els errors en qualsevol etapa.
- Crear una carpeta amb el nom de el bot. Vostè pot triar qualsevol lloc, però la carpeta d'inici de l'usuari és el més adequat per això.
- Crear dos arxius en ell: "config.json" i "index.js". A la primera instal·lació de la configuració general de la bot - el seu prefix i únic testimoni, i en el segon - tot el codi de el programa amb les ordres i tasques comunes d'aquesta eina.
- Per al treball de l'robot tindrà Node.js. Aquesta eina està dissenyada per iniciar les seqüències d'ordres en l'equip local. Seguiu l'enllaç de sota i descarregar el seu instal·lador per a Windows.
Descarregar NODE.JS des del lloc oficial
- Espereu descarregar l'executable de fitxer executable, executeu-lo i passeu el procediment d'instal·lació simple, seguint les instruccions que es mostren a la pantalla.
- Després d'això, obriu la "línia d'ordres" convenient per a vosaltres, per exemple, entrant CMD a la utilitat "Executa" (comença la combinació de tecles Win + R).
- Instal·leu el mòdul per treballar amb l'API de discòrdia, que s'anomena "discord.js". Per fer-ho, a la finestra de la consola que s'obre, introduïu el Discord.js FFMPEG-binaris FFMPEG-BINARS FFMPEG-BINARS OPSSCRIPT YTDL-Core --save i premeu Intro, de manera que afegiu immediatament totes les dependències necessàries.
- Espereu les notificacions a la pantalla en una instal·lació satisfactòria, sense tancar la finestra de la consola actual. Si apareixen errors, apreneu el codi i utilitzeu el motor de cerca per trobar una decisió de treball sobre els fòrums o el lloc web oficial.
Com a resultat, la carpeta Inici de l'usuari ha d'aparèixer fitxers associats al component de node.js i afegir-los després del mòdul. Reinicieu l'ordinador de manera que el bot no tingui dificultats per iniciar-se i, a continuació, aneu al següent pas.
Pas 3: Edició del fitxer de configuració de bot
Ja saps que a l'arxiu de configuració de l'robot creat sempre hi haurà tot un parell de files de el codi que s'encarrega de la prefix utilitzat (símbol abans d'entrar a sistema al servidor) i un testimoni únic que defineix l'aplicació en l'API. Per complir totes les accions addicionals, es recomana descarregar un programa amb el suport de sintaxi JS o qualsevol editor de text avançat si això no s'ha fet anteriorment. L'article de l'enllaç següent serà capaç de familiaritzar-se amb les solucions adequades adequades.
Llegiu-ne més: seleccionar l'entorn de desenvolupament per a la programació
Tan aviat com s'instal·la a l'ordinador i llest per treballar, podeu començar amb seguretat al fitxer de configuració, introduint les dades d'usuari.
- Executeu el fitxer de config.js a través d'un editor de text o entorn de desenvolupament, inseriu el codi següent.
{
"Prefix": "!",
"Token": "Your-Toke"
}
Canvieu el prefix en les cometes dobles a la marca desitjada o deixa una nota d'exclamació. Un exemple d'una ordre que utilitza aquest signe sembla així: jugar.
- Aneu al vostre bot al portal de desenvolupament, trobeu un testimoni únic allà i copieu-lo.
- Introduïu la inspecció del vostre toke sense suprimir les cometes dobles.
- Deseu els canvis i tanqueu el fitxer. Per cert, es pot realitzar la mateixa acció a través d'un "portàtil" estàndard.
En aquestes accions amb l'arxiu de configuració s'han completat, ja no cal necessita per prescriure una sola línia de codi. Tancar-, sense oblidar de desar els canvis realitzats, i procedir a l'escriptura més que el robot per a la reproducció de música.
Pas 4: Bot A partir de prova
En primer lloc, cal assegurar-se que el bot generalment s'executa en el servidor i se'n va a la modalitat en línia, caldrà escriure la part principal de el codi per index.js, i aleshores utilitzar NODE.JS per començar.
- Mitjançant l'entorn de desenvolupament o l'editor de text seleccionat, obriu el fitxer esmentat per a l'edició.
- Inserir el bloc de codi que és responsable de la instal·lació de dependència i indica els mòduls utilitzats:
Const Discord = requereix ( 'discord.js');
{const
prefix,
simbòlic
} = Require ( './ config.json');
const YTDL = requereix ( 'YTDL-CORE');
- Amb l'ajuda de les fitxes prèviament especificats, crear un client i d'inici de sessió, que es porta a terme mitjançant la introducció de només dues línies senzilles:
Const = new Client discord.client ();
CLIENT.LOGIN (Token);
- Només queda per especificar les últimes línies bàsiques per escoltar el bot.
Client.ONCE ( 'Ready', () => {
Console.log ( 'A punt!');
});
Client.Once ( 'tornar a connectar', () => {
Console.log ( 'tornar a connectar!');
});
Client.ONCE ( 'desconnexió', () => {
Console.log ( 'Desconnecta!');
});
- Expandir l'menú "Arxiu" i guardar els canvis realitzats.
- Executar la consola de nou en una forma convenient.
- Introduïu el node index.js comanda per iniciar la seqüència de comandaments bot.
- Si els fitxers no es troba en el directori personal de l'usuari, després de Node haurà d'especificar una completa deixar-los.
- L'èxit d'el llançament de l'robot s'indica mitjançant la inscripció aparegut "A punt!".
- Obrir la discòrdia i assegureu-vos que el robot va anar a la condició de "en línia".
Pas 5: Escriure el codificador principal de l'robot musical
El procés més complex romandre - escriure el codi bàsic per al robot musical. Hi ha una llista de les tasques que ha de realitzar: llegir missatges i ordres de processament, la definició d'un nom de la cançó o la seva direcció, la connexió a canal de veu i reproducció. Permisos en tot aquest robot és, de manera que només ha d'especificar les accions que utilitzen les funcions de JavaScript, que es realitza en el mateix arxiu "index.js".
Afegir una característica fàcil de llegir els missatges:
Client.on ( 'missatge', asíncron de missatges => {
}
Es compon de només dues línies, però permetrà que el robot per prendre una consulta personalitzada i processada correctament. Es pot dir que aquest és un dels equips més importants per als robots de qualsevol tipus. Assegureu-vos d'afegir missatges fent cas omís d'altres robots mitjançant la introducció de
si retorn (message.author.bot);
Això evita conflictes durant l'ús de múltiples robots al servidor de forma simultània. A continuació, caldrà comprovar el prefix perquè el bot va acceptar l'equip o l'hi va tornar.
si (Message.content.startSwith (Prefix)!) return;
Comprovació de les ordres llançats es porta a terme utilitzant els operadors simple si, i el disseny en la nostra aparença cas com aquest:
Const ServerQueue = Queue.Get (Message.Guild.ID);
si (Message.Content.startSwith ( `$ {prefix} play`)) {
EXECUTE (Missatge, ServerQueue);
tornar;
} Else if (message.content.startswith ( `$ {prefix} Skip`)) {
SKIP (Missatge, ServerQueue);
tornar;
} Else if (message.content.startSwith ( `$ {prefix} stop`)) {
Stop (Missatge, Serverqueue);
tornar;
} Else {
Message.Channel.send ( 'Ha d'utilitzar la comanda existent!')
}
Recordeu que el SEND ( '') funció envia el missatge a l'usuari si de sobte entra la comanda de no treball. Aquest missatge es pot editar, canviar la inscripció entre cometes.
Ara el robot aprèn a portar les ordres, però fins que pugui interactuar amb ells, ja que les accions no s'especifiquen. Primer s'ha d'agregar la comanda Play, que és responsable de la reproducció. Per a això, es necessita una matriu amb la següent forma:
Const cua = Nou mapa ();
Ell envia a tots els comandaments de la cua i fa que les cançons per jugar només quan els extrems anteriors un. A continuació, serà necessari per crear una funció que comprovar si l'usuari connectat amb el canal de veu i si el bot és els permisos corresponents.
Async executar la funció (MISSATGE, SERVERQUEUE) {
const args = message.content.split ( '');
Const VoiceChannel = Message.Member.VoiceChannel;
if (! VoiceChannel) Tornar Message.Channel.send ( 'Per escoltar música, ha d'estar al canal de veu!');
const Permisos = VoiceChannel.permissionSFOR (Message.Client.user);
If (! Permissions.has ( 'Connectar') ||! Permissions.has ( 'parlar')) {
Tornar Message.channel.send ( 'Necessito permisos per unir-se i parlar del seu canal de veu!');
}
}
Següent Acció - que connecta a la biblioteca YTDL, ja que aquest robot llegirà el nom de la cançó a l'enllaç de YouTube, després de la qual cosa es juga al servidor. Es durà a inserir una petita peça d'inserció de codi.
Const Songinfo = await ytdl.getinfo (args [1]);
Const Cançó = {
Títol: Songinfo.title,
URL: Songinfo.Video_URL,
};
El següent bloc de codi li permetrà entendre si hi ha cançons a la cua o es pot connectar immediatament a canal de veu i iniciar la reproducció.
If (! Serverqueue) {
} Else {
ServerQueue.Songs.push (Song);
Console.log (Serverqueue.songs);
Tornar Message.Channel.send ( `$ {} Song.title s'ha afegit a la cua de`!);
}
A continuació ve una mica complicat per als programadors novells un esquema de contracte que afegeix una cançó en una matriu i fa el mateix cada vegada que entra! Play, el control de la cua i l'elecció de l'acció correcta. prestar atenció als comentaris presentats, que li permeten fer front a totes les subtileses.
// Creació d'un contracte per a la cua
Const QueueContruct = {
TextChannel: Message.Channel,
VoiceChannel: VoiceChannel,
Connexió: NULL,
Songs: [],
VOLUM: 5,
Jugar: És cert,
};
// Conjunt de cues amb el nostre contracte
queue.set (Message.Guild.ID, QueueContruct);
// Inserir la composició en la nostra gamma de cançons
queuecontruct.songs.push (SONG);
try {
// Aquí estem tractant d'unir-se a xat de veu i guardar la connexió en l'objecte
connexió var = voicechannel.join await ();
queuecontruct.connection = Connexió;
// Trucar a la funció de reproducció per iniciar la cançó
Play (Message.Guild, Queuecontruct.songs [0]);
} Catch (ERR) {
// Mostra un missatge d'error si el robot no pot unir-se a xat de veu
Console.log (ERR);
queue.delete (Message.Guild.ID);
Tornar Message.Channel.send (ERR);
}
Amb la cua, tot està clar, però encara no juga cançons, perquè no hi ha una assignació per a la funció de reproducció. Per fer això en el codi cal afegir estructura
La funció de reproducció (gremi, SONG) {
Const ServerQueue = queue.get (guild.id);
If (! Cançó) {
ServerQueue.VoiceChannel.Leave ();
queue.delete (guild.id);
tornar;
}
}
Jugar comença a utilitzar la funció PlayStream () i l'enllaç especificat a la pista.
Const Dispatcher = ServerQueue.Connection.PlayStream (YTDL (Song.url))
.en ( 'Fi', () => {
Console.log ( 'Música ha acabat!');
// elimina la cançó final de la cua
serverqueue.songs.shift ();
// nou fa que la funció de reproducció amb la següent cançó
Play (Guild, Serverqueue.songs [0]);
})
.en ( 'error', error => {
Console.error (Error);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
Si voleu afegir una funció de salt cançó, per exemple, quan vostè decideix jugar una llista de reproducció, primer s'encarregui de l'ordre apropiada, i després afegir un fragment d'aquest tipus:
Funció de salt (Missatge, Serverqueue) {
(! Message.member.voiceChannel) si el retorn Message.Channel.send ( 'Vostè ha d'estar en un canal de veu a la música parada!');
Si (Serverqueue!) Tornar Message.Channel.send ( 'No hi ha cap cançó que pugui saltar!');
ServerQueue.connection.dispatcher.end ();
}
Aproximadament el mateix esquema també funciona la funció de parada, però el bloc amb el codi adquireix un aspecte lleugerament diferent:
FUNCIÓ STOP (Missatge, Serverqueue) {
if (! Message.member.VoiceChannel) Tornar Message.Channel.send ( '
Ha d'estar al canal de veu per aturar la música! ');
ServerQueue.Songs = [];
ServerQueue.connection.dispatcher.end ();
}
Tinguem en compte que la informació donada prèviament és adequat exclusivament per a aquells usuaris que ja estan familiaritzats amb el llenguatge JavaScript o només es dedica a estudiar i va decidir crear un robot musical. Si vostè no pròpies habilitats en general i dels blocs especificats amb el codi no es diu res en absolut, només ha de inserir el codi font complet a l'arxiu, en lloc dels missatges de el bot en rus (que estan entre cometes) i guardar el canvia. Tot el codi font té aquest tipus:
Const Discord = requereix ( 'discord.js');
{const
prefix,
simbòlic
} = Require ( './ config.json');
const YTDL = requereix ( 'YTDL-CORE');
Const = new Client discord.client ();
Const cua = Nou mapa ();
Client.ONCE ( 'Ready', () => {
Console.log ( 'A punt!');
});
Client.Once ( 'tornar a connectar', () => {
Console.log ( 'tornar a connectar!');
});
Client.ONCE ( 'desconnexió', () => {
Console.log ( 'Desconnecta!');
});
Client.on ( 'missatge', asíncron de missatges => {
si retorn (message.author.bot);
si (Message.content.startSwith (Prefix)!) return;
Const ServerQueue = Queue.Get (Message.Guild.ID);
si (Message.Content.startSwith ( `$ {prefix} play`)) {
EXECUTE (Missatge, ServerQueue);
tornar;
} Else if (message.content.startswith ( `$ {prefix} Skip`)) {
SKIP (Missatge, ServerQueue);
tornar;
} Else if (message.content.startSwith ( `$ {prefix} stop`)) {
Stop (Missatge, Serverqueue);
tornar;
} Else {
Message.Channel.send ( 'necessita introduir un comandament vàlid!')
}
});
Async executar la funció (MISSATGE, SERVERQUEUE) {
const args = message.content.split ( '');
Const VoiceChannel = Message.Member.VoiceChannel;
Si el retorn Message.Channel.send ( 'Vostè necessita estar en un canal de veu per reproduir música!') (VoiceChannel!);
const Permisos = VoiceChannel.permissionSFOR (Message.Client.user);
If (! Permissions.has ( 'Connectar') ||! Permissions.has ( 'parlar')) {
Tornar Message.Channel.send ( 'I Need els permisos per unir-se i parlar al seu canal de veu!');
}
Const Songinfo = await ytdl.getinfo (args [1]);
Const Cançó = {
Títol: Songinfo.title,
URL: Songinfo.Video_URL,
};
If (! Serverqueue) {
Const QueueContruct = {
TextChannel: Message.Channel,
VoiceChannel: VoiceChannel,
Connexió: NULL,
Songs: [],
VOLUM: 5,
Jugar: És cert,
};
queue.set (Message.Guild.ID, QueueContruct);
queuecontruct.songs.push (SONG);
try {
connexió var = voicechannel.join await ();
queuecontruct.connection = Connexió;
Play (Message.Guild, Queuecontruct.songs [0]);
} Catch (ERR) {
Console.log (ERR);
queue.delete (Message.Guild.ID);
Tornar Message.Channel.send (ERR);
}
} Else {
ServerQueue.Songs.push (Song);
Console.log (Serverqueue.songs);
Tornar Message.Channel.send ( `$ {} Song.title s'ha afegit a la cua de`!);
}
}
Funció de salt (Missatge, Serverqueue) {
si (message.member.voiceChannel!) Tornar Message.Channel.send ( 'Vostè ha d'estar en un canal de veu per aturar la música!');
si (ServerQueue!) Tornar Message.Channel.send ( 'no hi ha cançó que pugui Saltar!');
ServerQueue.connection.dispatcher.end ();
}
FUNCIÓ STOP (Missatge, Serverqueue) {
si (message.member.voiceChannel!) Tornar Message.Channel.send ( 'Vostè ha d'estar en un canal de veu per aturar la música!');
ServerQueue.Songs = [];
ServerQueue.connection.dispatcher.end ();
}
La funció de reproducció (gremi, SONG) {
Const ServerQueue = queue.get (guild.id);
If (! Cançó) {
ServerQueue.VoiceChannel.Leave ();
queue.delete (guild.id);
tornar;
}
Const Dispatcher = ServerQueue.Connection.PlayStream (YTDL (Song.url))
.en ( 'Fi', () => {
Console.log ( 'música va acabar!');
serverqueue.songs.shift ();
Play (Guild, Serverqueue.songs [0]);
})
.en ( 'error', error => {
Console.error (Error);
});
dispatcher.setvolumelogarithmic (serverqueue.volume / 5);
}
CLIENT.LOGIN (Token);
Un cop completat, és millor per reiniciar el robot, després de la qual cosa es pot anar al seu servidor, connecti amb el canal de veu i d'introduir qualsevol ordre de la interacció, comprovant com reaccionar davant el bot.
Si la variant anterior del bot no és adequada per a vosaltres, podeu trobar els codis d'origen al mateix github i copiar-los al vostre ordinador. El principi de registre i el llançament continua sent el mateix, de manera que si cal, simplement editeu el codi acabat i, a continuació, procediu a provar el bot.
En aquest article, no vam afectar la descàrrega d'un bot a l'allotjament, distribuir-lo entre altres usuaris, creant un avatar i l'ús de llocs oberts, des d'on es pot autoritzar. Tot això és processos separats que només s'han de comprometre quan hàgiu perforat la vostra habilitat per crear bots i estan preparats per distribuir projectes a la xarxa.