Function repeter 2 fois

Fermé
Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 - Modifié le 12 nov. 2022 à 12:05
Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 - 13 nov. 2022 à 17:47

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

2 réponses

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
12 nov. 2022 à 13:23

bonjour,

pourquoi ne pas l'appeler deux fois?

0
Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 1
Modifié le 12 nov. 2022 à 14:05

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 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476 > Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022
12 nov. 2022 à 14:34

tu peux alors dupliquer la ligne pv--;

0
Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 1 > yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
12 nov. 2022 à 14:41

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 nov. 2022 à 16:04

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 jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 1
12 nov. 2022 à 20:24

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

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022
12 nov. 2022 à 22:25

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

0
Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 1 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
13 nov. 2022 à 16:13

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 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Jessy_lg27 Messages postés 12 Date d'inscription jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022
13 nov. 2022 à 17:32

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 jeudi 5 août 2021 Statut Membre Dernière intervention 13 novembre 2022 1 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
13 nov. 2022 à 17:47

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