Function repeter 2 fois

Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -

bonjour,

// This will use the demo backend if you open index.html locally via file://, otherwise your server will be used
let backendUrl = location.protocol === 'file:' ? "https://tiktok-chat-reader.zerody.one/" : undefined;
let connection = new TikTokIOConnection(backendUrl);

// Counter
let viewerCount = 0;
let likeCount = 0;
let diamondsCount = 0;
let pv = 10;

// These settings are defined by obs.html
if (!window.settings) window.settings = {};

$(document).ready(() => {
    $('#connectButton').click(connect);
    $('#uniqueIdInput').on('keyup', function (e) {
        if (e.key === 'Enter') {
            connect();
        }
    });

    if (window.settings.username) connect();
})

function connect() {
    let uniqueId = window.settings.username || $('#uniqueIdInput').val();
    if (uniqueId !== '') {

        $('#stateText').text('Connecting...');

        connection.connect(uniqueId, {
            enableExtendedGiftInfo: true
        }).then(state => {
            $('#stateText').text(`Connected to roomId ${state.roomId}`);

            // reset stats
            viewerCount = 0;
            likeCount = 0;
            diamondsCount = 0;
            updateRoomStats();

        }).catch(errorMessage => {
            $('#stateText').text(errorMessage);

            // schedule next try if obs username set
            if (window.settings.username) {
                setTimeout(() => {
                    connect(window.settings.username);
                }, 30000);
            }
        })

    } else {
        alert('no username entered');
    }
}

function test(data){
    if (data.giftName == 'Rose'){
        pv--;
        console.log(pv)
        $('#pv').html(`${pv} PV`)
        $('#bar').val(pv)
        // document.getElementById('animal').style.marginTop = "2%";
        //         setTimeout(() => {
        //             document.getElementById('animal').style.marginTop = "1%";
        //             var audio = new Audio('pig.wav');
    //audio.play();
     //           }, 50);
    }else if (data.giftName == 'TikTok'){
        pv--;
        $('#pv').html(`${pv} PV`)
        $('#bar').val(pv)
       // document.getElementById('animal').style.marginTop = "2%";
       // setTimeout(() => {
       // document.getElementById('animal').style.marginTop = "1%";
       // var audio = new Audio('pig.wav');
    // audio.play();
     //   }, 50);
    }
    
}


// Prevent Cross site scripting (XSS)
function sanitize(text) {
    return text.replace(/</g, '<')
}

function updateRoomStats() {
    $('#roomStats').html(`Viewers: <b>${viewerCount.toLocaleString()}</b> Likes: <b>${likeCount.toLocaleString()}</b> Earned Diamonds: <b>${diamondsCount.toLocaleString()}</b>`)
}

function generateUsernameLink(data) {
    return `<a class="usernamelink" href="https://www.tiktok.com/@${data.uniqueId}" target="_blank">${data.uniqueId}</a>`;
}

function isPendingStreak(data) {
    return data.giftType === 1 && !data.repeatEnd;
}

// viewer stats
connection.on('roomUser', (msg) => {
    if (typeof msg.viewerCount === 'number') {
        viewerCount = msg.viewerCount;
        updateRoomStats();
    }
})

// like stats
connection.on('like', (msg) => {
    if (typeof msg.totalLikeCount === 'number') {
        likeCount = msg.totalLikeCount;
        updateRoomStats();
    }

    if (window.settings.showLikes === "0") return;

    if (typeof msg.likeCount === 'number') {
    }
})

// Member join
let joinMsgDelay = 0;
connection.on('member', (msg) => {
    if (window.settings.showJoins === "0") return;

    let addDelay = 250;
    if (joinMsgDelay > 500) addDelay = 100;
    if (joinMsgDelay > 1000) addDelay = 0;

    joinMsgDelay += addDelay;

    setTimeout(() => {
        joinMsgDelay -= addDelay;
    }, joinMsgDelay);
})

// New chat comment received
connection.on('chat', (msg) => {
    if (window.settings.showChats === "0") return;
})

// New gift received
connection.on('gift', (data) => {
    if (!isPendingStreak(data) && data.diamondCount > 0) {
        diamondsCount += (data.diamondCount * data.repeatCount);
        updateRoomStats();
        test(data);
    }

    if (window.settings.showGifts === "0") return;
})

// share, follow
connection.on('social', (data) => {
    if (window.settings.showFollows === "0") return;

    let color = data.displayType.includes('follow') ? '#ff005e' : '#2fb816';
})

connection.on('streamEnd', () => {
    $('#stateText').text('Stream ended.');

    // schedule next try if obs username set
    if (window.settings.username) {
        setTimeout(() => {
            connect(window.settings.username);
        }, 30000);
    }
})

**je veux que la "function" test ce répete un fois**

en utilisent cette api c'est la premiere foix que je rencotre ce bug 

**j'obtiens j'obtiens la "function" en double **

la variable pv donc pv--; = a -2 aulieux de -1
 


Windows / Chrome 107.0.0.0

A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

pourquoi ne pas l'appeler deux fois?

0
Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 

Pour que la fonction s'exécute correctement elle doit être appeler qu'une fois

Pour que la variable pv perde -1 et pas -2

Cordialement 

Jessy.L

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 

tu peux alors dupliquer la ligne pv--;

0
Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Je ne souhaite pas avoir moins deux mais moins un mais ma function et exécuter deux fois par erreur  Alors que pourtant dans mon code je l'appelle qu'une fois

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

Commence par remplacer la ligne de code :

 $('#connectButton').click(connect);

par

 $('#connectButton').click(function(){
    connect();
  });

Puis vide bien le cache de ton navigateur avant de reessayer.

Si le souci persiste, rajoute des console.log  dans ton code pour savoir quel code est exécuté exactement...


0
Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 

Merci de votre réponse mais sa ne marche toujours pas

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 

As-tu mis des console.log dans ton code ?

0
Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

J'ai déjà mis des consoles log  La variable et bien soustraites de moins 1 mais elle s execute 2 fois donc moins 2

0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 

As tu mis un console.log dans la fonction 

connection.on('gift'   
pour voir si elle n'est déclenchée qu'une seule fois ?

Puis un autre dans le IF de cette fonction ?

La soustraction se fait deux fois nous dis tu ..   les deux en même temps ou une au chargement de la page .. puis une autre ensuite suite à une action de ta part ?

0
Jessy_lg27 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 

Oui la condition gift et bien exécuté aussi deux fois, NonLa variable n'est pas soustraite Chargement de la page elle s'exécute de fois compte la condition est remplie

0