[DISCORD.JS] PlayFile ne fonctionne pas !

205817
,

Bonjour,

Voila je rencontre un petit problème avec mon code. Il se trouve que je n'arrives pas à faire fonctionne PlayFile correctement.
Mon Bot, dès qu'il est prêt, il se met automatiquement dans une chaîne vocale (Et il y reste comme convenu).

Lecture d'un fichier .wav

Voici mon code actuel :

client.on('ready', () => {
    console.log('L\'Aubergiste est là !')
    const channel = client.channels.get("*ID DE MON CHANNEL*");
    if (!channel) return console.error("The channel does not exist!");
    channel.join().then(connection => {
        // Rejoint la taverne
        console.log("Taverne rejointe.");
    }).catch(e => {
        // Impossible de rejoindre la taverne
        console.error(e);
    }); 
});

client.on('voiceStateUpdate', (oldmember, newmember)=>{
    let oldvoice = oldmember.voiceChannel;
    let newvoice = newmember.voiceChannel;
    if (oldvoice && newvoice && oldvoice.id != newvoice.id) {
        try {
            playFile(newUserChannel,'./bienvenue.wav');
        } catch(error) {
            console.error(error);
        }
    } 
});

Ce que je veux

Dès qu'un utilisateur entre dans le chat vocal, j'aimerais que mon bot lise un simple fichier .wav...

Ce que j'obtiens

J'ai essayé déjà de formuler différement playFile(newUserChannel,'./bienvenue.wav'); mais il se trouve que mon problème persiste. Cela débauche toujours sur la même erreur : « playFile is undefined ».

► Pourtant mon fichier est bien à la racine (Afin d'éviter d'autres erreurs au cas où).

J'ai installer bien tous les packages nécessaires mais sans succès.

Quelqu'un aurait une solution ?

Merci d'avance,
Bien Cordialement.

Simon

7 Réponse

17162
,

Bonjour.
Ton problème semble se situer au niveau de l'importation du module, il serait donc plus judicieux que tu nous montre également la partie qui concerne l'importation/inclusion du module, soit en général le haut du fichier.

205817
,

Bonjour Lartak,

Veux-tu parler de ça ?

const Discord = require('discord.js')
const client = new Discord.Client()
const tokenBot = '*MON TOKEN*';

const CMDS = require('./commands/commands.js') /* Fichier des commandes pour mon bot */
const INTERRACT = require('./interractions/interractions.js') /* Autres interractions possibles avec mon bot */

Je penses normalement que playFile fait directement parti de discord.js si je ne me trompe pas ?

17162
,

As-tu bien regardé dans la documentation ?
Exemple :

// Play files natively
const broadcast = client.createVoiceBroadcast();

voiceChannel.join()
  .then(connection => {
    broadcast.playFile('C:/Users/Discord/Desktop/music.mp3');
    const dispatcher = connection.playBroadcast(broadcast);
  })
  .catch(console.error);

Source: VoiceBroadcast.
Comme tu peux le voir, playFile ne s'utilise pas directement, mais sur un objet parent.
Pour faire simple, playFile n'est pas un objet, mais une méthode.

205817
,

Merci Lartak pour ta réponse, mais malheureusement cette solution affecte uniquement l'entrée du bot sur un salon vocal.

Cependant je cherche à jouer un son quand c'est l'utilisateur qui rejoint le canal vocal où se trouve le tavernier.

Du coup, impossible pour moi d'utiliser :

const dispatcher = connection.playBroadcast(broadcast);

Merci d'avance. :)

205817
,

En fait voici un peu près ce que je cherches avec ta méthode mais adapter à ma situation :

voiceChannel.userJoined().then(connection => {
  // Joue le son quand un utilisateur rentre sur le salon:
  const dispatcher = connection.playFile('./file.mp3');
});
17162
,

Ce n'était qu'un exemple.
Tu as par exemple aussi :

Play the given file in the voice connection.

// Play files natively
voiceChannel.join()
  .then(connection => {
    const dispatcher = connection.playFile('C:/Users/Discord/Desktop/music.mp3');
  })
  .catch(console.error);

Source: VoiceConnection.
Dans tous les cas, comme tu peux le voir, playFile ne s'utilise pas directement, mais en tant que méthode d'un autre objet.

205817
,

Ça ne fonctionne pas, la librairie DiscordJS est en carton ! J'ai perdu 3 soirées de ma vie pour rien.

Merci quand même.. :)