Nightbot Counter

One Man’s attempt at making a scoreboard for beer hockey

I managed to create a Counter which can be used for any number of things. I am using it as a scoreboard for beer league hockey I play. (Technically I am using three different counters. One for a score for each team, and 1 for the period of the game) But this could be used as a Bad Joke counter, or a Death Counter, or any other things. This counter is set and updated Via Nightbot commands. And then displayed within the Stream on a local HTML page.

You can create any number of Keys (Counters you want) with this API.

The Counter Site
https://counterapi.dev/ API Main Website
Endpoints | Counter API API EndPoints

API URL

name required description
name yes Namespace for the counter
key yes Counter name
https://api.counterapi.dev/v1/**Name**/**Key**/             -Get Value of Key  //NOTE There is a 60 second cache on Get Values
https://api.counterapi.dev/v1/**Name**/**Key**/UP           -Increment Value of Key by 1
https://api.counterapi.dev/v1/**Name**/**Key**/DOWN         -Decrease Value of Key by 1
https://api.counterapi.dev/v1/**Name**/**Key**/UP           -Increment Value of Key by 1
https://api.counterapi.dev/v1/**Name**/**Key**/set?count=1  -Set Value of Key to Number specified (Can not be Zero)

//To set a Count to Zero. You can set the Key to ONE. Then Decrease the value of the key

Nightbot Commands

The Following is NightBot code. You add this to a “Nightbot” message, and running it will update the count.

Player 1 has Scored/Leveled/Died. The Current count is $(eval a=$(urlfetch json https://api.counterapi.dev/v1/**Name**/**Key**/); a.count)

This code can show you current count of the Count.

The Current Value of the Count is $(eval a=$(urlfetch json https://api.counterapi.dev/v1/**Name**/**Key**/); a.count)

This Code can be used to set a Count to Zero
Reset Count $(eval a=$(urlfetch json https://api.counterapi.dev/v1/**Name**/**Key**/set?count=1);) $(eval b=$(urlfetch json https://api.counterapi.dev/v1/**Name**/**Key**/down); )

HTML CODE
Below is a Simple HTML Page that will display the Value of the Count. You can add this an Overlay on your stream.

<p class="count" id="count"></p>

    
<script>
        async function pollAPI() {
            const endpoint = 'https://api.counterapi.dev/v1/**Name**/**Key**/';
            try {
                const response = await fetch(endpoint);
                const data = await response.json();
                console.log('API Response:', data); // Log the raw response for debugging
                
                // Update the count using the correct key
                if (data && typeof data.count !== 'undefined') {
                    document.getElementById('count').textContent = data.count;
                } else {
                    document.getElementById('count').textContent = 'No count found in response.';
                    console.error('Unexpected response format:', data);
                }
            } catch (error) {
                document.getElementById('count').textContent = 'Error!';
                console.error('Error polling API:', error);


            }
        }
       
        // Poll the API every 5 seconds
        setInterval(pollAPI, 5000);

        // Fetch the count immediately when the page loads
        pollAPI();
    </script>