#dev-chat

1 messages Β· Page 29 of 1

willow wyvern
#

done

pulsar willow
#

Time to ditch cloudflare. I've had enough of this with 30+ domains under management.

#

Even with paid plans, there is no predictability on how they will throttle your traffic.

steady iron
#

@broken coyote yes, just like that!

gaunt orchid
#

With my custom widget I have several sound-input fields (for followers, subs, ...), that works too but I can not change the volume. With <audio volume = "0.1" ...> but also with <source volume = "0.1" ...> the volume does not change. Where is my mistake?

#

No space between volume="0.1"

#

??

broken coyote
#

vid.volume = soundVolume * .01;

#

there is what i normally use

sharp island
#

Putting volume="0.1" in the html should work fine.

#

AKA <audio src="myfile.mp3" volume="0.1"></audio> should be at 10%

#

MrBoost's solution is what I use when I'm using a slider to control the volume (I set the slider from 0 to 100, then math it later)

gaunt orchid
#

I have this Code in the Java function <audio id="audio" playsinline autoplay volume="0.1" ><source id="alertsound" src="{{followerSound}}" type="audio/mp3"></audio>... The sound is played but at 0.1 the volume is just as loud as at 1

median sigil
#

Hi I am wondering if anyone has a custom api I can use that displays my local time in the 12h format in a chat message ty for the help

viral patrol
#
document.getElementsByTagName('audio')[0].volume = {{videoVolume}};
median sigil
#

@viral patrol I was hoping for example - !time and response is 2:23pm

viral patrol
#

Oh, so you want a chat command

median sigil
#

ok tyvm for the help

viral patrol
#

np!

hollow ledge
#

Currently not seeing my XHR requests in console when trying to debug?

    if (typeof obj.detail.event.itemId !== "undefined") {
        obj.detail.listener = "redemption-latest"
    }
    const listener = obj.detail.listener.split("-")[0];
    const event = obj.detail.event;

    if (listener === 'redemption') {
          $.ajax({
            url: 'URLHERE',
            type: 'POST',
            data:'',
        }); 
    }
});```

Sample snippet of my code. Within a custom widget. Was working fine after the last time I reached out since it was just an htaccess issue on my end.. now I'm not even seeing the XHR request in console
broken coyote
hollow ledge
#

What the hell...

#

I literally don't :/

broken coyote
#

so when doing a test redemption you dont see it under network?

hollow ledge
#

Correct. That's how I was able to track down my issue last time was using the network tab.

well... I literally changed nothing since I sent my message, I started photoshopping images and setting my sub variations and then bam, now I see it... I sat here for 10 minutes staring at the console in another window and it never populated.

charred tundra
#

question about custom wireframes for bit cups: I have a SVG line to use, but I'm not 100% sure how to convert that into wireframe coordinates. is there a tool I can use to do a quick conversion or is there a method for this?

charred tundra
#

haha I'd just found that convo annedoLOL

#

thank you πŸ‘€

charred tundra
#

is the endless spinning on hype cups normal annedoShake still doing it even when I switch back to the default cup to figure out if it's me or the editor causing issues

#

just gonna refresh and hope that works annedoEy

charred tundra
#

does the hypecup require an image to work? I have a dynamic widget to place on top of it and any non-default image seems to make the bits ignore the cup completely and also shift where the cup sits in the widget FeelsWutMan

pulsar willow
#

I would like to make a command to list games the streamer has played already as well as a status such as finished, on going, new/not played game, or suggested. i would have 1 command open to everyone like !gamelist that will just list the games and show status and then have ones for mods that i can "!gamelistadd" where it will add the current game to the list or "!gameliststatus finished" to change the status. I assume it would need to use some sort of api to allow all the commands to use the same list so thats why i post here but i have no idea where to start with this command. please @ me if you can offer any help!

charred tundra
#

Firstly you'd need a place to store the historical data anneThinking

pulsar willow
#

yea, i tried pastebin api but i cant write to it and it only gives me one line at a time

charred tundra
#

yep, you'd have to set something custom up or hope @mild cipher has something up his sleeve

pulsar willow
#

i barely know how apis work so i cant really do anything custom like that yet xD

charred tundra
#

you can always pay someone to do it for you πŸ˜ƒ otherwise you can learn or hope it's a feature enough people want that someone implements it

pulsar willow
#

i mean i have ways around it, its just not as cool and im just trying to learn as i go so i figured id try

charred tundra
#

yep! first step here is to learn how to set up a writable database. lots of options and tutorials out there annedoEy

pulsar willow
#

thanks

pulsar willow
#

Hi! Looking for some help on usage of the bot variable? is it the right place?

#

is there a place?

viral patrol
#

Hi!

#

How can I help you?

pulsar willow
#

@viral patrol oh nice!! thanks for answering! I'm trying this in a !command : ${count cntrCNT + ${channel.viewers}} to increment a counter by the amout of viewers... it doesn't show the result and inc the cntr.. it just shows.... heeee... this? I mean Β« Amount of viewers : 5 ; total since last count: ${count cntrCNT + ${channel.viewers}}

#

doesn't show OR inc the cntr, sorry

viral patrol
#

Hmmm. I will have to take a look into that. Maybe it doesn't like the space after +?

pulsar willow
#

@viral patrol all the spaces??

viral patrol
#

Ohh. I am so sorry. I got no pings from discord

#

Just checked that. It just shows me a command text, not evaluating it

#

Maybe count can't have nested calls?

steady iron
#

For those who want to catch a specific command and an argument (this one specifically for !so <name>), and validate it so only mods/broadcaster can do it, I added this in the JS part of the Custom widget:

#

const listener = obj.detail.listener.split("-")[0];
const event = obj.detail.event;
var command = event["data"]["text"].split(" ")[0];

  var badge1 = event["data"]["badges"][0]["type"];
  var badge2 = event["data"]["badges"][1]["type"];
  var badge3 = event["data"]["badges"][2]["type"];

  if (listener === 'message' && command === '!so' && ( badge1 === 'moderator' || badge2 === 'moderator' || badge3 === 'moderator' || badge1 === 'broadcaster' ) ) {
  var soname = event["data"]["text"].split(" ")[1];
  
  console.log(event["data"]["badges"][0]["type"]);
    addEvent('shoutout', 'Shoutout', soname);
  console.log(soname);
}
viral patrol
steady iron
#

Very cool!

#

It is my first time messing with custom widgets, and I had to undust my js, thanks for sharing that, it does look cleaner

pulsar willow
#

@viral patrol anyway to know if a cnt can be inc with a var in the bot ?

viral patrol
#

It can be just like you wrote but I am not sure if you can nest anything within it

#

@steady iron I totally recommend you our github repo, you can find a lot of examples there

steady iron
#

Much appreciated, I'm a total noob on this, so that will help a lot

shell tree
#

Is there anyway to keep track of invidual stream chat stats? Who sent how many messages, what emotes were used that stream, how many messages sent in that stream, etc?
Right now I just log the entire stream every stream then search identifiers to find this info but it becomes tedious. AKA 4,000 lines of chat sent in an 8hr stream would be 8.3 messages sent a minute, searching for, say, LUL, the emote and seeing how many times it sent, or say searching for 'Mitch' to see how many messages I sent

mild cipher
#

You can use something like https://github.com/jdpurcell/RechatTool to download the chat log of a VOD instead of tracking it yourself, but if you mean prettified results without doing any of the processing yourself, then probably no.

SE has chat stats too (https://stats.streamelements.com/), and apparently an endpoint for it, but I haven't played around with it before so maybe someone else can pitch in (the docs are empty atm, https://docs.streamelements.com/reference/chatstats)

shell tree
#

Sorry for the super super late reply @mild cipher busy day, how would one use that RechatTool?

mild cipher
#

@shell tree Download the latest release (1.5.5) (the zip file) (https://github.com/jdpurcell/RechatTool/releases) and extract it somewhere, then open up command prompt whenever you extracted it, and run: RechatTool -D XXXXXXXXX - replacing the Xs with the ID of the VOD (i.e. the numbers on the end of the VOD link https://www.twitch.tv/videos/XXXXXXXXX)

You'll get two files, a plaintext of the chat log, and a JSON with more indepth information about each message, such as the sender's details, badges, username colours, etc. Emotes are also separated out for each message, so you could probably target each object that has a valid emoticons property, if you want to aggregate them, etc.

shell tree
#

Thanks!

pulsar willow
#

Hi! anyone knows about ${user} returning value of ${1} instead.. and anything to read about SE APi for dummies? I was sent in this channel by the CS! -Thanks

rugged rapids
pulsar willow
#

@rugged rapids ok and ${user} should return the !command sender right ???

rugged rapids
#

it should Displays the users Display name

pulsar willow
#

it displays ${touser}/${1} value...?

#

${user} is throwing a Cold Iced Beer at ${touser}!! Total beer threw since july 2019: ${count TRPbeerbashCNT} beers. returns: StreamElements Nightbot is throwing a Cold Iced Beer at Nightbot!! Total beer threw since july 2019: 13 beers.

#

user should be me, no?

rugged rapids
#

try ${sender} instead of ${user} so ${sender} is throwing a Cold Iced Beer at ${touser}!! Total beer threw since july 2019: ${count TRPbeerbashCNT} beers.

pulsar willow
#

@rugged rapids Thanks a lot!!!! πŸ˜ƒ

drowsy tinsel
#

Hello :)
I'm trying to give regs and subs their own unique bot welcome using RegEx, so when they come in and say "hi" or "hello" their command picks up their username and the "hi" or hello" and the command responds.

Is there a cheat sheet or rules sheet for using RegEx in SE commands. It seems SE don't follow the exact rules of RegEx. ie: username has to be [username], and then I can't use a quantifier to require a 8 characters to match exact.
My RegEx code:
(?i)^username (hi|hello)$ or
(?i)^[username]{8} (hi|hello)$
Will match: username hi or username hello

But in SE RegEx it must be:
(?i)(^[username][(hi|hello)]+$)
to work. But then the problem is, I can't limit the match to an exact username.
(?i)(^[username]{8}[(hi|hello)]+$) Should work, but its not.
So the SE RegEx code will work for username hi or anotheruser hi or any username that has any of the characters,

Thanks for any help

rugged rapids
#

The only thing I could find was that StreamElements is usig the google RE2 syntax. Maybe this helps or another code guru in here has better insight on this.

drowsy tinsel
#

Ahh ok, this should help, I'll do some poking with that. Makes sense its an offshoot of mainstream RexEx. Thanks! In the mean time, code gurus, don't hesitate to chime in. I'll let ya know if I figure it out.
Thanks

low sierra
#

We use golang. You can use https://regex101.com/ to write/test the regex (select golang on the left)

mild cipher
#

I'm curious, how does the username part of the regex work?

viral patrol
#

AFAIK there's no lookahead/lookbehind in RE2

#

Ohhh.

#

And I see that you used [username] In that case it will look for 1 character long letter, one of u, s, e, r, n, a, m, e

#

I think you are looking for something like [a-zA-Z0-9_]{4,25} hi

#

If you want to limit it to exact username, there's no need to use brackets, for example you can just use username (hi|hello)

drowsy tinsel
#

@mild cipher in the chat the username is the first string in the line so ifyou set a match for a specific username it will trigger with that username, the problem I'm having is getting it limited to a specific name. if I use the [] for match characters in bracket it mathces any of those letters.

@viral patrol close, Iwant to find the exact match. the [] were needed in SE to make it atleast work, and it does if a usename doesnt have any of the charaters, it wont trigger, bu t any of them and it will.

Its possible with RegEx but saying [username]{8} so all 8 have to match, but the {} wont work in SE

#

@viral patrol I tried just username first, it dodnt work at all, like an error failure.
Your example is what I started with

viral patrol
#

Wait... There's one more thing. You can't match actual username that is using the phrase

#

As the phrase after : is matched against RegEx

mild cipher
#

^ this is what I was confused about, the regex only works on the message itself, the username isn't visible to that πŸ€”

drowsy tinsel
#

Ok, Hopefully this will clear things up. Maybe I'm doing something odd. But on the left, it works if I type Hi on my username or any username with at least one of those letters.
On the right I changed the first match to all a's. a letter not in my username and it doesnt trigger.

#

Ignor the first "hi" at the top of the list, I forgot to clear the screen.

mild cipher
#

Is it maybe triggering because your username contains some letters that are also in hi/hello? What if you typed ahi?

drowsy tinsel
mild cipher
#

(For the aaaaaaaa username I meant)

drowsy tinsel
#

oh

#

I figured since we can use ${sender}, we'd be able to get to the senders name

mild cipher
#

It's not over yet! I have a workaround that you might be able to play with smile1

drowsy tinsel
#

Do tell whats your work around, I was hoping to avoid a certain keywork thing

#

Like ok username, say ayo when you come in. doesnt stop "anyone" from using it

mild cipher
#

1⃣ ) Create a paste on Pastebin using the following format for each of your custom messages:

:[thefyrewire] Greetings, Fyre!
:[ICU_Twitchin] Hi ICU, how's it going?
:[anotherusernamehere] Another message here.

2⃣ ) Save the paste and note the paste key (the alphanumeric string on the end of the link). Head to StreamElements and make a new command, like !hello or something. Paste this as the response and swap out the XXXXXXXX with your paste's key.

$(customapi.https://api.thefyrewire.com/twitch/pastebin/XXXXXXXX?filter=$(sender))

In short, what this is doing is using the sender's username as the filter, which in turn returns only the line that matches the username. If you have multiple lines with the same username, a random line is picked. So essentially you can have different possible responses each time for the same person.

3⃣ ) Add your regex at the bottom. I'd probably avoid anything too greedy because theoretically users might greet someone else (hey person, welcome on in) which could trigger it accidentally. I went with (?i)^(hi+|hey+|hello+)$ which gets each of hi, hey, hello as well as hiiiiiiiiii and heyy, etc, etc. Feel free to expand as you see fit. A somewhat lengthy user cooldown might also help reduce spam.

Done!

drowsy tinsel
#

Awesome! I will have to give that a try.
I wonder if I could figure out a way to use the quantifier [(hi+|hey+|hello+)]{2,5} to not trigger if the user said something like, Hi thefyrerwire this would be too long and not trigger. hmmmmm, Baby steps, lets see if I can get this working as is first, then break it.
Thanks @mild cipher! πŸ‘

mild cipher
#

Ah yes, good idea! Quantifiers would work well, I'm using those for my dad joke command, only messages less than 50 characters trigger it SeemsGood

loud stream
#

! Hellow. Now I am not using the API directly as such, merely adding an Iframe view to an Angular app ( I just want alerts, don't mind if its quick n dirty): Use Case is simply that I need to have the Overlays with alerts loaded, when I am out n about streaming, so I can have the sound play through Headset or Speaker so I notice that people do stuff.

No app has been capable of providing this, together with Chat and perhabs remote control. So I set out to throw my own stuff together.

I Chose angular, because it's just angular, however I am running into an issue where the IFrame is constantly reloading, which is a bit of an issue.
Any ideas or tips on what to do? Keep in mind, that I am not interested in re inventing the wheel, id rather the people with actual dev time on this project sat down and put together an amazing app, with everything that IRL streamers needed, but alas. Here I am πŸ˜ƒ

TL;DR: Anyone knows of issues with Iframing Overlays*, and got ideas on how to work around?

#

PS: Please feel free to @loud stream if you got idea

viral patrol
#

Oh. I think that this can be really problematic because of x-frame options which can prevent that

#

If you want to forward events to your endpoint you can just create a XHR call to your endpoint (via custom widgetonEventReceived or via alertbox (in main scope))

pulsar willow
#

is there a way to make a command that i can just type something IN TWITCH CHAT like !remotecommand the game is ${game} and it will print the game is [game name] where i dont have to make a custom command to do one thing one time. ${1} just prints the command. i tried to start user input inside a variable (obviously only using variables and not text) by using ${${1}} and not using start or end to the variable ie just typing game after the command would return the name of the game by emulating ${game} and that works for the most part. however i needed to remove a number off of a counter using !remotecommand count ${game} -1 (i just use the name of the game as the death counter name) and it returned 1 instead of the correct number of 4. i was told to post here so sorry for the confusing text, i just want some help making it better.

#

please ping me if you can help

#

okay what??? i have ${${1}} and this happened and i am so lost:
DankmanSixtyNine: !remote count thisisnotarealcounter 69
StreamElements: 2

#

i have never used that name for a counter before? does ${1} only use the first word?

rugged rapids
#

Try it with ${${1:}} cause {1} only takes the first word after the command which would be count here.

pulsar willow
#

i did the same command using that it it returns ${${1:}}

rugged rapids
#

Then I am sorry. We have to wait for a more experienced code guru who may have an idea on this.

pulsar willow
#

wait. ${1} does not only take 1st word. i have There is a ${random.1-100}% chance that >streamer< will ${1:}. and it does the whole message

mild cipher
#

Unfortunately the eval command (being able to parse commands on the fly without adding it as a command) is only available to the SE bot admins. But if you want to use the game name as a counter name, you could do $(count $(pathescape $(game)))

slender ice
tawny kiln
#

Heyho! Did anyone import the Odo Alerts to Streamelements yet or maybe can help me? Were pretty nice so i can go up to Streamelements with also my alerts! Greetings!

#

Got it so far all imported only the text font is wrong and didnt find the right setting :/

trim onyx
#

hey is that possible to make the social media auto tweet, tweet the title as well? (as a parameter there)

viral patrol
#

@slender ice Hi I think if you add this as alertbox (on top of your regular alertbox), change appear animation and disappear animation to none you can set text position and animation within widget config. Something like that:

#

I think this will take just few tries, but you will achieve everything without problems.

#

@tawny kiln I think that NoD will update their Odo Alerts package to be compatible with SE as well soon. They are doing great work with their other widgets, so hope it is just behind the corner.

tawny kiln
#

Ye @viral patrol got it so far and it works fine, just the font in the alert is wrong ;) if i fix that im fine with it =)

slender ice
#

@viral patrol thanks, I’ll give it ago in the morning

brisk marsh
high prism
indigo flume
#

@brisk marsh Just to point out, the SE-API is essentially a dictionary. If you are trying to pull the arrays back, you need to use the same key.

high prism
#

@indigo flume did only found normal api but never the kappa part thanks i will proberly be able to find a way to get it working now πŸ˜ƒ

slender ice
#

could someone with CSS knowledge do me a quick favour or at least tell me how to do it?

high prism
#

@indigo flume can't seem to find wat im doing wrong would you be able to help me

indigo flume
#

You need to authenticate with your bearer token prior to sending in a POST request to the API endpoint

#

with the channel ID, username and points

pulsar willow
#

is there a reason to do $(count $(pathescape $(game))) rather than just $(count $(game)) if i want to use the game name as a counter name

#

(please ping me)

viral patrol
#

@pulsar willow I think you need to use pathescape as counter cannot have spaces within name (but I wonder if pathescape is a good way to go as it can use entities instead of special characters and I am not sure if they are allowed either)

pulsar willow
#

thx

#

also is it possible to have a dif response from a command if there is no user input?

viral patrol
#

AFAIK you can use ${1:|"Default response"} (or without quotation marks)

#

But it is just a single parameter where you display/use user input and if one is not present it will use "Default response" as value of that

pulsar willow
#

thank you!

loud stream
#

The creation of custom listener to subscribe to said events, would make sense, if it wasn't because what I am looking for is my imbedded audio in my alerts.
Unless I'm missing something here.
I don't want to reinvent the wheel, I just want a source that can play the alert audio on my phone, while I can also read chat and perhaps utiliza OBS remote.

#

I am well aware of the implications of iframes and am not happy about the solution. But if there is another easy way for me to get the alert sounds and play them, without the iframe, I am all ears. If it was just for visual cues, I'd just read the stream elements bot posting in chat

drowsy tinsel
#

Hello,
I have an odd RegEx problem. I created a command to match hi, hey, and hello in chat with RexEx. It checks out on regex101.
But in chat it only triggers with hey and hello.

Things I troubleshooted with:
I've tried it with and without a quantifier
tried moving hi to a different place in the group
replaced hi with ha and ha works
added hill to the group and hill works as well

Ideas?

mild cipher
#

The top one works for me. Are you sure it wasn't on cooldown or something?

drowsy tinsel
#

Hey @mild cipher hi was the first one I tried, and just now dounble checked it with cooldowns at 0. still doesnt trigger with hi

#

ok.. wierd. instead of copy pasting the RegEx, from your awesome suggestion, I retyped it and it works. Must be a different hi on your machine? wierd right?

mild cipher
#

As long as it works now LULW

drowsy tinsel
#

πŸ‘ yup

sharp island
#

@loud stream The problem is that the audio part of the alert is part of the overlay, not the alert (otherwise variations wouldn't work at all).

loud stream
#

In other words : only solution is iframe or wait for enough feature requests that you guys incorporate it in the companion app

#

Thank you

sharp island
#

If you want the actual audio and the logic of variations and whatnot, yeah.

pulsar willow
#

Hi, I was hoping to get a Client ID and Secret for Oauth - I'm trying to automate some points functions for my channel

mild cipher
#

@pulsar willow hey there πŸ˜„ if you're only building it for your own channel and are able to keep secrets, the JWT token would give you everything you need.

But if you're interested in making an app then hit up @static wigeon who can give you access to the oauth2 beta.

proven minnow
#

Hey I am trying to get the
Events Rotator widget working but for tips it shows this

#

Its saying Amount00 Instead of $100

#

if I put like 5 dollars as the amount tho it works

#

@wooden pulsar

steady iron
#

I'm having trouble with something that seems very silly, related to showing letters on top of a video playing, any html/css/js wizard around with 15 min to help?

sharp island
#

What’s the issue? @steady iron

steady iron
#

Hi there @sharp island ! It seems while trying to explain it I rubberducked the issue and found a way around it OMEGALUL

sharp island
#

Rubberduck is the best tool

steady iron
#

basically it was about showing text on top of a video playing, but since I am using a function to animate the text first, I was missing a step to actually add the html with the animation to the HTML itself

viscid jay
#

@static wigeon is it posable to get access to oauth beta?

sharp island
#

Whoops

steady iron
#

Alright, so I confirm the new values for the text are being added, but I do not know what I need to do to trigger the animation coming from the css

viral patrol
#

If you want to trigger animation from CSS you can create another class just will have just that animation

.fancyanimation{
    animation:niceanimation 2s both;
}

and then toggle class by JS

$(selector).addClass('fancyanimation');
steady iron
#

the JS part is just what was missing πŸ˜„

#

thank you @viral patrol !

silk zinc
#

Curious if this is possible???? Looking to have a random text file read from a command in chat. Basically when you type in !(command) I want it to read a line from a text file that I have set up

rugged rapids
silk zinc
#

Does it have to be from pastebin? I only ask because i have a notepad document already set up from a previous bot i was using and hoping to just make the transfer and have streamelements pull it instead

cursive tinsel
#

Hello, I am just wondering if it is possible to have something for a command where you can have Random facts in chat or Quotes under a single Command or would I need to create a New command for each Quote or Fact?

rugged rapids
glass marsh
#

streamelemnts api?

rugged rapids
#

It is a custom API.

glass marsh
#

Why streamelemnts need an API

viscid jay
#

@static wigeon don't want to bug but is it possible to talk about getting access to oauth?

viral patrol
#

@silk zinc StreamElements widgets don't have access to files located on your computer so pastebin is the best way to go. Also - bot works even if your stream/pc is off, so this command will still work if it consumes pastebin input.

elfin viper
#

Hi, does anyone know of any docs for triggering tip/donation-alerts? πŸ˜ƒ

viral patrol
#

Hi! You can use emulator within overlay editor or you can emit an event via websocket connection

elfin viper
viral patrol
#

Check channel tittle and pinned posts here

elfin viper
#

@viral patrol sweet, thanks

loud stream
#

also Thank you @sharp island for the response ❀

sharp island
#

It's what we do. πŸ˜ƒ

strong orchid
#

is it possible to use fonts from dafont in the overlays?

viral patrol
#

You can use any font, but some of them have to be installed on your PC used for streaming. Just type font name in "Custom font" field and it should work

fossil python
#

"client_secret" - that is JWT Token?

viral patrol
#

In most cases it is, but JWT token allows somebody who has it to do almost anything within your account, so keep it safe

mild cipher
#

Is customapi broken for anyone else right now? I don't think variables are being parsed within the customapi variable

viral patrol
#

Seems the same I was about to report that πŸ˜‰

fossil python
#

@viral patrol yeah sure πŸ˜ƒ thx
I'm trying to integrate change points through my website (php) πŸ˜€

viral patrol
#

I think I can help you a bit with that

fossil python
#

oh i will be grateful πŸ˜ƒ

viral patrol
#
<?php
require('StreamElements.php');
if ($api = new StreamElements($userName, $jwtToken)) {
    $res = $api->getInfo();
    $api->points('username',5000);
}
fossil python
#

i have Twitch-oAuth on my website, but SE-oAuth is harder lookinplayLUL i think so lookinplayVoidPeka

viral patrol
#

Oh, this stuff has no oAuth (i coded it long time ago and I was not playing with PHP since that)

#

And this is composer.json file for that as it requires GuzzleHTTP library

fossil python
#

but this stuff can access the account and change point values? (StreamElements.php)

viral patrol
#

It does.

fossil python
#

Thanks πŸ˜ƒ
It will make my life easier

viral patrol
#

I was using that for wheel of fortune sub alert to automatically dispatch points to winning users and it worked like a charm

fossil python
#

I am working on something similar lookinplayCoolHeart

elfin viper
static wigeon
#

_id is a constant

elfin viper
#

@static wigeon Thank you! πŸ˜ƒ

mystic relic
#

@viral patrol do you have an example command response to trigger a random line from a pastebin? (was reading and saw you mentioned it) IE. have a command be !quote and then the response be a random line (quote) from a pastebin

viral patrol
mystic relic
#

@viral patrol thank you so much, will read more now!

thorn river
#

is there a way to add current follower/sub count to their respective alerts?

wheat jackal
#

is there a way to make alert (alertbox) start instantly and continue running in the background when page loads, but only show up when alert is triggered?

#

what I'm trying is to match the looped video, so it would be seamless transition

little pine
#

just did a clean install of all my droivers and still have a propol

#

proplom

#

drivers

zenith folioBOT
thorn river
#

Can anybody tell me why a .png would show up fine in the overlay editor and the launch page but not actually show up in obs?

#

this is in regards to a custom alert

thorn river
pulsar willow
#

Does anyone know how to Approve a Store Redeption via API?

thorn river
#

I guess nobody has run into my problem

mild cipher
#

@thorn river have you tried opening the overlay link as a regular browser tab and checking the console for errors?

thorn river
#

as in hitting the "Launch overlay" button from My overlays?

mild cipher
#

Yes, and open the link as a regular tab in your browser. Does the icon show?

thorn river
#

yes

mild cipher
#

But it still doesn't show in OBS?

thorn river
#

correct

mild cipher
#

Have you refreshed it? Is it cached or something maybe?

thorn river
#

It started working yesterday after a lot of poking, then I went to set a new icon for the subscriber alert, and basically copy it for the follower alert

#

I've cleared the browser source cache

#

It's driving me batty

mild cipher
#

Close OBS, go to your OBS shortcut and right click on it. Go to Properties and add --remote-debugging-port=9000 to the end of the target path. It'll look something like "C:\Program Files\obs-studio\bin\64bit\obs64.exe" --remote-debugging-port=9000, then start OBS again.

thorn river
#

done

mild cipher
#

Head to localhost:9000 in your browser. You should see a list of browser sources

thorn river
#

I see it

mild cipher
#

Icon still not there? Click into your overlay and check the console/network tab for any errors

thorn river
#

looks like I'm actually getting an "access denied" error from the image host

#

which makes slightly less sense

mild cipher
#

In that case your best bet would be to download the image separately and reupload it as an asset to SE or imgur or something and use that link

thorn river
#

it's actually on imgur

mild cipher
thorn river
#

and I though about having it uploaded to SE but I'm not sure how to call an uploaded image in the CSS

mild cipher
#

Add a regular image widget and select the uploaded image, then in the preview box on the left, right click on the image and copy the link address- that's the link to the uploaded asset, and you can reference that link in your code πŸ˜ƒ

thorn river
#

doooooope!

#

I'll give it a shot and update ya

mild cipher
thorn river
#

That worked a dream!

#

Thank you so much!

mild cipher
#

Awesome! DJ

hardy oar
#

Guess its not regarding the API in specific, But is the Stream Element alertbox working with websockets?

viral patrol
#

@hardy oar alertbox listens to same events that are dispatched via websockets

#

@thorn river imgur blocks external calls to their images to prevent abusing their service

thorn river
#

@viral patrol That would make sense if it wasn't just working this morning

viral patrol
#

If it got cached somehow OBS will display it (with a response 206 Cached as HTTP response)

#

But after expire-after it tries to call imgur again and then it is broken

#

especially if referrer is not present

thorn river
#

it did die when I cleared the cache to refresh to a new graphic

#

So I knew it had something to do with being cached, I just never imagined that IMGUR would block pulls like that

wheat jackal
#

I noticed that every time you upload new image(gif) it has it's own playtime, and aren't in sync. (those are same file that i uploaded 2 times)

wheat jackal
rugged rapids
#

Gifs are in a constant loop, once added they don't "stop" and "start" again afaik.

wheat jackal
#

but why are they in different constant loop timing

rugged rapids
#

yes.

#

No idea. cause they have not been added at the same time most likely.

wheat jackal
#

can i somehow make so both have same constant looping time?

#

i tried dragging both at the same time, didn't help

rugged rapids
#

Can you DM me the video please? I will try to make it work, but can't promise anything as these are gifs and always and constantly looping in the bakground even when hidden afaik.

rugged rapids
young saffron
#

is this the right place where i could commission someone for some code work?

lusty pivot
#

Can we get uploaded tip alert gif image link as a variable in custom css? just like {{name}}, {{currency}} and {{amount}}?

strong orchid
#

is there a way to make text go behind a transparent image for alerts? so the text appears as the image removes, sorry im new to all the css stuff

indigo flume
#
z-index: -1;
#

for the text

#
z-index: 1;

up to 3 I think you can place it

strong orchid
#

so i just add that to the custom css? or is there other stuff needed? im sorry for my stupidity

indigo flume
#
#text{
z-index:-1;
}```
#

if you are building your CSS, jsut add the z-index in your text class/id

#

and the same for the image

#

if you are manipulating the image via css

viral patrol
#

TIL: String.prototype.matchAll() doesn't work in OBS - it might help some of you in the future πŸ˜‰

real dune
#

im trying to make a follower widget where it displays the recent followers but with a flip in effect rather than a scroll.

i have the flip code but cant find a simple follower layout (like the default one) to edit, the custom widegt is useless to me here.

anyone know where i can get the code for it?

pure crescent
#

anyone know if the Spotify widget will ever come back?

real dune
#

Β―_(ツ)_/Β―

vapid iron
#

That's up to Spotify @pure crescent

pure crescent
#

this Spotify widget is still working, and it actually does exactly the same -- why can this guy still make it work tho?

mild cipher
#

Because he's an independent third party and not a company like SE. Just pray that Spotify doesn't catch wind of him πŸ˜›

pure crescent
#

really? lol ok

inland swift
#

Yo so i'm creating an overlay similar to shroud's one that you guys created but im wondering about the options available, so im sure mine wont be as complicated or even as good as your also mine has a simple idea but i wanna know can you loop the sub animation? if so, how
I can't find like a "loop" option

viral patrol
#

Shroud doesn't have alertbox, everything is written as Custom Widget(s). It is possible to create video tag with looped attribute within custom widget and it can stay there even if alert is complete

inland swift
#

Aha yeah so i don't know much coding that's why i created a web.m animation and literally just placed that as a 2nd alert box that goes over the first normal sub alert

#

works so far but i want it to continue the animation instead of fade out per se till the next sub etc

#

Or do i have to recreate all the work using CSS in a custom widget for that idea to work?

#

Like i basically want the the loop to continue for said WebM video till another sub/donation arrives thus cutting the loop and starting another one for the new sub etc

lament hamlet
#

hello, is it possible to get twitch username -> account id ?

winged mesa
inland swift
#

And tbh if there's no way around it than to make actual css code in the custom widget, where can i pay/hire someone to do it? i've got the design and animatino already

#

Would appreciate any help

viral patrol
#

@inland swift Yes. Only custom widget can do that. Alertboxes fade out after they role is done (to display alert). Custom widget is persistent and can display "latest sub" for way longer.

inland swift
#

Yes well can you point me towards maybe a cosing tutorial of how to do that or specifically where can i find someone to do it? Something like that haha or even just the parameters i should use .... πŸ˜„ @viral patrol

viral patrol
slender ice
#

So i've been watching Danucd recently and have noticed she's got something that her viewers can trigger with points they earn to play a sound on stream. only thing is i've never seen the command a user used to trigger that event? could someone help me with this or explain how its done?

rugged rapids
#

They maybe use the stream store page to trigger the sound.

slender ice
#

stream store found on streamelements?

slender ice
#

Thank you πŸ˜ƒ

slender ice
#

possible to make a custom variable for the custom commands section?

ashen trout
#

Hello, are all recipients of a mass community gift sub drop exposed in the websocket events?

lavish coral
#

is it possible to create sub-goals counted down with pictures as a custom widget? for example, there are three apples and when someone subscribed the apple is being eaten with some sound effects and animation. then there will be 2 more apples left for other subscribers. and when it finishes it turns out to how many apples have been eaten in total

#

but i don't wan't the apples, it's just an example

lavish coral
#

can someone help me create this widget?

viral patrol
#

There is already goal handling, so "just" animation and triggers are missing

lavish coral
#

Thank you so much
but how can I apply it to my streamelements overlay?

rugged rapids
#

Create a custom widget and add the matching fields in the editor. Json goes into the fields tab.

lavish coral
#

is it just a simple copy paste?

rugged rapids
#

yes.

lavish coral
#

thank you so much

silk zinc
#

Any reason when a goal is in condensed mode it doesnt show the progress bar color???

wooden widget
#

Hey guys - Quick question - Is it possible to have a Twitch chat command display a widget in my streamelements overlay?

viral patrol
wooden widget
#

Thanks @viral patrol - Can you walk me through this? I'm a bit of a noob when it comes to github and this sort of thing.

viral patrol
#

So this widget creates a simple quiz/poll for viewers. Poll can be started by streamer/mod. And there comes something you wanted to get. Once command and privileges are met It changes opacity of that widget, so it becomes visible for specified duration.

wooden widget
#

Okay - so if I want to have it display a webm video instead of a poll, how would I go about doing that?

viral patrol
#

If you have a video in .main-container then you should do something like that (I just took piece of that widget above)

#
window.addEventListener('onEventReceived', function (obj) {
        if (obj.detail.listener !== 'message') return;

        let data = obj.detail.event.data;
        let message = data['text'].toLowerCase();

        let user = data['nick'];
        let userstate = {
            'mod': parseInt(data.tags.mod),
            'sub': parseInt(data.tags.subscriber),
            'vip': (data.tags.badges.indexOf("vip") !== -1),
            'badges': {
                'broadcaster': (user === userOptions['channelName']),
            }

        };
        if (((userstate.mod && userOptions['managePermissions'] === 'mods') || userstate.badges.broadcaster) && message.startsWith(userOptions['startCommand'])) {
            if (message.startsWith(userOptions['startCommand']) && !isActive) {
                $(".main-container").fadeIn();
                time = userOptions['pollTime'];
                setTimeout(()=>{
            $(".main-container").fadeOut();
        },time*1000);
                return;
            }

        }
});
wooden widget
#

Feel like I am going cross-eyed just looking at that haha.

pulsar willow
#

hey i was talking to a obs support guy and they sent me to you

real dune
#

nope, they are looking into it

pulsar willow
#

wym

real dune
#

we are looking into it

#

they didnt send you here

pulsar willow
#

do u know when it will be fixed

real dune
#

yo, i need an egg head. i have a custom widget for my counter, can i have it play a video file (that i have uploaded to the se cloud) every time i update it?

eg
!win
video overlay plays
score gets updated

oblique trellis
#

gimme good news glenne

quartz gull
#

Sorry got a problem of my own :/. Why dont it run on bulkGifted ? if (event.type === 'subscriber') {
if (!includeSubs) return;
if (event.name === event.sender && event.bulkGifted )

oblique trellis
#

sad

quartz gull
#

yeah sorry. i would have helped if I knew the answer

broken coyote
#

@real dune egghead lol..... I have the video part. What is the score that needs up dated

real dune
#

😁 so my counter is already set up and working, using the custom widget and the bot counter widget, just need to know where to put the video code and how to link it with a file

proven minnow
#

Anyone how how to fix this or @wooden pulsar

broken coyote
#

So what u are wanting is if you do example !win, the video played and updates the counter correct

viral patrol
#

I think you wrote amount instead of {amount}

#

As AFAIK there's template variable replacement for bracketed keywords

real dune
#

yes @broken coyote

proven minnow
#

@viral patrol '

#

Its like this which is what is says the data text

viral patrol
#

try to add spaces maybe

real dune
#

video on top of counter as it updates

viral patrol
#

As nickname is replaced without problems

proven minnow
#

Nope still the same lx

#

I wanna say it only does it when 100 is the donation too

#

Because if I go into the data uptop and change it it works:?

broken coyote
#

@real dune how are you updating the counter now?

viral patrol
#

Oh. So I will leave it for @wooden pulsar πŸ˜‰

#

He is the best person to answer that πŸ˜‰

proven minnow
#

Yea @viral patrol if I change it from anything less than 100 it works

viral patrol
#

If he is out somehow, ping me tomorrow and I will take a look into code

proven minnow
#

I tried @ing him last week and never got a reply

#

:/

viral patrol
#

Give me few minutes then

proven minnow
#

All I know for sure is it breaks when over 100 it seems

real dune
#

!win @broken coyote

#

in chat

broken coyote
#

Ah ok. The widget I have will trigger on win as well. So it should do both at the same time

viral patrol
#

I found an issue, going to fix it in a moment @proven minnow

proven minnow
#

Oh sweet!

viral patrol
#

@proven minnow You can grab this widget once again and test it if it works for you

proven minnow
#

Do I need to just refresh it or go back to #widget-share and get it? @viral patrol

real dune
#

thanks buddy, will give it a try

viral patrol
proven minnow
#

kk thanks!

viral patrol
#

LMK if that fixed this issue

proven minnow
#

ok

viral patrol
#

Basically I am replacing $100 with $ 100

wooden widget
#

Okay - So I have a new question:
I have been able, thanks to a friend helping with the code, to get a video to play on a user command. So step 1 complete.
Step 2 - and my question, how can I have the video cover the width of the screen? The video is a 1920x1080 video, and as it currently stands, is only taking up the small section in the middle of the screen while it is on screen.

broken coyote
#

@wooden widget did u adjust the browser source in obs to 1920x1080?

real dune
#

@broken coyote i have the code added to the widget, how to i link the video from the se cloud?

broken coyote
#

Should be able to just select the video you won't on the left and add the command for it there.. just remember. It doesn't require a ! It will automatically add it

#

*you want

#

If it's already in your cloud. It should be there

real dune
#

i forgot to put the "fields" in 🀦

now that its set, the video wont show, and the text of the score wont come up

#

ok text is showing, but i have to have the widget super huge, any way to reposition the text?

quick wharf
#

@viral patrol - Another issue I noticed with that widget was it resetting on message events when "reset on events" is enabled (I totally forgot what this is called in the fields, I'm at work atm, so I don't have it in front of me). I've edited the code myself locally, but IDK if that was designed that way or not. Figured I'd mention it since I didn't see it anywhere hear in my search.

#

also @real dune - hi :p

real dune
#

.......

#

πŸ˜‚

wooden widget
#

@broken coyote yeah, I did - still didn't display across the bottom of the screen

broken coyote
#

Don't put the ! In

#

@real dune

real dune
#

ahhhhhhhhh SEheart

#

so how would i adjust the placement of the text?

broken coyote
#

Text?

real dune
#

actually dont worry about the text, can we adjust the placement of the video?

so it can be at the top, not at the bottom

broken coyote
#

im not gonna lie. im confused. u avalible to get in a voice channel?

real dune
#

yes sure

lavish coral
#

where can i find people who can create customized widgets?

wooden pulsar
#

@proven minnow @viral patrol Hello guys, i've just noticed the chat about my widget.
Did you managed to solve it?
@viral patrol If you find a fix i'm intrested to know co6Smile & Thx for your help πŸ˜ƒ

proven minnow
#

Its all good @wooden pulsar!

#

Thanks for the amazing widget!

viral patrol
#

@wooden pulsar in regex if you try to replace with $1 it replaces with it with block 1 from search pattern. So this is why it replaced with amount00 instead of $100. I just added space after dollar sign πŸ˜‰

wooden pulsar
#

Oh yeah πŸ˜ƒ Thanks

young saffron
#

anyone interested in taking a commission for some code work?

hardy oar
#

Not API related, but have anyone been able to get plain text from a browser source and add scrolling text to it?

quartz gull
#

how do I match a community gift in onEventReceived ? I tried this
if (event.type === 'subscriber') {
if (!includeSubs) return;

if (event.name === event.sender && event.bulkGifted === true) { ... }

but it doesn't match somehow. event being: event = obj.detail.event;

#

the initial gift thing that is

viral patrol
#

@quartz gull

.bulkGifted - if it is INITIAL event of community gift (${event.sender} gifted ${event.amount} subs to community)
.isCommunityGift - if it is one of community gifts train (${event.sender} gifted ${event.name} a sub as part of random giveaway!)

There is an example code covering what you are looking for here: https://github.com/StreamElements/widgets/blob/master/CustomCode.md (on the very bottom)

proven minnow
#

Hey @viral patrol I got another question about that widget I needed help with last time

#

There is a data choice for Gifted Latest and I thought it showed who gifted a sub most recently but it is showing who got a sub most recently is there a way to show it the 1st way

viral patrol
#

@proven minnow Find this part:

'subscriber-gifted-latest'        : ['amount', 'name', 'message'],

Replace with:

'subscriber-gifted-latest'        : ['amount', 'name', 'message', 'sender'],

And then you should be able to use {{ sender }}

proven minnow
#

Is that under fields @viral patrol

#

Oh wait I found it

viral patrol
#

LMK if that worked

proven minnow
#

Kinda

#

It is showing he gifted 5 subs instead of the most recent of 1

#

@viral patrol

viral patrol
#

The amount there is something else than gifted amount

proven minnow
#

I have {{ sender }} x{{amount}} Sub(s)

viral patrol
#

Basically it is who was gifted most recently. It is like {{name}} got gifted by {{sender}} and it was his {{amount}} month of sub

proven minnow
#

Is there a way to make it say "Sender gifted X amounts of Subs

#

or no

viral patrol
#

Unfortunately it is not possible there

proven minnow
#

mk

#

Could I use this code from it to make it work?

viral patrol
#

For some purposes - it could work, but it might not display proper data after widget reload

proven minnow
#

What would I replace with that to try @viral patrol

viral patrol
#

There is way more than replacing or just adding that (as there are other listeners that are working in the same time) and can overwrite this data.

civic stream
#

I'd like to set up a command that returns one specific users points. We want to get the user to 200k points so when we type !200k we would like it to return "@specificuser has 150,000 of 200k points". I do not want to have to have the users name after the chat command. I've tried changing $(user.points) to $(specificusername.points) but it just returns that in plain text.

viral patrol
#

Huh The only way I could think of is writing !200k specificuser I think we have nothing that will be able to use plain text username as user object.

#

(and this math for substraction - as I wrote before is hard because external resource writes everything above 100000 in exponential notation)

mild cipher
#

What if you maybe expressed it as a percentage?

viral patrol
#

$(user) has ${user.points} (${customapi.http://api.mathjs.org/v4/?expr=${user.points}%2F2000&precision=0}% of 200k) points!

#

@civic stream Maybe this response could be good for you? Remember that if you want to check specific user, you need to provide his username after !200k command

pseudo siren
civic stream
#

@viral patrol ooh, thanks for that, I'll give it a go!

#

Thank you, works well!

#

can you get it to return the user of the command's points if no user is specified in the command?

mild cipher
#

@civic stream here, this lets you fetch a single specific user's points, so you can have the command exactly as you described. The percentage is still cool though, so combined with lx's answer:

USERNAME has $(customapi.https://api.thefyrewire.com/streamelements/points/user/USERNAME?format=string) of 200k points (${customapi.http://api.mathjs.org/v4/?expr=$(customapi.https://api.thefyrewire.com/streamelements/points/user/USERNAME)%2F2000&precision=0}% of 200k) points!

Replace all the USERNAMEs with the specific user's name (there are three)

#

NB: Points are cached for ~10 minutes

viral patrol
#

I knew that!

mild cipher
civic stream
#

@mild cipher Wow! Thank you! I'll try to get this going asap. You're the best.

fleet eagle
#

How do I put custom CSS or whatever into overlays? Like I wanna make the stream goal look more snazzy, how can I do that? ; n ;

fleet eagle
#

i found one that i kinda like and i figured out how to do it, ignore me xD

proven minnow
#

Okay so I am using the custom rotating widget by @wooden pulsar and when I launch it now it shows nothing?

#

I cant seem to fix it @viral patrol or @mild cipher

#

I think importing my donations from stream labs broke it

#

Now even it I get a fresh version it doesn't work

#

It will show like one slide then crash

#

and not keep going or start again

wooden pulsar
#

@proven minnow Hey, can you send us a message of the error ?
Open the url in a browser press F12 (in chrome) to open developer toolbar. And go to the console tab.
If it crash you myst have a message in red

brisk marsh
#

Just curious if there's a limit to how many object pairs we could/should store out on the KVstore πŸ€”

mild cipher
#

What did you try doing to parse it? πŸ˜ƒ

#

Gotcha gotcha. To only return plain text you need to set the Content-Type to text/plain which is only possible server side, so you'll need something like PHP to do that. If you have somewhere you can host that script then you're good to go! You just need to do a CURL to the JSON, decode and echo back the key you're interested in. Don't forget to set the Content-Type header, and you might also need Access-Control-Allow-Origin: *

mild cipher
#

Here :)

<?php

// set the headers
header('Access-Control-Allow-Origin: *');
header('Content-Type: text/plain');

// access the endpoint
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'http://ip.jsontest.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close($ch);

// parse the json
$data = json_decode($server_output, true);

// access the ip key and echo back as plain text
echo $data['ip'];

?>

Save this as a PHP file and upload to your server then access it. It should return your IP address as a plain text.

#

Yup!

crude hill
#

hello guys, the streamelements support twitter directed me to this discord and channel and suggested i ask here for help. i am a mod for a streamer and we used streamlabs chatbot before but switched to SEchatbot today. we used to have a top10 command to show the top 10 of users with the most currency points and our chat users love this command. but while i was setting the bot up i didnt find anything to change the preset number of 5 to a higher one. so is there a way to set up a custom command like that?
and also is there a way to manually edit the viewtime of the chatters? for some reason importing from streamlabs chatbot went wrong and it looks like the hours were turned into minutes while importing. so users with over 600 hours watchtime are now down to only 10hrs. πŸ™ˆ thanks in advance!

outer aspen
#

Hello, I have a question that if there is any tutorial or document to read about how to creating a custom widget for Facebook?

viral patrol
#

And about import - you can either use endpoint above or get CSV from SL, convert it in Excel (from hours to minutes) and then import it via csv import

outer aspen
#

@viral patrol Thank you. However, as I read it, the "Possible keys within data" section is Twitch specific, so is there a way to know the field for Facebook? Like latest Star amount and sender?

viral patrol
#

I will update it soon, but for now I know fan-latest, share-latest, star-latest, supporter-latest

#

And their inner structure is like for twitch

outer aspen
#

Thank you so much! By the way, how do you usually debug a custom widget? Can I use Console.log() or alert()?

sharp island
#

Inner structure is the same for all. And you can use console.log just fine.

#

So worst case scenario, just log the entire session object and you’ll see what you’ve got

velvet rampart
#

Hey is there a way to make the text dynamic so it doesn't go off the end of an image? I asked in ##helpdesk-selive and was pointed your way Thanks

outer aspen
#

@sharp island thank you!

sharp island
#

np!

silk zinc
#

Anyone know how to flip/mirror a video file in css???

broken coyote
#
#video
{
    transform: rotateY(180deg);
    -webkit-transform:rotateY(180deg);
}

@silk zinc

mystic comet
#

Does anyone one why whenever I change applications on the screen I’m recording/ streaming on it goes black I have it on display capture

viscid jay
#

Hi, can anyone tell me if it's possible to use the access token I generate through oauth to connect to the websocket? When ever I try and use it I get the following response {"status":1,"message":"Failed to authenticate"} ? Am I missing a required scope?

indigo flume
#
socket.emit('authenticate', { method: 'oauth2', token: accessToken });```
#

instead of JWT token

#

@viscid jay

arctic agate
#

Anyone got the API for !top online but that it deletes the Bots

viscid jay
#

Thanks @indigo flume

shell tree
#

$(customapi.https://api.thefyrewire.com/twitch/pastebin/pn2k7xff?filter=$(1)&args=$(queryencode $(game $(1)))&target=$(1)) Am I wrong in saying that this will fine the line that the user belongs to - so say KeiZar hosts me and is on line 7, if I were to do !so Keizar it would shoutout whatever is on line 7 for KeiZar? Kinda like personal shoutout message for each user

mild cipher
#

@shell tree Well, that is the example from the docs KappaHD so no, you're not wrong

shell tree
#

Ye I know its an example but am trying to learn to make my own wanted to make sure i understood it correctly cus i am FeelsChromosomeMan

mild cipher
#

Heh, np. Let me know if you need anything DJ

pseudo horizon
#

so i have a custom widget its a football moving towards a goal and when someone follows it should reset but it isnt

raw citrus
#

So I've been looking at the streamelements api to see if I could access a user's special loyalty currency. The points/channel/user endpoint seems to be a different kind of points though. Am I missing another endpoint I could be hitting?

real dune
#

im trying to make a follower widget where it displays the recent followers but with a flip in effect rather than a scroll.

i have the flip code but cant find a simple follower widget (like the default one) to edit, the custom widget is useless to me here.

anyone know where i can get the code for it?

viral patrol
#

Are you looking for latest follower widget @real dune ?

austere schooner
#

I was advised by @undone dove to reach out on the discord here.

I created this video using Adobe After Effects:
https://twitter.com/HueGramTwitch/status/1156175232983396353?s=20

I was thinking of possibly using StreamElements to "overlap" the Twitch Viewer name (or remove it)/ with the username that subscribed.
I would have to use a custom font as well as a "typewriter" effect.

Is this possible?

So I made this Pokemon scene from scratch in After Effects for when anyone subscribes, and I’m really happy with the results!

Twitch is such an amazing platform that gets my creative juices flowing!

Let me know what you think πŸ˜† https://t.co/ypPdNCdGWI

Likes

220

β–Ά Play video
real dune
#

@viral patrol this one helps a lot more, but i cant change it to recent followers (without it not working) and select how many to display

viral patrol
#

If you want more than one then use custom event list and enable followers only

real dune
#

how do i remove all the boards and other text so i only have the names and display them 1 at a time?

digital cape
#

Ok so there are a ton of really smart people in here. I believe this is not possible yet but would be cool.
is it possible to have streamelements post to twitter and change the post based on the game being played.
for example If i play a certain game i want include the developers in my post as well as a game specific tag? This would be amazing if it can be done.

cedar gale
#

Hey guys new to using stream elements, can someone give me a hand? Im trying to use a custom text in my alerts etc. when I enable custom font family and type in the font from my computer that I want it doesnt use the font.. any idea?

quartz robin
#

I'm not sure if this is obvious or not, but is there a way to make alerts visible when they are inactive? I am having a difficult time trying to get the size and layout of my alerts correct when I have to emulate the alert every time I make a change.

pastel onyx
#

Copying since I was told to ask here but I'm trying use the random variable to make a command that picks a random number between 1 and whatever is provided with the command (ex. 1-10) but it seems to always pick from 1-100
I should also specify that I want a user provided upper limit by using ${random.1-{1}}

mild cipher
#

@pastel onyx Try this customapi: $(customapi.http://2g.be/twitch/randomnumber.php?start=1&end=$(1))

pastel onyx
#

Exactly what I was after, many thanks

raw citrus
#

What values are accepted in the "type" field

#

I only ever seem to get the Channel host back as the only user in the list

mild cipher
#

When you say 'users in a channel' do you mean users in twitch chat?

raw citrus
#

Yes

mild cipher
#

I'm fairly sure that endpoint is to see which users your streamelements account has access to (i.e. bot supervisors, editors, full control)

raw citrus
#

Ohhhhhhh shoot okay thank you

real dune
#

is there a way to get the default recent followers code so i can add a flip in effect rather than the scroll?

mild cipher
mild cipher
#

I'll clean it up tomorrow and turn it into a proper widget! DJ

real dune
#

thanks buddy, if i could be a little bit picky, could the flip be a bit slower xx

mild cipher
#

Haha when I say proper widget, I mean with all the custom field options, so yes, you can adjust it however you like πŸ˜›

pulsar willow
#

i'm having an issue where browser sources with obs.live are not rendering correctly.
https://cdn.discordapp.com/attachments/221375266373632001/606598497176911902/unknown.png this is intended behaviour as it renders on firefox, chrome, and stock obs
https://cdn.discordapp.com/attachments/221375266373632001/606587804704702673/unknown.png this is how obs.live renders it
https://cdn.discordapp.com/attachments/338494861797752836/606589028640358403/unknown.png here's a cheer event with an image lower and that still renders
it looks to me like after the first line of text, the obs.live browser source is not acknowledging my css. i'm using css on the stock alertbox in order to have a gradient on my text by clipping the background to the text and setting text to be invisible.

#

relevant snippet of css:

    background: linear-gradient(to bottom, #82B2DE 0%, #258DCF 100%);
    -webkit-background-clip: text;
    -moz-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    -moz-text-fill-color: transparent;
    text-fill-color: transparent;
#

is there an issue with my css or is the issue on the browser source?

cedar gale
#

Still looking for a hand . Can anybody help me use a font from my computer as a custom font family?

#

If I put in a font I want into the custom font family spot; in my case I want Industry. I type Industry.ttf and it will change the font but it will change it to Arial... probably a quick fix i havent figured out yet hopefully someone here has an idea

odd dagger
cedar gale
#

Theres no way to embed it into the code?

pulsar willow
#

if you have the font installed on your system, you can set in the css the font-family

#

i have in my css font-family: "Gotham Medium"; and when i import the overlay to obs it loads Gotham Medium

odd dagger
pulsar willow
#

the obs browser source will find the local installed font

#

in your case, just do Industry

cedar gale
#

In my OBS CSS should i put it in there so it would override it?

pulsar willow
#

i have it set in my streamelements widget css and it works fine

uncut apex
#

hey hey, I’ve designed some custom animations for alerts, but not sure how I add/what to do to get followers/subs/bits variables to be part of the animation.

cedar gale
#

still having problems trying to override my fonts inside of OBS throught custom css if anybody can help with some lines of code:)

glacial forge
#

Hi, i was got speaking with keizar20 on Reddit, they said to come to this channel to get assistance with custom eventlists, Chatbox and alert box animation, can someone help me to get unique animations for each of these elements and of course the work is paid. Thank you πŸ˜ƒ

sharp island
#

The Custom Font Family can use any font, but it must be installed in the OS

celest finch
#

hey guys. On custom css with the alert box. Is there are some way to get the sub tier, months, prime true/false or gifted information in the js code? {{amount}} seems to get me the month or?

unborn lantern
#

!blackscreen

#

Β‘Blackscreen

real dune
#

??

eager ginkgo
#

!??

pulsar willow
#

Good morning, how can I change the design of the goal? I'm trying to change the design of the tip/donation goal, I found a nice one but it's not working kenjiThinking

#

The thing is, I do like my tip goal condensed but I don't like how far I have to drag it out to have the text not clutter

#

Without all that empty space

mild cipher
#

@pulsar willow You can overwrite the CSS of the goal from within OBS πŸ˜„

  1. In the overlay editor, squash the goal down to the desired size.
  2. In OBS, add this CSS:
.goal-wrap .goal-current {
  position: relative;
  left: 0;
  top: 0;
  transform: none;
}

The middle part should be centred relative to the other elements now.

pulsar willow
#

@mild cipher thanks! that one works rukayaLove changing the color did not rukayaSad

mild cipher
#

@pulsar willow this should give you a color :)

.goal-wrap .goal-current {
  position: relative;
  left: 0;
  top: 0;
  transform: none;
  color: #F56342 !important;
}
pulsar willow
#

I didn't put color in front on it rukayaLOL rukayaDerp

viscid jay
#

Can anyone tell me if it's possible to use the access token I generate through oauth to connect to the api? I've tried an Authorization header of both Bearer AccessToken and oauth2 AccessToken. Can you also clarify if the channel identifier returned when I connect to a socket is the channel identifier I can use in a put request to https://api.streamelements.com/kappa/v2/points/channel/user/amount

finite heath
#

try Authorization: OAuth <access token>

mild cipher
#

And yes, you get the channel ID back in the authenticated event

minor quest
#

Hi guys, Im currently coding my own tip goal bar using the custom widget in streamelements. Can you guys help me because I cant make my progress bar with chnage while I have a new donation ?

#

My problem is like my progression bar is not filling up regarding the amount of money I received. And also I have an image that supposed to move along the progression bar but I can not retrive it from my Library image...

indigo flume
#

Also in the documentation you can find how to use the Fields tab - this will give you access to custom fields - one of them being the image chooser from the gallery.

#

On the goal widgets in #widget-share has it in the custom fields, so I suggest to check out the code of the widget.

minor quest
#

Hi @indigo flume I spent hours reading it and I was able to get my image appearing, but I still dont understand the "data["....."]" thing and how to use them. If you want I can send you my JS code. May be you will see whats worng

indigo flume
#

sure i guess

minor quest
#

Im not a developper so it might be a sllly XD

#

But thanks for helping

sour cairn
#

Is it possible for the chatbot to display a command result from a text file? For example if i wanted a deaths command could the bot respond with the results from a text file that i can edit using hotkeys?

pulsar willow
#

@mild cipher hi! I would like to remove the amount/percentage after all, can you give me the code for that? rukayaLove

mild cipher
#

@pulsar willow as in so you only have the text on either two ends and no text in the middle?

.goal-wrap .goal-current {
  display: none !important;
}
pulsar willow
#

yeah the one we tried to change the color from

#

thanks! rukayaLove

junior marsh
#

is it possible to change the username alert color "randomly" from a list of selected colors? for example 2 people subscribe and the name of the first one appears on light blue and the name of the second one appears on dark red. (From the same alert) on css/html

broken coyote
#

there is

#
function randomColor(){
    rc = "#";
    for(i=0;i<6;i++){
        rc += Math.floor(Math.random()*16).toString(16);
    }
    return rc;
}

$("#ENTERTAGHERE").css("color",randomColor);
#

@junior marsh

junior marsh
#

@broken coyote ty ill try

viscid jay
#

Thank you @finite heath and @mild cipher

indigo flume
#

Wrong channel about this.

lethal fog
#

Oh sorry

knotty thorn
#

is it ok to embed the tip page? or do you not allow it

mild cipher
glossy delta
#

Is there any way to export a stream events session into a txt or CSV file, or alternatively speak to a dev form StreamElements who has access to the back end of things to do this?
My stream was attacked by a malicious follow bot and I need a rather large chunk of data exported.

hot stump
#

@mild cipher thank you! is it possible to use this with PHP ?

hot stump
#

I am trying it with jscript instead, but where do I put my JWT token in there ?

#

urgh idk why I am struggling with this, are there any example projects to look at ?

viral patrol
indigo flume
#
.event-follower {
    mask-image: url('https://i.imgur.com/2tV0WQC.png');
    -webkit-mask-image: url('https://i.imgur.com/2tV0WQC.png');
}```
#

@thick basin ‴

#

But this doesn't fix the fact that the other images are removed from imgur

#

You were just missing 1 ' from one of the links

#

so now, right click the browser source -> properties -> clear cache on the bottom of the properties window

thick basin
pulsar willow
#

Im here yet again with an impossible tasks haha, idek if the API of Warframe is open, but It would be cool to show which loadout and mods you are wearing on your warframe πŸ€”

knotty thorn
#

i'm getting 403 if it is

mild cipher
#

@knotty thorn it's .../sessions/channel_id as in the alphanumeric streamelements channel ID

knotty thorn
#

oh right, thanks πŸ˜ƒ

thick basin
#

Hello again. Sorry if I ask something again.
I wanted to switch to streaming elements for months now. Problem but are my alerts.
I have self-made alerts. For example, if you need a hosting alert, the viewer and host name are separated. See image. I have to be able to move the text.
At Tippeeestream this is possible.
For stream elements, I think so synonymous but only about CSS.
And I know only little about CSS.
Is there perhaps an update to this alert box from the stream elements? That one has more possibilities there? I have asked the question a few months ago. πŸ˜ƒ

broken coyote
#

whats is that your editing in?

thick basin
#

Alertcreator (Alert Box v2) from Tipeeestream

dry plover
#

Hey, i'm using the ${customapi} variable, but for some reason it returns a "400 bad request" message, even though my API is returning a 504 error.

I was trying to return a plaintext error message instead of JSON for that endpoint, so that the chat command looks cleaner, but it looks like SE returns a basic message instead, is there a way around that?

mild cipher
#

Is your API timing out and not able to return anything in time? Could you catch that and return a proper error message before it times out on SE's side?

dry plover
#

The API is down completely. It's just that for the endpoints used in Twitch commands, i'd like it to return a plaintext message to show in the command, since "400 bad request" is misleading (wrong error code), and doesn't explain anything

#

sorry i should probably explain what I meant, it uses AWS API Gateway as a proxy, so when the actual API is down, it returns messages like that

mild cipher
#

Right, but that's still the server responding no? It's echo-ing back 'Failed to respond' with a plain/text content-type, which is what appears in chat. If the entire endpoint/server is completely unreachable then yes, SE will complain

#

Ah, hm πŸ€” I guess maybe if someone higher up sees this maybe they could do something about it. How about your own proxy? kappa

dry plover
#

A proxy through a proxy, I like the thinking Kappa

mild cipher
#

Oh hey, you're the guy who was trying to get the socket working in C#, any luck with that?

dry plover
#

Oh yeah! Unfortunately not, none of the libraries ever ended up working with SE unfortunately

mild cipher
#

FeelsBadMan I was running into issues too. I think sockets in C# just work differently all together, they seem more... primitive blobshrug

dry plover
#

damn, sorry to hear you're having the same problem. Yeah that's the same vibe I got from it too πŸ˜•

lyric wedge
#

@dry plover your API is returning a 400 for me, too pajaThink

#

can you give me the exact command you used in the SE bot, maybe I can figure out whats wrong

knotty thorn
#

how often are we allowed to make api calls? is updating every 30 seconds ok?

viral patrol
#

It depends on how many calls you do per minute. Global cooldown is 1000 requests per minute (but it is dynamic and can change due to high load)

knotty thorn
#

ok sweet

placid vigil
knotty thorn
#

just wondering, why isn't there a separate jwt token just for the websocket? doesn't sound secure if i'm using my jwt/api key

reef granite
#

Is there a way to do a shoutout command that I can tab autocomplete? I'd like to link to their profile with twitch.tv/${1} so I can't accept the @ before the name... Just wondering if there's some variable magic I don't know about to strip the @ before their name or do I just have to copy/paste or type and pray I got it right?

indigo flume
#

@knotty thorn One other way is via oauth Thinkies , but not there isn't a separate JWT token for the websocket connection and yes its not very secure if the JWT leaks. Take of it.

#

@reef granite tab completion is provided by BTTV/FFZ as long as the person has talked at least 1 time.

knotty thorn
#

oh ok - thanks

reef granite
#

ahh.

#

did not realize that.

knotty thorn
regal vigil
#

Hello everyone πŸ˜ƒ Anyone know how can I setup a auction system?

leaden fjord
#

can we emit our own events with the websocket to our widgets?

hot stump
#

I am having a huge problem
whenever I use ${user.lastmessage} in the API to transfer the content of the message to my PHP script with $_GET, in this case:

!requestban twitchname

it doesn't transfer over exactly what I have typed, but what the person in twitchname has typed last
any way to fix that?

mild cipher
#

So you're wanting to pass twitchname to your script?

hot stump
#

I am trying to pass over the entire command I have typed !requestban twitchname

#

but for some reason it transfers over what that person I am typing in twitchname has said last

#

if they have not said anything, it does what it's supposed to

mild cipher
#

I'm a bit confused as to why you need to pass the command itself too, but could you reference that in your customapi link (action=requestban) for that specific command (!requestban) and then pass the rest of the message with $(1:)?

hot stump
#

that's a really good idea, thank you for making me aware of it, solved the issue ❀

shell tree
#

@broken coyote teach me how to setup a api senpai-boost-chan

broken coyote
#

psh. iunno nun dat dare stuffs

shell tree
#

f u k

broken coyote
#

wth is senpai

shell tree
#

?????? do you not internet

broken coyote
#

eh. i do internet

#

ah. googled it. i dont do anime stuff

shell tree
#

ive swapped all of the streamers i work for over to SE now but theres still scripts i used on SL that i want to use but are not capable of, custom games and such, but afaik if i learn to setup an api to do it then its possible

#

im sure i could learn just gotta put the time into it now

broken coyote
#

i do widget stuffs. api isnt my thing

shell tree
#

ahh so you arnt a real man yogevThink

broken coyote
#

you are correct

knotty thorn
mild cipher
#

@knotty thorn for more details about connecting to the SE socket, check the pinned messages in this channel and see if they help

shy owl
shy owl
#

Okay figured it out by myself, but how would I make it so the text is the followers username?

rugged rapids
#

the name is saved in this variable: {{name}}

shy owl
#

Alright ill message if I need any more help 😊

rugged rapids
shy owl
#

Wow okay many thanks, this will come in handy

#

Okay so I managed to make the typing animation I want. But how would I go about to adding the persons name aswell as reseting when someone new follows etc. and dissapear after 8 seconds.

rugged rapids
#

In the default alertbox is an example when you activate the custom css option in the follower alert in the alertbox.

shy owl
#

wait would I be able to move this custom widget into the alert box? I was originally going to place it over. Sorry new to this whole thing so i'm just trying to learn :,D

rugged rapids
#

I am trying to find a solution for this myself atm. But I haven't found a solution yet.

shy owl
#

Hm..

#

Ill mess around with it.

#

I'll let you know, i only know limited amount of coding so all of this is basicly new to me.

#

all of this for a dumb joke.

#

in which area is the "grab username thingy" located in? HTML, CSS or JS?

#

found it

#

Okay I have no idea, this is the animation I made though:

  animation: type 3s steps(23);
  overflow:hidden;
  white-space:nowrap;
  font-family:consolas;
  border-right:4px solid black;
  width:23ch;
}
@keyframes type {
  0% {
    width:0ch;
  }
100% {
  width:23ch;
  }
}```
#

im just trying to add my own animation, so like instead of a fade in (as an example) i would want that.

rugged rapids
#

Is this in the alertbox? Then you would need to set the default animations to none.

shy owl
#

I don't know where to add it into the alert box though, thats what im confused about. I made that in a custom widgets thing with a different HTML. This is what is in my custom widget HTML bos <h1>{{name}} just followed!</h1>

#

so im just now trying to somehow intergrate it into a alert box without it breaking but my lack of knowledge isnt helping πŸ˜…

rugged rapids
#

What I got so far to get the follower name:
HTML:

<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet">
<div class="main-container"></div>

JS:

window.addEventListener('onEventReceived', function (obj) {
    if (!obj.detail.event) {
      return;
    }
    const listener = obj.detail.listener.split("-")[0];
    const event = obj.detail.event;

    if (listener === 'follower') {
            displayEvent(event.name);
    }
});

window.addEventListener('onWidgetLoad', function (obj) {
    let recents = obj.detail.recents;
    recents.sort(function (a, b) {
        return Date.parse(a.createdAt) - Date.parse(b.createdAt);
    });
  
  let found = false;
  eventIndex = 0;
  
  while (found == false) {
        const event = recents[eventIndex];
        eventIndex = eventIndex+1;
        if (event.type === 'follower') {
                displayEvent(event.name);
                  found = true;
        } 
    }
  
});

function displayEvent(username) {
  let maincontainer = document.querySelector('.main-container');
  let element = `
    <div class="event-container">
       <div class="details-container">${username}</div>
    </div>`;
     
    maincontainer.innerHTML = element;
}
shy owl
#

πŸ˜… okay right, so all of that is just to get the recent follower correct?

rugged rapids
#

This is to get the recent and when a Follower Event Happens, to change the Name.

shy owl
#

Okay gotcha, so how would I implement this into CSS? Like for example just roughly speaking so something like: "{{name}} followed" and {{name}} would be their name? Sorry about bothering you, just genuinely confused.

#

*if you implement it into css

#

Because like I said: All I would want to create is when someone follows it would type out their name followed by "thank you for following". I already have the animation but trying to combine everything is a big ???? to me.

cedar stag
#

Hey guys! New to the service & discord, but I’m loving the development system and in-editor api for event data. I’ve got 3 quick questions. 1.) how does one go about logging into the console? Nothing I log seems to appear in chromes logs aside from whatever the actual site is logging. 2.) is there any way to use your own IDE(like atom) and have it instantly update on the editor, or do you have to use the web based IDE? 3.) is there any way to create arguments inside of the CSS with the variable system? Or does this have to be done via JS?

mild cipher
#
  1. console.log should work fine. warn, error, etc don't work

  2. @viral patrol put together custom widget dev package that simulates a local version of the overlay editor, not sure if I have his permission to put it here so I'll leave that up to him to DM you/upload it himself

  3. you can access the custom field variables in the CSS with {{variable}}

#

(Sorry for the ping mr lx)

shy owl
#

Okay how would I assign a tag to the name? from the JS

cedar stag
#

@mild cipher awesome, thanks! Yeah, I wasn’t sure as to why console.log wouldn’t work for me, I assumed it was because it was rendering everything as an iframe but then I saw other users logging things without any issue. Odd. As for the variables, what I meant is that I wanted to do something along the lines of inline arguments like your typical (x) ? X : X kind of thing inside of those brackets, but I’m assuming that SE just bakes the variables as plain text into the compiled code during run time. Also thanks for those tools!

mild cipher
#

I don't think CSS supports ternaries like that? I could be wrong, I've never tried. SCSS does in some form, but I'm not sure if custom widgets support it. Best bet is to use your intended ternary in when the widget loads in the JS

#

And np! Welcome to the server by the way smile1 hope you have fun creating!

#

@shy owl which tag are you referring to?

shy owl
#

Okay well, I'm quite new to all of this. But I wanted to create is when someone follows it would type out their name followed by "thank you for following". I already have the animation made withint CSS but I have no idea how to connect everything together, someone already gave me the JS code to get the name and some of the HTML but other than that I'm stuck.

mild cipher
#

@shy owl you can create the text element through the JS when an event happens, and pass in the name, then add it to the body. Here's an example function I put together: https://jsfiddle.net/thefyrewire/wcd0qhz5/

I modified the animation slightly so that the cursor always goes to the end of the text depending on the length of the message

shy owl
#

Okay! Thanks for that! How would I add the persons name into this exactly? This is really good though and super thankful πŸ˜ƒ

#

Or is this just like an animation thing? Similar to like "wobble" for example?

rugged rapids
#
window.addEventListener('onEventReceived', function (obj) {
    if (!obj.detail.event) {
      return;
    }
    const listener = obj.detail.listener.split("-")[0];
    const event = obj.detail.event;

    if (listener === 'follower') {
      type(event.name + ' just followed!');
    }
});

const type = (words) => {
  const heading = document.createElement('h1');
  heading.textContent = words;
  heading.style.setProperty('--length', `${words.length}ch`);
  heading.style.width = `${words.length}ch`;
  heading.style.animation = `type 3s steps(${words.length})`;
  
  document.body.appendChild(heading);
  setTimeout(() => {
      heading.remove();
  }, 6e3);
}

and the same CSS as in the JSFiddle of thefyrewire

#

Please don't post in multiple channels. Thank you @cobalt locust

shy owl
#

AHHH THANK YOU <3

#

Took me a while to figure it out, I'm deffo going to learn some CSS/JS in the future

#

@rugged rapids and @mild cipher you both are godsends ❀

mild cipher
leaden fjord
#

Sorry to repeat the question but I don't think it got any answers and it would be pretty cool to know, can we emit our own custom events with the websocket to our widgets?

socket.emit("myOwnCustomEvent", { custom: "data" }); // server
...
window.addEventListener('onEventReceived', obj => { // client
    if (obj.detail.event.type === "myOwnCustomEvent") { ... }
})

Don't think that's how it would be implemented but it gets the idea, it would be pretty cool to make widgets that can recieve events from anywhere else other than Twitch events :)

shy owl
#

@mild cipher Quick question, how would I delay it before it cuts off? So it shows on there longer.

mild cipher
#

@shy owl You would want to change the timeout near the bottom. Right now it removes it after 6 seconds, (keep in mind it takes 3 seconds for the animation to finish, so 3 seconds of visibility I guess). That's just an example for removing it though, you can animate it out some other way if you want and extend the delay.

#

I also recommend look into the SE_API queue functions, there should be details of it in the link Benno posted. That will allow you to queue followed animations (in case two people follow at about the same time), so that one plays after the other

#

@leaden fjord I don't know if you're able to emit on custom listeners like that, but I know you can emit custom payloads on event:test. Pretty sure you can't emit on the regular event listener

shy owl
#

Alright thanks! :)

leaden fjord
#

@mild cipher fair, do I recieve the payload on the same 'onEventReceived' listener on my widgets or is there a test listener?

viral patrol
#

@mild cipher ping for ping πŸ˜‰ I am glad that my SE Emulator is in use. That is great πŸ˜‰

mild cipher
#

Ah speaking of lol. @leaden fjord try downloading the SETest.zip file above. It is able to emulate socket events and push them to widgets I think, so you can probably put together something there if you dig around in the websocket.js file

leaden fjord
#

I'll give that a look, thank you leefHappy

empty mango
#

Hey. How i can request a song? Actually i have node-streamelements and my class:
createSongRequest(song, channel = this.accountId) {
return this.makeRequest(HTTP.POST, songrequest/${channel}/queue, { song });
}
so if i want add i have answer - Bad Request
myInstance.createSongRequest("https://www.youtube.com/watch?v=xxxx")
.catch((error) => {
console.log(error);
});
Why it's not working? 😦

reef granite
#

Running into an issue with the hypecup. Not sure if here or a help channel would be better but it's crashing any time I try and play a host event. I get a a this._frameData is null error on the console pointing at a phaser.js

#

noticed it on a stream the other day when I got raided (and was followed by a host), the hype cup just freezes and doesn't do anything anymore.

#

Also tried multiple cups and switching between the 2 physics versions

#

doesn't seem to happen on any other events. just hosts.. so I'll just leave those off for now. Thought someone might want to know about it, though.

opaque sage
#

Does anyone here have basic knowledge of the coding in SE? if so I have a VERY simple request, if I use a regular widget, Lets say latest follower, and I want the text scrolling, but instead of dissapearing like it runs into an edge I want the dissapearing to be in a degree, Example I have a sidescrolling text and it cuts off like this at the end : |
I want the text to cut off like this : /

mild cipher
opaque sage
#

@mild cipher yes like that and pref on the other side as well

#

how do I make that work?

mild cipher
opaque sage
#

@mild cipher exactly, Im guessing its not super hard to tweek the angle at which they are either?

mild cipher
#

@opaque sage nope!

Select the browser source in your OBS and open its properties.
Add this to the custom CSS box (if the default CSS stuff is there you can replace it).

se-widget-follower-recent .marquee-text {
  clip-path: polygon(10% 0%, 100% 0%, 90% 100%, 0% 100%);
}

Essentially the CSS selector is specifically targeting the recent followers widget and adding a clip-path to it. The parts you'll want to adjust are the 10% and the 90%. So those path points are both 10% away from the edge. i.e. you can make it steeper by going 5 and 95, or gentler with 20 and 80.

finite heath
#

what a nice way to do it

#

quick and dirty.

opaque sage
#

@mild cipher but I have my whole ocerlay in one source from SE

mild cipher
#

You should be able to apply it to the whole browser source (it should only target the widget)

amber tusk
#

Is there a way to add a list of moderators or VIP users to the credit roll by grot widget? My moderators and VIPs are listed in the user management section.

rugged rapids
#

You can just add a array with the names there and add this to the credit roll.

vocal halo
#

Hi guys.. I'm trying to move to streamelements for an trial period.. but i'm having trouble inserting custom html/css/js widgets into the overlay maker
I have custom chatbox and event list.. and I can't see how I can copy them over

cerulean dome
#

hey guys, is there a way to make a chat command that makes a http request and returns the response? I have my own servers for a few things....

viral patrol
#

@vocal halo Hi! Create custom widget from widgets menu, then you can paste code there.

#

@cerulean dome Try ${customapi.https://yourHost/yourScript}to get data.

#

Bot will reply with message from your endpoint

delicate chasm
#

If I have a custom widget on the same overlay as a kappagen widget , can I trigger a kappagen emoteplosion without the event actually happening?

viral patrol
#

This is actually a good question. I think it could be possible because there is kappagen action on StreamDeck, but I don't know what call does it make

delicate chasm
#

Interesting

vocal halo
#

@viral patrol the custom widget only worked with stantardt configuration, if i changed anything it would stay blank.. :s
And it only worked as a event list and nothing else..

lusty pivot
#

Did you guys remove the ability to integrate Spotify w/ SE?

pulsar willow
#

hey so what do we have to do for customizing the look of the goals widget

viral patrol
vocal halo
#

Still can't make it look and functions as originally on streamlabs..
I'm completly ignorant on how codes work, but it confuses me why the same lines work in one place, and no in the other, when they using the same "language" (html, css and js)

leaden fjord
#

Different APIs, different services won’t handle their data the exact same way regardless of using the same tools to build it

broken coyote
#

@vocal halo what kind of widget is it?

near fjord
#

Hey. I have 2x videos (webm). One is playing as loop. The other should be played if one is following BUT then the first video should hide for about 6 seconds.
Is this possible?

vocal halo
#

@broken coyote chatbox

#

It should show like this

#

But I can't figure out how to get the user color to fill the user box

broken coyote
#

yea you will have to change alot of the functions over in order for it to work if it is from SL

vocal halo
#

I managed to put the box on

#

But just with regular color picker

#

Not based on the user

#

Have been messing with the codes all day

#

Trying to figure it out

#

lol

broken coyote
#

so that blue, is from user color?

vocal halo
#

Yeah, but that is the one based on streamlabs

broken coyote
#

take out {color} in the html

vocal halo
#

Here's how my html is lookin like

broken coyote
#

it would be in the JS

#

parseHTML

vocal halo
#

I don't know hot to do that

#

I tried somehow using the same system you can make the username collor change

#

But it didn't work

#

It showed nothing on the box

broken coyote
#

if you want, u can make me a edior i can look at it. i aint got shit going on at work

dense ivy
#

Will there be a raid warning at anytime added?

shell tree
#

as in a warning that someone is raiding your channel with /raid ?

steady iron
#

hello @dense ivy ! That alert is already included in the Streamelements bundle, you can go to any overlay, and in the Widgets add the Alertbox widget, once added click on it and you will be able to configure the different alerts in it, including the Raid alert.

shell tree
#

πŸ‘€ never really used the overlay editor before now, this would make the overlay slide in from the right over a period of 3 seconds then slide out to the left over aperiod of 3 seconds correct?

#

Essentially trying to make a image fade in when we get a new sub then fade out afterwords

worldly mauve
#

Yes

patent smelt
#

@static wigeon Hi, I sent you discord friend request for dm about OAuth perryT

empty mango
#

How I can send the song to Pending Approval using the API?

static wigeon
#

We currently don't have an endpoint for the pending queue

#

But I would love to hear about your use case

empty mango
#

I'm creating a bot for custom chat and I want to that viewers use the command !sr <link> and it added to the waiting queue not main 😦

static wigeon
#

I'm sure we can arrange something

empty mango
#

It would help me a lot πŸ™‚

fresh otter
#

Hello, i was looking around for few last hours and sadly could not find a way to get current stream viewer count with your API, is there really no way to do that?

mild cipher
broken coyote
wary sentinel
#

Hey guys ! I'm super novice in coding and I was trying to replicate an alert code to add it to my StreamElements overlay, I was wondering if any of you could help me with that. Would be lovely

pulsar willow
#

Any fun designs for the tip goal? Something like the hypecup but then for the tip, filling up vertical?

viral patrol
#

It fills from left to right, but you can rotate image, so it can fill from bottom to top

pulsar willow
#

@viral patrol thanks! i'll try to figure that one out

gloomy sable
#

Was told to leave a message here. Is there anyway to make a command that allows normal moderators to make markers on a stream without needing to be channel editors? I'd like to make a !marker command like what nightbot has but just don't know how to do it or if it's currently possible

viral patrol
#

I think that using StreamElements as channel Editor and using a /command as reply to that could work, but unfortunately I am not aware of any chat command (twitch, not SE) that could allow that

gloomy sable
#

Yeah I thought so too but it didn't seem to on testing. Will test further. Thanks

eager ginkgo
#

So....because i'm dumb, and before I post an idea to the ideas board I want to come in here and ask: How difficult would it be to integrate the OBS Websocket plug-in into OBS.Live to incorporate things like "playing local media" via chat commands?

near fjord
#

Hey. Is it possible to rename the twitchbot?

high swallowBOT
#

@near fjord Custom bot name requirements

  • StreamElements bot modded and in chat
  • Active overlay with alerts
  • StreamElements tipping page in the panels below the stream (!panels)
  • OBS.Live or Ground Control open
  • Create a twitch account for the name you want to use or run the bot under your own name
  • Custom bot name doesn't work on Mac
near fjord
#

!panels

high swallowBOT
near fjord
#

And after i done that?

warm yew
#

is support for mixer coming?

high swallowBOT
#

@warm yew Our goal is to be everywhere our community is so we are regularly in discussions with other platforms. Although we can't comment on our roadmap, your feedback is appreciated.

near fjord
#

Dont know how to rename my Twitchbot. πŸ˜„

eager ginkgo
#

Not here

shy lava
#

Need help from a code guru please

wheat jackal
#

anyone know is there a list of recent {name} (follower, sub etc) , so i could use "nth-child" or something similar with it for custom alerts

wheat jackal
#

this part, i'm not sure how do i type it. is it something like id="event-1" or something?

mild cipher
#

@wheat jackal in the session data (obj.detail.session.data), check the -recent keys (like follower-recent) - these hold up to the last 25 events for that event type

craggy lynx
#

hiya, im trying to connect my youtube account to my twitch account's dashboard, btu when i try to do it, it says "Channel is already claimed"

how 2 fix this ;0

sharp island
#

You need to either delete the youtube channel's account, or ask one of our SS guys to merge them for you.

pulsar willow
#

Hello, I'm developing a custom widget and I'm wondering if there is any documentation on how to communicate with other widgets like the alert box from JavaScript? Like I would like to trigger an alert in the alert-box when some event happens in my custom widget. Is that possible?

viral patrol
#

@pulsar willow Unfortunately you cannot trigger new events from custom widget, but custom widget can act like alertbox, but you will have to code all the design on your own.

pulsar willow
#

oh okay too bad, but thanks anyway

craggy lynx
#

@sharp island i tried to delete the youtube channel's account but it's not really deleting, how do i go about getting an SS guy to merge it for me ? :)

sharp island
#

Ask @finite heath ?

finite heath
#

@craggy lynx please send us an email to support@streamelements.com with:

  • username
  • JWT
    of each account
    and we will merge them for you
craggy lynx
#

i actually JUST got it to work, sorry for any hassle but appreciate the help :)

wheat jackal
#

@mild cipher I'm not sure where do i find that, could you show me an example?

mild cipher
#

@wheat jackal Try using this in the JS and inspecting the console smile1

window.addEventListener('onWidgetLoad', function(obj) {
  console.log(obj.detail.session.data);
});
opaque sage
#

So I have gotten myself a custom graphic for my alerts, BUT using the Alert box thing , makes the text really hard to manage I would like to have text above and below my graphic, how does one go about doing this in the easiest way?

steady iron
#

Above and bellow? I suggest giving it a look at the Awesome shoutout, it does something like that @opaque sage , and it may be a good example for you to use:, check the #widget-share to know more about the widget, and you can get the latest version, which adds more flexibility to the text management: https://github.com/renechiquete/AwesomeShoutout/releases/tag/1.2

latent gulch
#

Hello everyone!

#

I am currently using socket api but I have a question

#

About the fields of "data" object on events

#

Which field represents the viewer count on Twitch Host?

#

It is shown as following on Gitbook docs:

#
data: {
      username: String;
      tier: String;
      currency: String;
      amount: Number
      message: String;
      avatar: String;
      sender: String;
      gifted: Boolean;
    }
knotty thorn
#

i'd say amount

indigo flume
#

amount should be it

latent gulch
#

Is there a way to test this? As far as I tried, it won't send repeated events on socket

indigo flume
#

Only way to 'test' this is to send your self a similar event via the socket

latent gulch
indigo flume
#

yes

#

well

#

you can use that directly from the activity feed

latent gulch
#

Yea but it won't be sent over socket

#

The real event is sent over the socket, but however repeated ones do nothing

#

It might be a bug tho, let me try once again

#

Yup, replayed ones will be shown on the overlay, but won't be received from the Socket API

indigo flume
#

https://api.streamelements.com/kappa/v2/activities/:channelID/
but make sure you authorize with the JWT token

#

but note that this will create an activity feed event

#

example JS:


if (jwt !== "") {
    fetch("https://api.streamelements.com/kappa/v2/channels/me",
        {
            "headers": {"accept": "application/json, text/plain, */*", "authorization": "Bearer " + jwt},
            "method": "GET",
            "mode": "cors"
        }).then(response => response.json()).then(json => {
        let channelId = json._id;
        fetch(`https://api.staging.streamelements.com/kappa/v2/activities/${channelId}`,
            {
                "headers": {
                    "accept": "application/json",
                    "content-type": "application/json;charset=UTF-8",
                    "authorization": "Bearer " + jwt
                },
                "method": "POST",
                "mode": "cors",
                "body": JSON.stringify(element)
            })
        
            
        })
    };

element:

let element = {
    "channel":"<channel_id omitted>",
    "provider":"Something",
    "type":"tip",
    "data":{
       <<<THE PAYLOAD>>>
    }
 };```
#

but you can pretty much toss this in your console

#

just be mindful how you overflow your AF

latent gulch
#

Hmm so I can create my custom event and play that. Makes sense

#

However this socket will be used by my user base πŸ˜„ They are most probably to expect a replay from the activity feed

#

I can leave them a note on the documentation, if the socket not sending replayed event is an intended feature tho

#

1 last question. Which of the fields on "data" represents the subscription month on Twitch Subscription?

#

amount again?

indigo flume
#

yes - thats the months

latent gulch
#

Alrighty thanks a lot

amber tusk
#

@rugged rapids To add a list of the moderators to the credit roll by grot widget, where would I add this? You said to create an array, but where in the code should I add the array? Should I add it before the EventListener because it is static data?

#
// DO NOT EDIT ANYTHING BELOW THIS LINE (unless you know what you're doing)
// !!!!!!!!!!

let totalEvents = 0, fSum = 0, sSum = 0, cSum = 0, tSum = 0;

window.addEventListener('onWidgetLoad', function(obj) {
  const recents = obj.detail.recents;
  let session = obj.detail.session.data;
  let fieldData=obj.detail.fieldData;
  userCurrency = obj.detail.currency; ```
steady iron
#

usually arrays are created at the beginning of the file, out of any other function , basically being global objects

#

For example in this code snippet, from another widget by @rugged rapids , the Social media rotator, he does this:

#
  {
    name: "{{el1Name}}",
    icon: "{{el1Icon}}",
    link: "{{el1IconLink}}",
    color: "{{el1Color}}",
    showImage: "{{el1IconShow}}",
    order: "{{icon1SocialOrder}}"
  },
  {
    name: "{{el2Name}}",
    icon: "{{el2Icon}}",
    link: "{{el2IconLink}}",
    color: "{{el2Color}}",
    showImage: "{{el2IconShow}}",
    order: "{{icon2SocialOrder}}"
  },
  {
    name: "{{el3Name}}",
    icon: "{{el3Icon}}",
    link: "{{el3IconLink}}",
    color: "{{el3Color}}",
    showImage: "{{el3IconShow}}",
    order: "{{icon3SocialOrder}}"
  },
  {
    name: "{{el4Name}}",
    icon: "{{el4Icon}}",
    link: "{{el4IconLink}}",
    color: "{{el4Color}}",
    showImage: "{{el4IconShow}}",
    order: "{{icon4SocialOrder}}"
  }
      
]; ```
#

And later he access it in this form inside functions:

    if (element.order == 'iconfirst') {  //Order is the name of one of the possible values in the array
........ whatever you need to do for each element
    }
}
#

@amber tusk

amber tusk
#

That's very helpful. Thank you.

steady iron
nocturne fox
#

Hey. I was wondering how to get the coordinates to make a wireframe to use for a custom hype cup. I can't find any tutorials on it anywhere, sadly.

round obsidian
#

hello, i need some help with the API, can someone help me?

raw citrus
#

Hello, is there an api endpoint to update the overlay?

mellow sparrow
#

Hi all, sorry, im not sure if this is where I should put this particular question, but is there away to run a giveaway through SE, where if you would like to enter the giveaway, you have to enter a specific phrase. Nightbot does it, but im wondering if there is a way SE can as well.

viral patrol
#

@raw citrus If you are refering to overlay reload in OBS you can use PUT https://api.streamelements.com/kappa/v2/overlays/:channelId/action/reload

#

@round obsidian Hi! State your question and I will do my best to help you ASAP

#

@mellow sparrow I think that you can create an alias to your enter command so people can type !join or !yoursponsor

nova kelp
#

Is there a way to create a couple of bots that I can give points to over the course of the month? I want my viewers to be able assign themselves to a bot, and throughout the month give the bot points based on how my viewers answer trivia questions. Then at the end of the month, whichever bot has accumulated the most points wins, and all the viewers associated with that bot will get a set number of points towards a giveaway.

mellow sparrow
#

Thanks @viral patrol . It would be good if SE could do something to NightBot and make the giveaway section a little more extensive.

regal kernel
#

Hey all. I wonder if there is a way to customize the javascript of the HypeBoss. I want to create some custom functionality in the same way that Streamlabs lets you customize HTML, CSS, and JS of their StreamBoss. Is that possible?

molten sinew
#

Hello guys! Looking to hook up a Discord bot with a client's streamlabs bot. How would I go about retrieving the points that each of the members of that stream have?

#

For example a user will play roulette and gain 500 points. I want the discord bot to head over to a JSON API and find that user and how much money they have now. Example's sake: 500.

rocky falcon
#

@molten sinew DM me with all details and stuff πŸ™‚

#

Ill try to help you

reef granite
#

Anyone else have an issue with the hypecup where emote events will drop black squares with outlines green lines instead of the emote? Always seems to work when editing, but when using it live in OBS I get those black squares instead.

indigo flume
#

It is

reef granite
#

i'll move over there. thanks

wheat jackal
#

is there a way to emulate multiple subs at ones, like if someone gifted 10 subs it would trigger 10 sub alerts?

indigo flume
#

Don't have a variation that handles community gifts

#

but only just a singular gift

molten sinew
#

So I just used !addpoints to myself and it says I know have 123456 points

#

How can I use the API to find a user's points?

#

I'd like to use it so that it shows that I have 123456 points

drowsy tinsel
#

I know !points <username> will show channel points for that username. Dunno if thats what you're lookin for

molten sinew
#

I want to connect it to a python script

#

so I can like call an api with a user's username/userID

mild cipher
#

Or, if you're setting it up as a customapi, you could just pass $(user.points) as a param and save yourself calling the API altogether

molten sinew
#

{"statusCode":404,"error":"Not Found","message":"[USERNAME]was not found"}

#

replaced username with [USERNAME]

#

Code Snippet:

import requests

url = "https://api.streamelements.com/kappa/v2/points/channel_here/username_here"

headers = {'accept': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
mild cipher
#

If you do !points [USERNAME] in chat, does it show them having points?

molten sinew
#

I think so yeah, i'll quickly double checjk

mild cipher
#

Are you using the StreamElements channel ID and not the name?

molten sinew
#

oh

#

i'm using name

#

how can I get an ID?

mild cipher
#

You can find it in your dashboard when you click your username, or you can query https://api.streamelements.com/kappa/v2/channels/USERNAME

molten sinew
#

which one?

mild cipher
#

_id

molten sinew
#

awsome

mild cipher
#

providerId is the Twitch user ID smile1

molten sinew
#

oh yep that worked!

#

now do you mind if I ask you a second question?

#

how can I update this value using an API call?

#

so currently it's 123123. Can I make it 120000 using a call

molten sinew
#

user

#

is the username, right?

#

{"statusCode":401,"error":"Unauthorized","message":"No authorization token was found"}

mild cipher
#

Yes. Points are kept by username always, which is why people lose their points if they change their username oof

molten sinew
#

ouch

mild cipher
#

And you'll need your JWT token for that

molten sinew
#

ok so it's my own token

mild cipher
#

Yes. Make sure to keep it secure. If you're only using the script for yourself and hosting it yourself you'll be fine

molten sinew
#

awesome

#

and where do I put this variable?

mild cipher
#

Pass it as an authorization header:

'Authorization': 'Bearer <JWT_TOKEN_HERE>'

molten sinew
#

Oh this adds points

#

ok so I can just make it -5000

#

and it'll remove 5000

#

oh this is fantastic

#

thank you so much!!!

#

Since I'm working on this for a client, if I need any help can I ping you or would you rather not?

mild cipher
#

Sure, but I might not always be around πŸ˜… feel free to ask again here if you get stuck, there's lots of other people around who can help too smile1

molten sinew
#

awesome thank you so so much!

molten sinew
#

hey @mild cipher Sorry for the ping

#

f"https://api.streamelements.com/kappa/v2/points/{Streamer_Channel}/{user_name_here}"

#

this returns
{"channel":"channelHere","username":"blahblah","points":123123,"pointsAlltime":11123,"rank":3}

#

I use the pointsAlltime value, correct?

#

that's the value that is updated even when I add or subtract points using the PUT call we discussed earlier

mild cipher
#

So PUT https://api.streamelements.com/kappa/v2/points/channel/user/amount

molten sinew
#

so the same as earlier?

mild cipher
#

Minus the alltime in the endpoint url

molten sinew
#

I'm totally willing to do
https://api.streamelements.com/kappa/v2/points/channel/user/-50000

#

which one's the endpoint url?

mild cipher
#

That looks right

molten sinew
#

that %7B is a bug

#

Oh so you mean change the second URL to "https://api.streamelements.com/kappa/v2/points/channel/user/amount"

mild cipher
#

Yup you got it. That should affect the points you're looking for

molten sinew
#

awesome

#

so in the thing where I get the points, I just use points and not all time

#

that works, you're amazing thanks so much!!!

mild cipher
#

Yeah, the current points is the one that's return in chat when someone does !points and alltime I think is just for leaderboard purposes or something (!top alltime)

opaque sage
#

I need help with my Alert widget, I set up a Sub widget. That have diffrent variation for every 3rd month up to a year. Problem is no matter how I try to set the size of the text on that widget it will not change. what am I doing wrong?

indigo flume
#

Are you referring to custom code/widget?

molten sinew
#

Is there some sort of !followage API call I can do to get length of time someone has been following for?

#

i'm looking through docs and can't see anything that stands out

molten sinew
#

oh this is a twitch feature

indigo flume
#

well decai.me is a 3rd party API that asks the twitch api

molten sinew
#

oh I see

#

so streamelements doesn't have one built in

indigo flume
#

No

#

or at least not public point

molten sinew
#

alright

#

thanks

opaque sage
#

@indigo flume Nope I used the widget called Alertbox in SE, and then just unticked all except subscription and did variations on that one

indigo flume
#

Then the question is not suited for here, as this channel is meant for custom widgets and coding involved with our API πŸ™‚

opaque sage
#

Oh Im sorry πŸ™‚

hearty lake
#

How can people make a command that triggers a sound or gif that temporarily appears on a StreamElements overlay?

indigo flume
#

@hearty lake Steps to make a command trigger sound on stream:

  1. Go to Stream Store page here: https://streamelements.com/dashboard/store/items
  2. Add an item that has these settings on it:
  • Stream Perk
  • Loyalty settings to your desire
  • (Next step) Add contents (image and/or sound you want to play)
  • "Redeeming this item shows an alert
  • Redemable via chat
  • Skip Requirements
  1. Get the item name/command from the 2nd creation page
  2. Go to commands page here: https://streamelements.com/dashboard/bot/commands/custom
  3. Add command with desired name and have response for command as: ${redeem item_name_here}
  4. Go to your overlays and edit the overlay you use.
  5. Click on "widgets" and add "Store redemptions" widget. Click save and you should be golden.
  6. Test your own command in chat and have OBS or editor open to hear sound
  7. ???
  8. Profit in viewer interaction and that dosh FeelsMoneyMan
hearty lake
#

Thanks @indigo flume!

#

Let's go translate your message for two people in #πŸ‡«πŸ‡·οΈ±franΓ§ais (:

indigo flume
#

good luck rooBobble

stiff pecan
#

hi! I am working on an integration of the points with my website but using jscript the autorization token is visible if you inspect the code. Is there any way to protect this?

#

or maybe there could be a way to limit the url that can send the requests

regal kernel
#

Hey, I'm just getting started here with custom widgets and I have what might be a noob question.

I'm trying to get the avatar of the user who initiates an event (cheer, sub, follow, etc...). Currently I'm making calls to the Twitch API to do it, which requires setting up an API key and all that. Is there an easier way?

viral patrol
#

@stiff pecan Those requests should be sent server side, so client doesn't see your credentials

regal kernel
#

Ooooh, this API will be MUCH more convenient. Thanks @viral patrol !

empty mango
#

how can i put mediarequest player on site?

viral patrol
empty mango
#

I just want to add a YT player

stiff pecan
#

@viral patrol thanks for your answer. I will try that.

empty mango
#

How I can somehow take the link to media request from layout?

empty mango
#

@viral patrol

viral patrol
#

Unfortunately we don't have 'ready to go' solution for that, but if you know a developer, he can be able to prepare Media Request widget for your website.

empty mango
#

And any idea that the layout refresh every time someone loads it?

viral patrol
#

Huh. It has to check if song is over, if so - reload playlist