#dev-chat
1 messages ยท Page 66 of 1
but i do have it
oh
is there something I am missing here?
well then curl -vvv http://whatever the url is
and see what curl says about the response
* Connected to --- (---) port 28000 (#0)
> GET / HTTP/1.1
> Host: ---
> User-Agent: curl/7.80.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Connection: close
<
hello i am api
* Closing connection 0```
tried again and got this
* Connected to --- (---) port 28000 (#0)
> GET / HTTP/1.1
> Host: ---:28000
> User-Agent: curl/7.80.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Connection: close
<
hello i am api
* Recv failure: Connection was aborted
* Closing connection 0
curl: (56) Recv failure: Connection was aborted```
@river prism yeah see curl says the same thing
yeahh
would you have any idea as to what the problem is or how to fix it
How do I clear all the data in JS?
I have a timer which counts cooldown of a command, but each new time it counts it adds up
Like he counted 110 sec to 0 (cooldown 110)
Then on the next command with a cooldown 60 he will show 110 number for a moment and then show 60 and after that will start count down
On the third command (with cooldown of 50) he will show 110 for a moment, then 60 for a moment and only then starts to count from 50
And each time you can trigger a command 1 second earlier, on sec 1 then after new command on sec 2, then on sec 3...
writing a custom widget, the chat message event's emotes list is including emojis as well as the twitch/bttv/ffz emotes, but the emojis don't have start/end indices? (the docs seem to imply they should)
also, whatever's doing that emoji parsing doesn't properly handle zero width joiners or variation selectors
I think twitch might mangle those
I see that all the time in chats
(emoji followed by a male or female sign mostly)
@river prism I'm quite convinced your problem is the http response
yea alright
try for a moment hard-coding the entire response
so like ```
"HTTP/1.1 200 OK" + CRLF + "Connection: close" + CRLF + "Content-Length: 7" + CRLF + CRLF + "Hello" + CRLF
Alright, it is now ```java
final String CRLF = "\r\n";
String response ="HTTP/1.1 200 OK" + CRLF + "Connection: close" + CRLF + "Content-Length: 7" + CRLF + CRLF + "Hello" + CRLF;```
same thing, curl: (56) Recv failure: Connection was aborted
uhm it's across multiple classes but
InputStream input = null;
OutputStream output = null;
try {
if (debug) logger.info("[" + debugid + "] Connected.");
input = socket.getInputStream();
output = socket.getOutputStream();
String html = plugin.getConfig().getString("default-response");
final String CRLF = "\r\n";
String response ="HTTP/1.1 200 OK" + CRLF + "Connection: close" + CRLF + "Content-Length: 7" + CRLF + CRLF + "Hello" + CRLF;
output.write(response.getBytes());
if (debug) logger.info("[" + debugid + "] Response sent.");
} catch(IOException e) {
logger.warning("Problem with communication: " + e);
if (debug) logger.warning("[" + debugid + "] Failed to initialize worker thread.");
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {if (debug) logger.warning("[" + debugid + "] Failed to close input.");}
}
if (output != null) {
try {
output.close();
} catch (IOException e) {if (debug) logger.warning("[" + debugid + "] Failed to close output.");}
}
if (socket != null) {
try {
socket.close();
} catch (IOException e) {if (debug) logger.warning("[" + debugid + "] Failed to close socket.");}
}
}```
Will try that
that's not, like, a fix
but from this code it never seems to actually read a request
and rather it seems to just send a response immediately
It does not read read the request atm, I just wanted something that worked before I started messing around with arguments
right
so what's happening is sometimes the response will be sent before the client is done sending the request
and the connection closed
ah
which is not how http is supposed to work
thus the error
randomly, because it's dependent on timing
putting a sleep() should fix it in the sense that you're always going to send your response after the request is done, but of course it's not a real fix
well. it responds correctly now reliably
can't I just make it read the arguments and then send it
yes
So the countdown works as expected, but only after it showed all of the earlier upper bounds?
Do you use setInterval()? If so, do you clear all intervals after they reached their end point?
definitely do that instead of sleeping
ah alright so basically it's an issue that will go away as soon as i actually do what i'm gonna do with the bot
alright that's relieving..
exactly
@hot trout im having troubles finding that video about the commands
Is there any way to make a sound command for a specific user?
ummm....hate to bother you again but i have tried many different things all of which have resulted in straight up not working, or just blocking and looping forever...it hurts me to have to ask what sounds like a really simple question but how do i do this ;-;
the current thing (below) just gets stuck in an endless loop and the inputstream never sends a -1 at the end if the request.
int _byte;
while ((_byte = input.read()) >= 0) {
url += (char) _byte;
}```
would there be a way to just snatch the url and wait for the rest to finish because the oinly thing i need is the url and the arguments within it? i tried just using stack overflow and google but none of it made any sense to me
just curious, did you get this working?
<div id='one'>Almost before we knew it, we had left the ground.</div>
<div id='four'>Almost before we knew it, we had left the ground.</div>
<div id='nine'>Almost before we knew it, we had left the ground.</div>
@import url('https://fonts.googleapis.com/css2?family=Exo+2:ital,wght@0,100;0,400;0,900;1,100&display=swap');
#one {
color: red;
font-family: 'Exo 2', sans-serif;
font-weight: 100;
font-size: 100px;
}
#four {
color: blue;
font-family: 'Exo 2', sans-serif;
font-weight: 400;
font-size: 100px;
}
#nine {
color: green;
font-family: 'Exo 2', sans-serif;
font-weight: 900;
font-size: 100px;
}
Yes i did! Pretty easily btw! I made a firebase cloudfunction
Only took 10 minutes
Alright I'm here
Lemme show u
oh niice. i was just curious. I'm doing a write up on how to build an API. just wonder if you go it
@tame valve see above ๐
So wait, where does each one go?
HTML and CSS by the looks of them?
ya; you just need the CSS really; the font import link has the weights
Awesome!
Also while I gotcha: Can I make the : between the time numbers blink, and add a comma after the date number?
There you go. Thats all there is to it, Ill be adding a filter parameter. to add bots in an array so the API doesnt return known bots
Niice. ya. i need to look more into that firebase thing.
It's really easy
Even for beginners it's very well documented
Only thing is to publish this API you need to attach a credit card
But as long as you stay under the request limit you probably won't be spending any money
ya. that might be a no go for some. but maybe not an issue. i went the "heroku" direction but with replit: https://pjonp.blogspot.com/
Thank you, by the way โค๏ธ
1/2 through the set up; so i'm committed now ๐
no problem. i told you it was โ ...heheh
i've ran into that wall a few times in the past but remember why now. only took doing it about 5 times
Any light on the blinking separator?
I found some random blinking code and managed to get it to work but it shows after the AM/PM, so... no good lol
oh. i missed that... um; that would probably be a CSS animation... like a from Opacity 1 -> 0
Yeah I got that part, the problem is getting it in between the numbers
This is what I found
animation: blinker 1s linear infinite;
}
@keyframes blinker {
50% {
opacity: 0;
}
}```
Damn what's the character for code here
<div id='nine'>This <span class='blink_me'>BLINK</span> End</div>
3 ` 's (the ~) mark
then add css after the top row of ` s
So wait. CSS:
html,body {
height: 100%;
}
body {
}
p {
margin: 0;
padding: 0;
}
#clock {
font-family: '{{fontName}}', sans-serif;
font-size:{{fontSize}}px;
font-weight: {{fontWeight}};
color: {{fontColor}};
text-shadow:{textShadow};
text-align: center;
position: absolute;
float: left;
display: flex;
flex-wrap: wrap;
}
.time {
font-size:{{fontSize}}px;
font-weight: {{fontWeight}};
color: {{fontColor2}};
text-shadow:{textShadow};
}
.date {
font-size:{{fontSize}}px;
font-weight: {{fontWeight}};
color: {{fontColor}};
text-shadow:{textShadow};
}
.text {
letter-spacing: 0.1em;
font-size: 12px;
padding: 20px 0 0;
}
.blink_me {
animation: blinker 1s linear infinite;
}
@keyframes blinker {
50% {
opacity: 0;
}
}
}```
HTML:
<div id="clock">
<p class="date">{{date}}<p class="time"> {{time}}</p></p>
<div id='nine'>This <span class='blink_me'>BLINK</span> End</div>
</div>```
oh.. ya; i had to go back to your original:
Ew lol
haha
๐ค ... ya. that is a tricky one. i'm not sure how you are getting the {{time}}
This is in "Data":
{"1224":"zeroPadding(hours) + ':' + zeroPadding(cd.getMinutes(), 2) + ampm;","eventsLimit":5,"includeFollowers":"yes","includeRedemptions":"yes","includeHosts":"yes","minHost":1,"includeRaids":"yes","minRaid":1,"includeSubs":"yes","includeTips":"yes","minTip":1,"includeCheers":"yes","minCheer":1,"direction":"top","textOrder":"nameFirst","fadeoutTime":999,"fontColor":"rgb(255, 254, 254)","theme":"texture","backgroundOpacity":50,"backgroundColor":"rgba(36, 6, 73, 0.15)","iconColor":"rgb(255, 255, 255, 255)","locale":"en-US","fontSize":28,"fontWeight":"900","fontName":"Exo","textShadow":"rgb(0, 0, 0) 0px 0px 0px","time1":"week[cd.getDay()]","messageOrigin":"bottom","time2":"''","time3":"''","time4":"''","datetime":"{{ date }} {{ time }}","1224hr":"zeroPadding(cd.getHours()) + ':' + zeroPadding(cd.getMinutes(), 2);","fontColor2":"rgb(255, 254, 254)"}
Oh man, what a mess
but some how you would need to split that to 4 then : then 51AM
in your Field Data; what is "time" ?
@river prism I think you'll have an easier time using a framework to do this
something like Javalin.io seems usable
This is hard, Streamelements displays the data one as ONE LINE
it will handle the http stuff for you so you just deal with the result
the DATA doesn't matter. that is just saved stuff
look in the Fields tab for time
So there's like 4 of them
"time1": {
"label": "First Displayed",
"type": "dropdown",
"value": "Year",
"options": {
"zeroPadding(cd.getFullYear(), 4)": "Year",
"month[cd.getMonth()]": "Month",
"zeroPadding(cd.getDate(), 2)": "Date Number",
"week[cd.getDay()]": "Day",
"''": "None"
}```
That's one
what is datetime
Not there at all
and ... whoa... you imported vue and open a whole new world of options for the Field tab. ... my mind is blown; but i don't know vue
I didn't, Mr. Boost did
oh. that sneeky bastard.
Hahahaha
on this line: {"1224":"zeroPadding(hours) + ':' + zeroPadding(cd.getMinutes(), 2) + change that : to '<span class='blink_me'>:</span>'
๐ค ... i'm guessing
Which tab is this in? I'm blind
in the data tab
Yeah that breaks it
first line here: {"1224":"zeroPadding(hours) + '<span class="blink_me">:</span>' + zeroPadding(cd.getMinutes(), 2) +
opps; ya i double used ' s. try that. blink_me in " s
Turned it green but still broken
Interestingly, when I save and back out of the editor and then come back in, it's back to single 's
one last try; ... put a \ before each " in the blink_me ... so \"blink_me\"
let me see if i can play with what you posted. give me a few minutes.
Sure thing man, thank you
can you repost your DATA tab?
Will have to do that as a file, Discord doesn't let me do that whole thang
1 sec
that's working with the "zeroPadding(hours) + '<span class=\"blink_me\">:</span>' + zeroPadding(cd.getMinutes(), 2) + ampm;" (looking at the : )
add animation-timing-function: steps(2, end);
so it blinks instead of fading in and out
@tame valve did that get it?
i can only get it to go from 0->.5 or .5->1 and loop?
but, very interesting. (i hate CSS) so i don't know these fun tricks
there we go ```css
animation: blinker 1s steps(2, jump-none) infinite;
I don't understand why these videos end up at 1s when I record for like 4 seconds
this would've been much easier if they hadn't removed <blink> from html
oh wikipedia of all places taught me a simpler version ```css
.blinkme {
font-size: 20px;
font-family: avenir;
color: red;
animation: blinker 2s step-end infinite;
}
@keyframes blinker {
50% {opacity: 0};
}```
it's funny neither blink nor marquee was ever standard
blink was supported by mozilla and descendents
but ie didn't
ie supported instead the much more complicated marquee
it's all CSS now; or greensocks/anime
๐ค that helps ya GM. ... i need to have a chat with Boost about the Vue-doo magic. my mind is blown. i thought it was strict JSON ... but makes more sense now with the {{VAR}} stuff.
@brazen owl, posting multiple links will result in not being able to post again.
Don't get it what you guys trying to achieve here but see you suffer a lot
I made that blinking : one time with a class, if seconds % 2 -> addClass with opacity
But Vue into a widget...crazy
not much suffering. just trying to get the : to blink from the DATA tab ๐ #dev-chat message
i'm new to Vue. so learning new stuff.
0 js.
I mean you could do a blinking animation in javascript by adding and removing classes
or you could do it the easy way and use a css animation
I looked up the old blink tag on wikipedia earlier and it had a nice example of why you don't do that
i'd do the JS way... to be honest (i know CSS is better, but i'm not a CSS person)
ughh. .. but that css is way better.
close Internet Explorer and try a real browser
I'm in heckin chrome
it's got that early 2000s vibes
i'm going to use that for sure. the code snobs will call me out though.
Some real perversions here
forgot to \escape the JSON #dev-chat message
It depends really. I was already using setInterval to make a timer, and it was better to sync the blink animation with it
Didn't know
the best way to do the blink thing; ... i'd do like you; that toggle Class in JS. ... but that CSS animation is nice.
and in a few hours someone will be like "Greensocks" better... never use CSS animiate use Greensocks!
That's a really weird case, html into data, vue.js in custom widget... Like wtf
I know, I love CSS
i know; right?!? that is new to me.
Same to me, just saying
but hindsight; is like oooohhh.... that {{variable}} injection makes waaaay more sense now
cause Vue
I hAtE wEeBs!!
it's good here ๐ and i like the convos never anything is better or worse ... more of a try this or that
Alright, so.
This in the CSS box:
font-size: 20px;
font-family: avenir;
color: red;
animation: blinker 2s step-end infinite;
}
@keyframes blinker {
50% {opacity: 0};
}```
What else?
SE uses Angular, I think those {{}} come from there and not Vue (might be wrong tho)
CSS is good. it's the DATA tab to inject to blinky
that could be true. ... i'm a "react" person... and i say that lightly.
you can remove everything but the animation from blinkme
HTML is this now
<div id="clock">
<p class="date">{{date}}<p class="time"> {{time}}</p></p>
<div class='blink_me'>BLINK</div>
</div>```
And result is
There's a blink but it's the word BLINK. Which, I get, I just change that word in the HTML to :
But I got to that point before. The blink is going to be after the time digits this way
yasss
yes you need to make it so that the time that's filled in has a : with class blinkme
Also this blink is fading... there's no way to make it pop in and pop out instead (like a real clock), right?
if it's fading you didn't use the right css
1 thing ad a time...
yes also that
Yeah let's put it in the right place first lol
Ok so how do I make it go in between the time digits?
This is the one thing that never worked
what does the data stuff look like again
{"1224":"zeroPadding(hours) + ':' + zeroPadding(cd.getMinutes(), 2) + ampm;","eventsLimit":5,"includeFollowers":"yes","includeRedemptions":"yes","includeHosts":"yes","minHost":1,"includeRaids":"yes","minRaid":1,"includeSubs":"yes","includeTips":"yes","minTip":1,"includeCheers":"yes","minCheer":1,"direction":"top","textOrder":"nameFirst","fadeoutTime":999,"fontColor":"rgb(255, 254, 254)","theme":"texture","backgroundOpacity":50,"backgroundColor":"rgba(36, 6, 73, 0.15)","iconColor":"rgb(255, 255, 255, 255)","locale":"en-US","fontSize":28,"fontWeight":"900","fontName":"Exo","textShadow":"rgb(0, 0, 0) 0px 0px 0px","time1":"week[cd.getDay()]","messageOrigin":"bottom","time2":"''","time3":"''","time4":"''","datetime":"{{ date }} {{ time }}","1224hr":"zeroPadding(cd.getHours()) + ':' + zeroPadding(cd.getMinutes(), 2);","fontColor2":"rgb(255, 254, 254)"}
A block of mess
lul
that's ok I can unmess that
๐ค that top line....
{"1224":"zeroPadding(hours) + '<span class=\"blink_me\">:</span>' + zeroPadding(cd.getMinutes(), 2) +
and the fields?
Been over this before. When I do that, this happens
Now there's no clock
Fields:
Can't post the whole thing as Discord tries to push Nitro on me
One thing that's weird is, in the tutorial video I saw of this (by Nutty), this widget had the option to not show a clock. It doesn't seem to be in there anymore (I'm using it in two lines and I only need the clock in one of them, so I guess this data thing accidentally helps me get the clock out of the other one lol)
is there a "time" in the fields?
There's 4
time1, time2, time3 and time4
So from what I understand, these are because the widget is 4 elements and you get to pick which order they appear in.
in your html where it is {{time}} change that to {{1224}}
The one that is -actually- the time is the 1224 one, yeah?
Ah HA, ok
Did that. Still no clock
exactly what i was wondering; where is "time" coming from ๐คฃ
Wait a second...
what widget is this?
it's gotta be working.
It's not
So when I do 1224 in HTML it also removes the clock
What I just tried was, instead of replacing the : with <span class="blink_me">:</span>
In Data, I did it in Fields. Still no-go
send me a dm @tame valve
Clock by MrBoost
Should've done that from the get go, so you can look in there instead of having me repost things ๐
Oh, I just realized why I shouldn't post it hahahaha
Hi guys, could somebody help me out adding animations to additional StreamElements data?
I want to add animated text for {{sender}} for example in the JS section.
As soon as I add the const sender the animation stops working.
I think I have to add some code separately for every animation? Sorry, I'm completely new to this.
My code in the JS part:
const name = '{{name}}';
const sender = '{{sender}}';
const amount = '{{amount}}';
const animation = 'rubberBand';
const userNameContainer = document.querySelector('#username-container');
const senderContainer = document.querySelector('#sender-container');
const amountContainer = document.querySelector('#amount-container');
userNameContainer.innerHTML = stringToAnimatedHTML(name, animation);
senderContainer.innerHTML = stringToAnimatedHTML(sender, animation);
amountContainer.innerHTML = stringToAnimatedHTML(amount, animation);
function stringToAnimatedHTML(s, anim) {
let stringAsArray = s.split('');
stringAsArray = stringAsArray.map((letter) => {
return `<span class="animated-letter ${anim}">${letter}</span>`
});
return stringAsArray.join('');
}```
CSS and HTML are working fine.
did you add a "sender-container" into the HTML ?
Yes. It's within a div container. <div id="sender-container"></div>
in your function stringToAnimatedHTML(s, anim) { change to function stringToAnimatedHTML(s = "TEST", anim) {
That doesn't work. FYI: As soon as I remove the parts for username and amount, the sender animation works fine. The same happens for the username and the amount part. It seems that the function does only work for one container!?
check your web inspector's console log
Oh, okay. I get a Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
Uhm. Okay. I see. Thank you so much for the hint.
But I want to add the values in a custom text field with {sender} {name} and {amount}. Like
{sender} keeps {name} {amount} months in the dungeon. (Just for example)
The text has to be flexible for different variations.
you're gonna need some more code for that
I think so. I'm lost. lol
are you doing this for a sub variation?
Yes. It's for subs. Sub gifts and / or community gifts
you could replace the strings yourself
and make a message like [sender] does something to [name] instead
the problem being that the usual {name} and such are replaced by streamelements before your code runs
Are there any examples out there? I'm able to unsderstand how it's working if I can take a look at it but never coded something like this by myself. Sorry.
yeah hold on
โค๏ธ
Are you doing it inside the Alert Box as custom CSS or going full custom code widget?
let elems = document.querySelectorAll(selector);
elems.forEach(elem => {
elem.innerHTML = elem.innerHTML.replace("[displayname]", content);
});
}```
judging from what i've seen, it's Alert Box, but just want to check
and then somewhere else you'd do ```
setLine(".line1, .line2", display_name);
do do a replacement of "[displayname]" with the variable display_name (which you'd run through stringToAnimatedHTML() first) in any element that has class line1 or line2
do you get the idea?
Yes, it's an alert box.
I just duplicate them to keep the code for all of them the same and just change the messages in the custom text field.
that is fair. hahaha.
As I said: I'm completely new to this...
do you want an image or video in it? or sound?
hahaha; you'll be a professional in 30 minutes. we all are
I use images and videos.
And don't laugh at me... I use the dropdown field to chose image or video to get the correct code in the html part. 
{srcurl}
</div>```
``` "srcurl": {
"type": "dropdown",
"label": "Bitte wรคhlen:",
"value": "bild",
"options": {
"<img src='{{image}}'/>": "Bild",
"<video id='video' playsinline autoplay muted style='width:100%; height:100%'><source id='webm' src='{{video}}' type='video/webm'></video>": "Video"
}```
lol
in your case what I'd do probably is something like ```
let message="{message}"
message.replace("[name]", stringToAnimatedHTML(name, animation));
(the same for the other two)
document.querySelector(".message").innerHTML = message;
so instead of replacing the name/sender/amount individually, replace the whole message at once
I'm assuming {message} is the right one here I'm not entirely sure
Okaaay... I have to try that. Let me collect the jigsaw. โค๏ธ
oh you want {{anouncement}} it seems
Okay. I don't get it. Sorry. Damn. I just wanted to align the whole alertbox at the bottom. And now it seems to be a project of my life. 
what don't you get
What I really need now to replace the message. Just your latest code snippet?
@pastel granite what's the html look like now
Hello!,
is this the channel that i need to contact for support help?..
i do need help getting my twitch account unbound from my old stream elements account which i dont remember
did you look at the channel list and see a helpdesk channel that mentions the platform you're inquiring about?
Hey guys!
So, I noticed the chat widget CAN use my system fonts as custom fonts.
Is there a way to add code into other stuff so those also do this, thus allowing me to just tick custom, type it in and it works?
Like instead of having to import a specific font via CSS every time, then seeing it in OBS, not liking the design and having to re-do?
Or, maybe a way to import adobe fonts instead of google? That'd do the trick actually
What's exactly the issue with Google Fonts? Not sure I've understood, but you don't need to import each font manually in the CSS, you can control it easily with a dropdown:
<link href="https://fonts.googleapis.com/css?family={{fontFamily}}:100,300,400,500,700,900" rel="stylesheet"> (for the HTML, or the equivalent @import in the CSS)
And then add a field like
"fontFamily": {
"type": "googleFont",
"label": "Font",
"value": "Montserrat"
}
The problem with google fonts is I can't find one I like in there because the filters aren't thorough enough.
Adobe fonts are just generally better, and the search filters are a LOT better.
I'm trying to match a font that's in a nowplaying widget and the filters just make it a LOT easier
ok ok, I thought you were replacing the import manually for each font or something. I haven't played with system fonts or other fonts, sorry
I was, because I don't see another way of doing it
Obviously this is impossible to work with
ok thanks now im get it
Hi Guys, Im currently looking at the level up goal widget by annedor. I was wondering if anyone has worked out how to have it track subs rather than Tips?
Does anyone know if someone else is using a widget that I share via URL if it will be able to do things that are activated through chat or will it be reading my chat?
You would need to change some values on JS tab.
Taking a quick look, where it says "tip-goal", you change to "subscriber-goal" and where it says "tip-latest" you change to "subscriber-latest"
And remove the $ sign on HTML tab. Maybe there are other fields to play, but you would need to test and work on it.
Could you elaborate your question? I'm not sure if I understood it
So I'm developing a widget for a friend and had just planned on giving them the URL so that I could update it for them without having to worry about giving them the new version every time. I know that you can use the SE bot to retrieve information from the chat and use that to modify overlay based on that but I was wondering if I didn't actually share the widget through publishing it or w/e just hitting the Copy URL button and sending them that link if it would still be able to read their chat.
lol after some initial testing it does appear that no you can't
If you created the widget on your account and want to send the link for that overlay, it will be linked to your account. So if your widget uses any SE event, it will be triggered for your channel and not theirs.
What I usually see is some orgs that have banners with their sponsors and then they gave that link to the streamer so the org can update the sponsor images and the streamer will get it automatically
Oh it's nothing that fancy. It's just for development purposes I don't want to have to keep sending them the updated versions xD
Guess I'm just gonna have to send them new versions everytime I update it or find another way around it
Or your friend can give you editor on their Streamelements
That way you can edit their overlay whenever you want to update it
Guys!
Does SE have a way to have alert test buttons inside OBS?
The way it's set up right now is not great, you have to be inside your overlays on the website, then click the menu thing, then click alert type and THEN finally, the alert
And then you have to alt tab back to OBS to see but if it's quick you missed it.... And here we go again
Also...
A couple of AWESOME dudes helped me earlier with some clock overlays.
I find that I need to do some more tweaking on this and I'm struggling again...
But this is easy, I just want the text in the clock to align to the right so I can line them up properly.
I am trying to be able to use obs studio to stream, but my audio suddenly cut out, can someone help
Is there any way to make a sound command for a specific user?
Like an audio input for my digital audio interface
@lilac bridgeThere is not.
oh streamlabs does.... guess ill be switching to that.. Thanks
Question, is there a version of the eventlist widget that can tell the difference between gifted subs and regular subs
Only useable by a specific user or is the sound triggered by the first chat msg of a specific user?
Solutions for both scenarios should be possible with custom widgets. (The first one is already covered by the 'Video On Command' custom widget, tough).
sounds like a CSS problem? Did you already try text-align or margin-left?
https://developer.mozilla.org/en-US/docs/Web/CSS/text-align
This sounds like a general OBS problem?
If so, the folks on the official OBS Discord might help you.
In newer OBS Versions you can find a link to that under the 'Help' category in the OBS menu bar.
I have a question regarding video playback (of mp4 videos).
The example below plays in the browser, but not in OBS (so basically in CEF).
According to some stackoverflow answers, this is a codec issue (?)
https://stackoverflow.com/questions/59575063/cefchromium-embedded-framework-doesnt-play-mp4-videos
https://stackoverflow.com/questions/65687191/can-chromium-embedded-frameworks-mediarecorder-support-h-264-mime-types
Is there anything, I can do about it?
HTML:
<div class="main-container">
<video id="video" playsinline>
<source id="source" type="video/webm">
</video>
</div>
CSS:
.main-container {
width: 100%;
height: 100%;
}
#video {
width: 100%;
height: 100%;
object-fit: contain; /* centers the video. */
}
JS:
window.addEventListener('onWidgetLoad', function (obj) {
let videoElmt = document.getElementById("video");
let sourceElmt = document.getElementById("source");
videoElmt.pause();
sourceElmt.src = "https://cdn.streamelements.com/uploads/ef08ac9b-56d4-4880-a671-4547bb672978.mp4";
videoElmt.volume = 0.5;
videoElmt.load();
videoElmt.play();
console.log("onWidgetLoad completed.");
});
I followed this link which is on a similar topic. But even after completing the steps mentioned in the link i' am not able to play any mp4 files. I have also tried removing the args.gn file in out/
hmmm ... might be an issue of the OBS version for Linux?
because on my machine it silently fails.
@hot trout
This is giving me a bit of a headache, because the widget I'm writing at, is blocked while the video is playing...
Since it silently fails, the widget is permanently blocked ๐
But thanks for testing! At least it would work for the majority of people.
there's a huge update coming to the browser source in 27.2 btw
you may want to check if that solves your issue
they're updating CEF in it
(finally)
that sounds promising ๐ฏ
it's one of those things that most people don't really know about but that people like me have been waiting for for literal years
the CEF in obs rn is very old
on windows
mac/linux have somewhat newer versions already
like I had some code break because I used string.replaceAll()
which the CEF in OBS doesn't have 
well, that raises new problems for me, as I do use classes and stuff in my widget ... ๐จ
I'm confused as to how that is impacted?
I assumed since the class syntax is quite new to JS (afaik) it might be a problem? But even better if it isn't!
oh
I mean the cef in obs windows is old but it's not that old
but yeah as desktop chrome gets updated it gets harder and harder to deal with
so yay update coming soon
they're at rc2 now I think
@dapper cliff, posting multiple links will result in not being able to post again.
Tried a LOT. Couldn't get it to align right
I've solved it this way:
Before
After
I've basically duplicated the clock 3 times, and stripped them so each one only has one set of data. So one time, one weekday, one month+day and one year
And aligned everything on the left
But now I'm doing the other scene and I need them all to the right so I'm back having the same problem.... Oof
idk how to help you but I just wanna say, that's a clean looking overlay
Hello there. Quick question. I know you can have arguments in commands like ${1}. However, after looking through articles and variables, I don't see anyone using ${2}. How would I incorporate this into my command? I have a file with 2 filter keywords, and I want each command argument to have its own respective filter. I hope that wasn't too confusing
Like to keep it simple, I have !test arg1 arg2, and arg2 is a sub case of arg1
As far as I understood, the widget / overlay you use is an external one from MrBoost, isn't it?
Is the HTML generated dynamically or can you post the structure here?
Is the question whether there are any concerns about the usage of ${2}?
Some commands in #command-share do use it.
Yeah, I was wondering if it's an established variable. Because the API I'm using doesn't like it :/
Fyrewire pastebin API^
@wary rover
so some thing like $(customapi.https://api.thefyrewire.com/twitch/pastebin/XXXXXXX?filter=${1},${2})?
But I'm not sure whether the api allows to filter for subcategories.
For the above command it says:
This will randomly select a line tagged with either [${1}] or [${2}].
https://thefyrewire.com/docs/api/twitch/pastebin/#return-filtered-lines
Thanks avoeh! I set it up exactly like that, so I'm assuming its the way their logic operates. Would be nice if they added a parameter for those who don't want random values. Like filter=${1} works like a charm, but the second you put in ,${2} it breaks
${customapi.https://api.thefyrewire.com/twitch/pastebin/XXXXX?filter=${1}&filter=${2}} Welp I just got it to work LUL
๐ ๐
it makes sense, would be nice to have it officially documented though ๐
nonetheless, it's amazing that thefirewire provides such an API ๐
Yes!
f
That wasn't a link, stoopid bot
Well hi there! It's me again lol
For @pulsar willow
it didn't like your typekit css link
Squid here is familiar with it hahaha
This should be dead simple, right? Just getting it to align right instead of left
I feel like I -should- be able to figure it out but I'm out of ideas because every single CSS/HTML/JS etc etc resource I find, has examples that aren't really used in the way SE expects things
So nothing I try works in there
in the css for #clock remove everything under text-align
and set the text-align either left or right
So it's the float thing screwing everything up then
it's the flex thing making it a bit harder here
you just want the text to wrap normally
This person's left the server now, but just wanted to chime in and say that the reason why it wasn't working is because , is reserved for separating keywords. If you want to combine two filter keywords, you can use a different separator, like -, e.g. filter=$(1)-$(2) will make a single keyword like case1-case2 ๐
Info for all devs, but especially those with custom widgets handling/dependent on SE queue: I've found out documentation is missing a number of events in the skippable array, that is the events that should never trigger a call to SE_API.resumeQueue(). Some of them have a critical impact, especially when using the widgets in the real world. You can find more info in the Github repo issue+PR I've opened. Not sure how often the repo is checked, so I wanted to warn here sooner rather than later just in case.
The updated array is
let skippable=["bot:counter","event","event:test","event:skip","alertService:toggleSound","message","delete-message","delete-messages","kvstore:update"];
personally i'd just make an event allow list instead of an event block list, because who knows what events might be added later
After searching into the docs, seems like there isn't an SE API to timeout users, is this right? If yes, is there any solution to catch timeout events via SE's events listener?
Definitely something you'd listen to via twitch api.
The event generated by SE when doing timeout/ban is the listener: "delete-messages" (in plural). But it does not give any other information other than that and the userID.
kinda the same problem, we don't really know what events might be added later that do cause widgets to be added to the queue, especially if your widget is meant to be multiplatform. The real issue is that we're handling half the operation (remove from queue) when SE is in charge of the other half (add to queue), and hoping that we both know what we're doing, and that's very bad. IMHO, either adding to the queue should be on our side too, so devs know for sure what and when things are added & removed, or SE sends some param with their events flagging if the event affects the queue, so devs don't have to manually track this info (the latter is prob much more easier and of course a non-breaking change)
Hey, i met a problem with the last event rotator widget ; in fact, i just put settings on never stop and he keep stopping i've tried to modify JS but nothing happened the developper is C06STUDIOS but i don't fin him
@wooden pulsar ^^^^
Heyy!!
I recently got in to creating StreamElements widgets and one of my clients asked if I could create something like Nerd Or Die has with there widget settings.
However I cant find docs or examples to recreate the following widget settings:
they're using the custom widget open from the โ in the editor.
Not the stock alertbox.
Yeah I understand but I cant seem to find how I would create that in the JSON / FIELDS area
Channel topic github link would be a place to start.
They have like an advanced settings tab and I am curious how they did their settings magic:
I have read the CustomCode file thats on the SE widgets GitHub.
Sorry that I dont understand what you mean with it
EDIT:
Sorry I found it >..<
Click โ in the editor.
Open ALERTS and select AlertBox
Then eneable custom CSS and edit the HTML, CSS, JS and JSON
Just to make sure I got it right: There is still no other way to structure custom widgets other than "group": "some name" in Fields, right?
@pulsar willow as far as I know that is still the way
Send me a PM so we can maybe find together why my very old widget is buggy 
this is the alertbox
oh you found it already
man discord should really fix the colour for โ
that thing is invisible
hahaha yeah, I saw the messages from sudo and MsTess and was like "why are they typing blank spaces?" ๐
Alright cool, that seems everything I needed. Thanks for your time
Hi all,
I'm wondering if it's possible to add active mods (current session) to the credits roll page.
Hey @mild cipher just letting you know this worked! By setting store items as Example1, Example2 and Example3 all with their own names I could then use ${redeem ${random.pick 'Example1' 'Example2' 'Example3'}} as the output for the command to then make the command itself !example and this worked perfectly! Thank you again so much
Hey there, I'm not really sure where I can ask for help, but on my Stream elements dashboard. It is not allowing me to set up my SE Pay. I have around $500 sitting in the SE pay and it won't let me put in my info to be able to have the opportunity to withdraw my money into my bank. The image is of what it tells me after I attempt to put in my social , address, and phone number.
@unique plover โคต๏ธ
Please contact us via email for support with SE.Pay. You can use our contact form here: https://streamelements.com/contact Thank you.
Is there a way to get error-related information out of an error event object?
I found some stackoverflow answers about this, but each is recommending something different and none seem to work.
<video id="video" playsinline>
<source id="source" type="video/webm" src="some.url.whatever/asdf">
</video>
let sourceElmt = document.getElementById("source");
sourceElmt.addEventListener('error', (event) => {
console.log(event.currentTarget.error.code);
});
Is there a limit on being an Editor in StreamElements? I get this error
@icy hound merch is not available for editor atm.
I clicked the invite link of the one I was modding but this lead me to the pic.
Make sure you're on your page and not someone else's when you accept it.
Ahhh I'll try it again
Hi,
Can you advice where I can look into commands related to twitch to use with JS in the overlay?
Like I need a function which are getting all the information from the chat after command !speak
e.g. !speak "hello I am a viewer"
In JS I need to record "hello I am a viwer" in a cell and then return it to the screen random position.
What commands should I use?
Third link from channel info, read about "message" event. The rest should be handled by your js code
Thanks
This might help you. (Widget dimensions should be at least 800x1000px for the example. )
Of course the features and style could be improved a lot, but it's a start.
I've added some Code that deletes the message after a certain timespan (20 seconds here).
// function to get random number in range (min and max included)
function randomIntFromInterval(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
// function that is called when an event occurs.
window.addEventListener('onEventReceived', function (obj) {
// ignore any event that isn't a chat message.
if (obj.detail.listener !== 'message') return;
let data = obj.detail.event.data;
let message = data.text;
let command = "!speak "; // appended a space to prevent false positive (!speaking etc.)
// '!' reads 'not'
if (!message.startsWith(command)) return;
// create new HTML element, style it and append it to the widgets body.
let newElmt = document.createElement("p");
newElmt.innerHTML = message.substring(command.length);
newElmt.style.display = 'inline';
newElmt.style.position = 'absolute';
newElmt.style.top = randomIntFromInterval(10, 800) + "px"; // vertical range
newElmt.style.left = randomIntFromInterval(10, 1000) + "px"; // horizontal range
document.body.appendChild(newElmt);
// removes the element after X milliseconds.
setTimeout(() => {
document.body.removeChild(newElmt);
}, 20000);
});
Thank you, will have a look!
bump
You probably want to check error on parent <video>: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/error
For some reason this is null.
Since the <source> triggers immediately an error event, I assume that it isn't a MediaError.
But I wasn't able to extract any error code so far.
Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle code editor.
I see, honestly don't know how to handle <source> errors. However, if you don't need multiple <source> tags, or at least for debugging, you can directly use src in the video tag:
<video id="video" playsinline src="some.url.whatever/asdf"></video>
let videoElmt = document.getElementById("video");
videoElmt.onerror = () => {
console.log(videoElmt.error)
}
(in this example it will print something with code: 4, message: "MEDIA_ELEMENT_ERROR: Format error"
thank you! @still juniper ๐
Hi, sorry to bother you all, I just installed the streamelements leaderboard extension and enabled it as panel 1 on my twitch, it says no data and isn't displaying points or how long people have been subbed for, any advice please?
A question for #tech-talk
anyone know anything i can do to change the watchtime variable? i want it to list a more accurate time rather than every 10 minutes
or if anyone has custom commands they might have added to their stream elements please let me know
It is not possible to change it. The 10 minutes update is by design
Btw they banned cors requests to that endpoint 
just proxy it then
Can you change the command for giveaways?
Where did you get that info from?
Browser's console and Google then
You mean run node.js server?
any http proxy can strip and modify headers
I mean, CORS was never supported on that endpoint afaik, it's not that they banned it
just use herokuapp or if you have your own node server. just setup cors anywhere
takes 10 mins to set up a proxy
Hi I am trying to make my alerts quieter, but in stream elements editor it isnt working and it is still same. I made it from 100% to 18% and it was same. I tried to make it on 0% and it still was like 300% ๐ Please help me ๐ฆ
Hi i got a chatbox template from the github and was wondering if theres some framework i'll need to install to make the double brackets work on css?
have you tried going into the individual alerts (follower alerts, subscriber alert) and change the volume there? eg.
All those variables should be specified in FIELDS tab in order to work. There should be .json file somewhere
there is a .json file, maybe its working as expected but vscode just threw it as an error since its not default css? thanks though maybe i'll have another look and try it
There should be nothing to do with vscode, create custom widget and throw everything there. Of course vscode itself doesn't know what to do with that text, replacing happens on SE's side
ahh right okay that makes sense, shouldve thought of that before, thanks!
yes vscode complains because it doesn't know about it
I use variables to make it stop
so I have an html file that I use in my browser for developing and in that I put a css (or js) tag like so
whereas in the html for streamelements I put this
which lets me write the css like so
the same concept for javascript
Yes I was doing this and it was still same on 18% as like on 100%
i have a problem with the intergration of obs and the stream deck, my media request buttons don't work mainly the play/pause as well as the skip back and fouth
fourth*
Well, I had this issue long ago but it was only because I always forgot to click on SAVE button on Overlay Editor, so OBS was always playing the same volume. ๐
Also, check the variation settings and change the volumes in there (always clicking on SAVE after changing)
This is using the SE.Live plugin, right? My recommendation is that you check with people in #helpdesk-selive. I've heard some people with some issue with streamdeck yesterday, don't know if it is the same problem, though.
thanks will do
I am sure I clicked on save but I can try it again 
Another suggestion is to create a new empty overlay and try to setup an alert in there, just to test. If that works, try to duplicate your current alert to that new overlay
I hope it will work, bcs I am starting to be bored of that 
I would like to ask about posting a widget into #widget-share, where should I ask?
#widget-share channel topic
this link lives in my head rent free: https://strms.net/codeshare
Wait guys, I don't have the widget ready yet. Just want to make a few questions about it.
sure shoot!
I'm planning to develope two versions of the same stream widget, my will is to give away the basic one for free and sell the more advanced and customizable one. Is it something doable? Would that fit #widget-share/SE ToS? Any similar expirience in the past?
we currently only allow Free to Use widgets, so we would have no problem hosting your free solution, but as with every widget its submit to a review before we share it
so feel free to use the form and after the review I can get in touch with you about it 
Can't we talk before?
sure you can DM me
<-- feel free to DM :)
someone with rep pref ๐ sorry
I'm avaible, DM me. I can show you past works and clients.
added u
Hello, i just switched from Slobs To OBS. Iโm currently adjusting my overlay through stream elements SE.live but Iโm having a few issues
I'm seeing a lot of people having problems with host alerts while using SE. Idk where this should be said tho.
lol
For some reason my credits roll didn't reset after my last stream. It has gather the info from in between scenes and added it to everything that happened on last stream...
Any advice?
hi! i'm new here so i'm sorry if this is the wrong place to ask or a dumb question. i was hoping to set up something for stream where i had a looping "idle" animation up that would react to donations. and when it reaches a certain goal(s), the animation would change to a different loop/idle to reflect the progress.
idk if this is possible, but if anyone could point me in the direction of something like this, or to a guide where i could figure out how to set this up myself, i would appreciate it a bunch!
i would make the animations myself btw, so that's not what i'd need. just the means to get it to react/change based off goal progress. thank you~
welcome ๐
If there is no such thing already, you could use a Custom Widget to implement it yourself.
Those are basically HTML, CSS, JavaScript and some JSON for the input fields.
You find more information in the channel description (the github one).
It might also be helpful to take a look at published custom widgets in #widget-share .
hi i have my problem to my js, i think my code has a problem and cant fix it
its o goal widget that rotate 360
this is the ui
it for a tip goal but the js isnt working
check for errors in the console @spice cypress; might be trying to do Math on Strings?
this the error i get
your problem is in the JS tab. change the obj.data... values to hard coded values. then work backwards to fill each one in
hardcode these in ^ @spice cypress
i dont get this?
...so for like these lines:
hard code the values in: ```js
$('#title').html('title');
$('#goal-current').text('23');
...
keep checking the console for errors like ^this. and replace those object.detail.amount with a value like "5"
no errors but theres no result and i the goal seems to be not working
you don't get any error for this?
no idont have any error
what do you see in the console when you add a console.log("obj.detail.type: ", obj.detail.type) ?
i dont see console.log("obj.detail.type: ", obj.detail.type) on the console
HTML:```html
<div id="type"></div>
JS: ```js
window.addEventListener('onWidgetLoad', function (obj) {
console.log("obj.detail.type: ", obj.detail.type)
$('#type').html(obj.detail.type || "obj.detail.type is null");
});
obj.detail.type does not exist
you are are also missing some selectors in your jQuerys ... the $('tip') needs the # to get the container ID; $('#tip')
pls exxplain why should i put type null ? it should be tip right since im making a goal widget for tip
you have a bunch of data that doesn't exist; so you can hard code values in. then fix the spots where you see the value being null
can i dm you
sure.
window.addEventListener('onWidgetLoad', async function (obj) {
const data= obj["detail"]["session"]["data"];
if (data["subscriber-latest"]["gifted"]){
$('#latest-sub-event').text(`${data["subscriber-gifted-latest"]["name"]} gifted x${data["subscriber-gifted-latest"]["amount"]}`);
} else {
$('#latest-sub-event').text(`${data["subscriber-latest"]["name"]} - x${data["subscriber-latest"]["amount"]}`);
}
});
Can anyone point out what's wrong with this? If I simulate a sub gift and then trigger onWidgetLoad, it result in "gifted x0".
mmm, cheers and sub got saved actually
i do not btw
I mean simulating them doesn't save to the widget data
so when you reload the widget it comes up with no data
gift a sub on your channel for real and it should show up
assuming you have those data keys correct
which you can check with the url in the channel topic
I'm not refreshing the webpage just open the editor and close to trigger the reload
they are correct
"onWidgetLoad" is used to load initial values on your widget. It will not be updated when receive an event. When you run a sub event, you need to use "onEventReceived" to update the values.
If you want to change something when you trigger an event, you should use "onEventReceived" after that.
isn't onWidgetLoad get triggered anytime you open up the widget?
Here you can see the keys for onEventReceived:
https://github.com/StreamElements/widgets/blob/master/CustomCode.md#on-event
Only when you start the widget, yes. When you trigger an event, it will not load again
It will load again if I edit the custom code and close the editor, right?
Right, but if you run the emulate button, it will make no difference, because onWidgetLoad get actual values on start. And the emulate button does not save data anywhere.
Alright gotcha, thanks!
like I said, gift a sub on your channel for real and it will show up
hi im creating a widget goal but kind of an health bar instead of increament od numberes it decrement
i did the function but for decrement of the Healt text but the healthbar is not responding and i dont know whats may seems be the problem
๐
is there a way for the streamelemtns/night bot to type something when ads are being run
no, as there is no signal from twitch to the bots that ads are being run
@fading compass I assume you applied for Oauth access?
rigth
Okay
Email support@streamelements.com with the name you gave for the app along with the app name.
The person who handles this is off today and perhaps tomorrow so Monday would be the earliest they'd probably look at the ticket.
ty a lot
Hi. I would like to get list of nicknames of gifted viewers. As API endpoint or JS event listener. How to deal with it?
@severe shell @hardy walrus
I simply directed you here. Can't help.
ok. I'll wait for someone else
SE API nor JS event listener do not provide a list of the viewers who received a sub gift. But you can get the viewer name when someone sends a gift using onEventReceived
obj.detail.listener.subscriber-latest. Check if obj.detail.event.gifted is true and then you can see the user who received the name in obj.detail.event.name
Check the values here:
https://github.com/StreamElements/widgets/blob/master/CustomCode.md#on-event
unlucky. Wanted to display a gift alert along with the gifted nicknames :/
Can I get some help please?
guys hello can i know the command for valorant rank for night bot
@raw cloud You'd have to ask them. Can't help with that.
thank you for ur response , can i have their discord server pls . thanks a lot,
Hello, Im trying to link my youtube and twitch account together but it is saying my youtube account is already claimed. How can I make it so that they are on the same account?
@fast rose โคต๏ธ
Account Merging - Please note:
- Merging accounts only allow faster ways to switch between accounts
- Merging accounts does not allow data sharing between accounts - different streaming platforms, different type of events
- Merging accounts allows duplicating/sharing overlays between the accounts
If you understand the limitations of merging and want to proceed, please find the JWT tokens (!jwt) from both accounts you want to merge and fill out the form here: https://streamelements.com/contact with each token correctly labelled
When we duplicate an overlay to another account, why all the media involved are transfered too?
By "media" you mean fields of type "...-input", right? (e.g. "type": "video-input")
I assume it happens because the selected media is stored as an URL in the 'Data' tab of the widget?
Therefore my approach so far was to replace the content of 'Data' with {}.
Happend to me too, I think it's actually doesn't transfer the media itself, it copies the data and the media is just a link to the file on your library
I suppose the link will also expire at some point, seen "broken" images after transferring the widget
Hey, does anyone know if the force field animated super theme got updated or something? One of my overlays just disappeared....
Everything was good until just a few minutes ago and I wasn't even on the streamelements website
Hey Helpdesk,
Hopefully this is the right place to post this: I am having an issues with all the PHOENIX RISING ANIMATED SUPER THEME overlays. They will not let me put in my custom sounds for alerts it will only play the scifi ding thats on it, even when my custom sound is selected. Any way to fix this?
hi good morning can some one help me i have a problem to my new experiment goal widget
what kind of problem do you have with your widget?
i set my field like this but i dont get the value of the character
you're missing the closing } for "Rogue"
i already fix that but still the dropdown not reading my field to my html
that will put "Dragon" as the value of src
you'll need to use javascript to get the value of imgCharacters to then map to the value of Dragon, Mage, Knight, or Rogue, and then insert that value into the src attribute
so i must set a function on js that will inherit the value of Dragon, Mage, Knight, or Rogue to my imgCharacters
is this right
hey so uhmm im trying to add streamelements recent event list to my overlay
but the usernames and recent events are overlapping each other
is this a problem with the css?
yes probably its from the css
this is the username portion, any idea what i should put there? i tried text-align: left; but didnt seem to work
i tried to adjust both username container and the details container and they didnt budge if i increased or decreased them
ooh i think i may have fixed it thanks man! i adjusted the width to match the background width
`.username-container {
animation: 1.2s fade-in;
animation-fill-mode: forwards;
display: inline-block;
width: 140px;
font-weight: 400;
margin-top: 4px;
margin-right: 30px;
position:absolute;
}
.details-container {
position: absolute;
animation: 1.2s fade-in;
animation-fill-mode: forwards;
display: inline-block;
right: 0px;
font-weight: 700;
text-align: right;
margin-right: 35px;
margin-left: 65px;
margin-top: 3px;
}`
it was pixeled at 140 rather than 100%
to match the backgrounds margins
thanks for your help too!!!
coluid you try this code replace youre .username-container and .details-container with this
your'e welcome
hey, does anyone know why a font that I installed on my pc doesnt show up on the site?
set it on youre css font
font-family: "Font that you want to use";
font-family: 'VT323'; sample
@spice cypress Stream chat doesnt have custom css option
oh you will create a costume widget stream chat otherwise you cant use youre costum font
@nocturne hull โคต๏ธ
Google Fonts
More than 900 google fonts are supported at this time. You can preview them here: https://fonts.google.com/
Custom Fonts
Steps:
- Install the font on the streaming PC or choose a pre-installed windows font.
- In the overlay widget settings, select Text Settings
- Click on Enable Custom Font
- Type the name of the font as it appears in the windows font directory (This is usually
C:\Windows\Fonts)
Note: After installing fonts, the browser and OBS must be restarted for the font to appear.
try to find on widget-share a costum chat widget
find this one its a costumize chat widget
any idea why these images are cutting out half way?
i edited the width from 20 to 40, but the place where its drawing the image. if i try to edit the mask size it gets cut off
what do you mean cutting out?
everytime i change the mask size, it was original cover; but i changed it to 30pixels
it cuts out like in the first image
is it because of the svg images its grabbing it from earlier?
the full image does not show
only half but more zoomed in
I noticed that in some cases the actual chat messages differs from the message received by a widget.
For example:
chat message: a b c
displayed in twitch chat: a b c
printed in the console as: a b c
What assumptions can I make about chat messages?
Are they always trimmed?
For testing I used:
window.addEventListener('onEventReceived', function (obj) {
if (obj.detail.listener !== 'message') return;
console.log(`'${obj.detail.event.data.text}'`);
});
Messages sent through IRC by Twitch are always trimmed afaik. Twitch removing duplicated spaces in their rendering is their own internal formatting on top of that
ah kk, thank you! ๐
Can you show the image that you said cutting out
Does anyone know if its possible to use StreamElements tts in a Custom Widget?
Thx!!!!
Hey I have a Question about the API,
I have Opened a Giveaway
When I GET https://api.streamelements.com/kappa/v2/giveaways/5e1cc492fd06bc9a31340a42
I become the following response:
https://dev.streamelements.com/docs/kappa/b3A6NTM5NzE2Ng-channel
Okay I have found the issue, I can get the Giveaways over this URL
https://api.streamelements.com/kappa/v3/giveaways/5e1cc492fd06bc9a31340a42
Hello, I have a question about scrolling text that I was hoping someone could answerโ
I have a label for latest subscriber, and I have it scrolling just in case the username is too long for my bounding box. By default, the space between the end and start of the username is really big, to the point where there's a stretch of time where there's no text at all scrolling across the screen.
Is there a way to minimize the gap space between the end and start of the username being scrolled?
The marquee element in HTML does not repeat until the last element disappear. So yeah, there will be a moment without any text because the scroll will only run again when everything is out.
Gotcha, that makes sense! Thanks for the explanation
ALSO hey, thank you and everyone else at Streamelements (and the SE community) for providing a free product AND free support, like what, who does that lol?! You guys are awesome, keep up the great work!
Hi guys,
I'm currently trying to ditch StreamLabs and move over to SteamElements but there are a few hiccups, I have custom styled (HTML/CSS) goal progress bars. The tip goal option doesn't allow for custom HTML/CSS styling (like the alerts do) and the static HTML/CSS/JS object doesn't seem to include the total data.
Can someone help point me into the right direction?
This is an example of what my goal bars currently look like
code example (what is currently set up in StreamLabs, doesn't quite work in jsfiddle ๐ ) https://jsfiddle.net/ca62ov3f/
@clear finch you'd have to create a custom widget
luckily someone has done exactly that: #widget-share message
so you'd just adjust your styling to match that one
or you can slot the streamelements data into the code you already had
Thanks @hot trout Iโll look into it ๐ trying to ditch StreamLabs as soon as I can ๐ turned out to be a whole lot more work than I had thought
#downsidesOfCustomizing
yeah
streamelements lets you do a whole lot more than streamlabs does though so it's worth the effort
they do and at the same time they don't ๐
but hey, any product has goods and bads (trust me, I know, I'm a UX designer
)
I'm leaving streamlabs because they're a shitty company, with shitty morals ๐
But they did make it 'easy' to adjust just that one widget. StreamElements so far allows for far more customisation however a few more "base" examples wouldn't hurt, or just add a "custom HTML" option to the goal bars that you can just select. Or more documentation on how to get started
wasn't too clear either to address the streamelements API for data ๐
but hey, can't have it all right?
I did find some code that uses parseInt(obj.detail.event.data.tags.mod) to check whether a user is a mod.
Is there any reason not to use Boolean(obj.detail.event.data.tags.mod) or use an implicit conversion?
mod is a string not a number. Boolean("0") and Boolean("1") both evaluate to true, definitely not what you want
thank you ๐
hi is there a way how can i random the color of the username in chat widget thanks for the answer
or inherit the color of the username thats all thanks
Hello , sorry for bothering. I don't know where to address this issue.
I'm having a little issue with SE.Pay
To get the username color, you can check detail.event.data.displayColor from message listener. However, this option sometimes is not available, so you would need to treat that in those cases.
window.addEventListener('onEventReceived', function (obj) {
if(obj.detail.listener === 'message') {
const displayColor = obj.detail.event.data.displayColor ? obj.detail.event.data.displayColor : '#FFFFFF'
console.log("displayColor:", displayColor)
}
})
Oh so if I can't get the color of the username I have to create syntax
If you want to random it:
const newColor = '#' + Math.floor(Math.random()*16777215).toString(16);
From the example I gave, if the displayColor value does not exist, it will be white (#FFFFFF)
@grand flame โคต๏ธ
Please contact us via email for support with SE.Pay. You can use our contact form here: https://streamelements.com/contact Thank you.
Ok thanks I'll try it later
Hello everyone!
I've been trying to configure the Alpha Gaming Rotating Feed to display Session Followers and Session Followers Goal but I didn't manage to get it working.
This is the addon: https://streamelements.com/dashboard/overlays/share/5de9a01f0a74c326b5fa6c68
So my goal was to make Event 1 display latest follower (that Is working as intended) and on Event 2 I wanted to display the session followers/session followers goal such as "FOLLOWERS 0/100".
The thing is even if I select "Followers this session" in Event 2 and add a {amount} or {count} it doesn't work properly. It seems that it is showing me random numbers.
Is there a specific variable to get session followers (not the javascript one, I know you can get that using javascript).
Thank you in advance!
{count} is correct for that
the number should match the number in the session data:
(there is no {name} for that)
huh. what about goal? set manually or can i grab "Follower goal progress" from Session data using a variable?
it's not set up for that
so if you want a session follower goal you have to jank it:
result
or use the other field to make the text white
or a combination
aight, thanks for the help โค๏ธ
@hardy walrus Sorry to bother you again, I sent the email last Saturday but I still haven't had an answer
Hi Guys,
I show a list of the highest tier members of my channel on the stream. I used to write them manually on a TextGDI+ and movement filter, but now there are too many, and the Text box can't show all. Is there any way to do this with SE? Thanks in advance.
Highest tiers you mean tier 3 subscribers?
@fading compass Mind DMing me the email it was sent from?
done
Yes, but im on YouTube (It could be more tiers, but in this case, tier 3 is the Max) subscribers are members on YT ๐ฅฒ
I'm missing some features also for youtube, so It would be awesome that someone guides me ๐
Oh, so let's wait for someone who is more experienced with Youtube streaming... I don't know much of Youtube streaming platform
so...uhm... another surprise regarding queueing: SE_API.resumeQueue() removes from the queue all custom widgets in the overlay, not just that one you make the call from. So basically, you have zero control over the queue/duration of your custom widget, because you depend on what other custom widgets in the overlay do (if they resume earlier than you, you're screwed because your widget did get removed too).
@elfin arch I've joined the devs Discord (you sent me the link some time ago) but it seems pretty dead, doesn't seem staff interacts with it a lot. Should I bring queue issues there? Is there a better way to let staff know the issues/feature requests and have a conversation about them?
@random comet
#widget-share message
I think there is some problem with the widget because I have tried it in several ways and it doesn't work. I tried:
- URL steamID64
- steamID64 numbers
I also tried changing the region to Spain, leaving it in USA and even adding Europe in the code.
and
My profile is public
https://i.imgur.com/uCrTZyc.png
Hey lovely people in this discord,
I'm looking into a way to use SE in my app. But to get oauth2 credentials, i need to fill out a form. That would be no problem once my app is finished. But so that i can get started right away with all the back-end logic, are there mock credentials i could use for developing?
You'd have to use your JWT token.
Okay, so no testing the oauth flow for now. Well, no problem. Thanks for the info!
Can you give me the name of the game you were playing when this occured ?
7 Days To Die
I didn't really try any other games, just that one.
Have you changed your name?
Yes
@manic oxide โคต๏ธ
If you changed your name on Twitch, please follow these steps:
- Visit https://streamelements.com/logout and then log in again by connecting with Twitch.
- On the right side of the dashboard page that opens, select Join under bot settings. If it says Part select that and then select Join to send the bot to the chat. Don't forget to mod the bot by typing /mod streamelements in your channel if you have not already.
- Post your old and your new name here so that we can update your channel's chatstats tracking (must be done by staff).
Put it in #helpdesk-twitch please, along with your issue.
That way the proper people will see it.
Sorry didnt know if the wesite constituted for twitch
Old Name - Alpha_CJA
New Name - AlphaCJA
Since when do checkboxes trigger the widget to reload? ๐ฏ
I am experiencing issues with this. I have an MP3 file that's 173kb. When I go to upload a sound, it just says it failed at the bottom. I tried processing it through the linked website I'm replying to, but it still is failing. Is it because I am running obs as admin? Or--?
Is there a way to dump the same info that !song command provides into a notepad? I want to set up an overlay that displays the following information about the current song playing through media requests:
[Title] - [Youtube channel]
It's just that I noticed the current song overlay that SE supports by default only allows you to show the song title, and not the channel, while the !song command manages to pull the channel the song is from
This can be annoying when you're playing a song like "Epilogue" which can be a thousand different songs without knowing what channel the song came from
you could use the https://dev.streamelements.com/docs/kappa/b3A6NTM5NzIwNg-channel-playing end point to get that information inside your own custom widget and make your own.
it looks like that might be able to get the information Im looking for, but Honestly I have no idea how to implement that in a custom widget. Is there a good source for getting started on how to do that?
are you familiar with Javascript?
Can I store data based on alert variations? For example, if I have 10 alert variations for the subscription alert I want to be able to track each person that has subscribed and which alert variations appeared on screen when they subscribed
not really, I learned it a really long time ago, but I don't remember any specific code
i don't believe you can with the custom alert box. 1 sec...
give me a minute and i'll try to layout a quick basic for ya. won't be pretty but give you an idea of where to start ๐
I appreciate it! If I can just get the channel and title displayed in text, I'm sure I can find a way to spruce it up
i can probably get ya that far pretty easy
HTML: ```html
<div id='main'></div>
CSS: ```css
#main {
color: red
}
JS: ```js
window.addEventListener('onWidgetLoad', obj => {
const seId = obj.detail.channel.id; //get your channel ID;
setInterval(_=> { //set interval to check current song every 10 seconds
fetch(https://api.streamelements.com/kappa/v2/songrequest/${seId}/playing)
.then(json => json.json())
.then(data => {
if(!data) {
//do stuff here if no song playing
$('#main').html('No song playing.');
} else {
//do stuff here when song is playing
$('#main').html(Channel: ${data.channel} <br>Title: ${data.title});
};
}).catch(e => console.error(e));
},10*1000); //check every x milliseconds
});
it looks like this will display the channel I'm logged into on youtube, rather than the channel that uploaded the song playing
I am figuring out how to gussy the font up for showing as an overlay, so if we can get that field to show the song's youtube channel, then this will be exactly what I'm looking for
are you using a playlist that you have?
i'm seeing it show the channel
im using a youtube playlist that i put together
playing it through the SE media requests
this is what shouldve shown for the example i showed above
anyone know at all how i can get a command to work for a valorant rank? i have the api to show the data but idk how to make it into a command
its gonna be confusing with the multiple tracks called "epilogue" that the playlist has
i've seen this one used before: #dev-chat message
im noticing the API might be looking at the youtube channel that put the playlist together, rather than the song thats playing since the !song command also returns the same problem
ill see if it works ill get back with you
hmmm.... ya; it seems to be grabbing the channel for the playlist
That's as close as I can get ya; next step would be to set up a youTube dev account to get an API token and take the ID from SE then get then get the info from yT.... or it could be a bug
can someone help me with this or with some css for slow text fade for twitch chat?
I see, thanks for getting me this far, Ill tinker with it and see if I can get it working
I'm gonna go with a bug btw, the channel displays normally with a song thats manually requested. I'll report it to the Support team
Very recent, end of January
So it was a bug after all..
OBS has nothing to do with uploading files on Streamelements website. Try to logout (https://streamelements.com/logout), remove cookies from the page and try again
you need -webkit-mask-image: linear-gradient(to bottom, white 0%, black 100%). Apply it to the container.
Also you can play with percentages and I don't remember which color (black or white) is transparent, so maybe also switch them
Hmm, maybe using custom css and storing on SE_API every time the variation triggered? I wonder, never tried that.
But all the variations would need to be custom.
@frank lake I think it might be possible, but not sure, never tried that before. You would need to increment the key value every time because SE_API.store.set doesnโt do that:
https://github.com/StreamElements/widgets/blob/master/CustomCode.md#se-api
Please follow these two steps:
@pulsar willow โคต๏ธ
Please logout of StreamElements at https://streamelements.com/logout and then login again to your account (Twitch/YouTube/Facebook).
@pulsar willow โคต๏ธ
Go to the Dashboard > Right side > Part channel > Join channel (https://streamelements.com/dashboard) https://i.imgur.com/uYVb8OK.png
ty ty will do
<3
Let me know if it works for you ๐
it worked tyvm
<33
good news, and thank you ๐
did someone just alphabetise the channels
Oh ok is it on obs or streamlab website ccs?
Streamelements website - my overlays - edit overlay - open code editor - css tab - find something like .main-container - paste as a new row betwen {}
ok I tested it, you should just use transparent for transparent (wow, css so cool) and color doesn't matter for the mask at all
-webkit-mask-image: linear-gradient(to bottom, transparent 0%, white 100%);
remember folks. transparent = transparent

Will try!
Oh ok Iโll screenshot it when I get home so ya can show me how lol
There is no way to make a checkbox field non-editable, right?
I'm curious about this, why would you need such thing?
Not possible, at least not documented... I'm also curious
I felt like it was an ok way to nonverbally communicate always-active values.
The only other way I could think of doing this would involve label fields. ๐
was this right?
#log>div doesn't look like a chat container, mb post a screenshot of your html
Wouldn't #log>div just select the divs that are immediate children of #log?
yes, and we want to get as parent as possible
maybe even just body { -webkit-mask-image: linear-gradient(to bottom, transparent 0%, white 100%); }
In the snippet of code in this jsfiddle https://jsfiddle.net/uy6Ls4pw/2/, is there anything I can do to get the text "new line" in the animation to be shown on a line under "0%" ? Thanks
gauge.querySelector('.gauge__cover').innerHTML = `${Math.round(percentageOfEmotes * 100)}%` + "<br>" + "new line";
ye olde stick a <br> in there
you'll want a text-align: center; on that css class too
I would just keep the backquotes at the beginning and at the end
gauge.querySelector('.gauge__cover').innerHTML = `${Math.round(percentageOfEmotes * 100)}% <br/> new line`;
Yeah! ๐ I really don't like those + signs on text
i dont think it worked.. :/ unless i didnt do it right lol
add my snippet to the very end or the beginning
I feel so dumb for not seeing that!!!!! Thank you so much
wdym lol
should be fired
typo lol
@solar trout don't forget that .textContent also needs to be set to .innerHTML or else it just renders the <br> as text
Thank you so much.
Got it. Thanks
so like this?
omg it worked thanks so much!! @terse crest
๐
works like a charm - thanks again
hey, does anybody know, how you can turn the "Prize Wheel by pjonp" widget, so it only accepts the command from broadcaster?
If I understood correctly, at the moment moderator and broacaster are the ones the widget accept, right?
Okay, maybe you didn't remove it correctly.
From line 79, change it from:
if (chatMessage.hasUserId(streamerUserId) || chatMessage.hasUsername(WheelBot) || chatMessage.isModerator()) hasPerm = true;
To:
if (chatMessage.hasUserId(streamerUserId) /* || chatMessage.hasUsername(WheelBot) || chatMessage.isModerator()*/ ) hasPerm = true;
All the command is just one line, ok?!
chatMessage.hasUsername(WheelBot) this not important?
This is just if you have a bot and want to use it to trigger
k thx, Ill try
It is said on line 4:
WheelBot = 'yourbotname', //Lowercase name if wanting to use a bot to call commands
Let me know if that works
it works, thx
Hello is there were I ask problems about overlays on the SE website?
if you're creating your own widget, yes, if you're having trouble with the provided ones, #helpdesk-twitch
Okay thank you!
is there a setting im not seeing that allows the SE chat overlay to scroll from the top down instead of the bottom up? I'd like to get it scrolling the other way so it looks better at the top of the screen
The default chat widget is very limited. It is better to go to #widget-share and look for one of many custom chat widgets, so you can use it and they have more options to customize
alright ill check it out
hi im making a eventlist and i want to get my twitch channel name how can i do that?
instead of follower i like to change that to my chanel name
The parameter passed to the onWidgetLoad handler has a property obj.detail.channel.username
You can simply save it in some global variable and use it when you need it.
i sent u a pm with the mail, did u read it?
I did however the person responsible for it said there were no tickets with that email. 
Hey all! Is there a way to add line breaks to the alert message?
If you add <br> into the message it should create a line break.
Really sorry to say this but I actually have some more to add to the problem
I am reading the message over TTS. but TTS reads the tags without ignoring them.
I don't think there's a way around that :( Hold shift and hit enter in the alert message text box.
Yeah so far I could not find a solution. I'll keep the TTS part for later. Thank you so much @proud spade for the response
OMG Thanks a lot!
Thanks a lot for helping out @proud spade !
shift enter works in discord too, only reason I thought of it haha
Found Prize Wheel by pjonp and was wondering if there is a way to add more segments unless 25 is cap? Was hoping to see if I could get to 30 if possible
is it possible to emulate a streamelements tts via js?
Any update on this side?
It is not possible to make subgroups
Is there a place to submit feature suggestions?
Does anyone know how to fix this I was messing with it and it just made everything bigger
I somehow cut my whole entire screen to make it like that
@opaque wasp โคต๏ธ
Check out the StreamElements ideas board: https://strms.net/ideas. You'll be able to add ideas, upvote ideas you agree with and track their progress with email notifications. Adding and upvoting ideas also helps the staff know which ideas should be prioritized so please take some time to upvote.
Hmm, maybe you changed your preview scaling to canvas. Right-click your preview and go to Preview Scaling > Scale to Window
@severe shell i tried that and it didnt work :/
Hmm, so unlock your "Starting Soon" and then right-click on it and go to Transform > Reset Transform. Check if that works
is it possible i can screen share it to you @severe shell
because its on every single scene that its cut up like this
I cannot go into a screen share at the moment, maybe in one hour I will be good for that.
If you don't have it solved until there, you can send me a DM
ok
because i was just trying to transfer over to streamelements and somehow i ended up in this situation
๐ I will send the field data for more options in a few hours
ok i fixed everything thanks anyway @severe shell
Awesome, thank you!
Is this the right place to get help with overlays?
I created an alertbox for my overlays but I messed it up and it doesn't show up on the overlays I duplicated it to for me to highlight to be deleted. I don't want to have to recreate the whole overlay I just want the alert box gone so I can redo that.
not sure if this is the right place to ask, but I'm wondering if there's an API request to see someone's total sent messages in a chat or in a specific amount of time (like last 7 days etc)? would be helpful for a project I have. Chat Stats does this, but I want to pull for an individual chatter
So, you want to delete the alertbox?
And neither the 'delete' key on your keyboard nor the delete button in the overlay editor work?
@pulsar willow the alertbox doesn't show up on the overlay at all when I activate it and it's not in that list that's below that delete button. There is no title for the alertbox I created in the layers for me to click on to delete.
@pulsar willow none of these is the correct alertbox the only way I see it is when I activate that alert and it shows up in my obs
hmm, that is strange.
Does the alertbox show when you copy the whole overlay? (My Overlays -> those three dots -> duplicate)
@pulsar willow no it's just the same as before
@pulsar willow ok so I don't know the main issues why I can't see the widget in the overlay or in the layers and only in obs but I managed to fix my issue. Thank you for your time.
What is the difference between online interval and offline interval??
delete everything in the Field Data tab; then copy paste this over: https://raw.githubusercontent.com/pjonp/pjTestBot/master/modules/.SE_Overlays/prizeWheel/fieldData_50_segments.json it'll give you up to 50 segments ๐
here is your crown ๐
hahah. thanks ๐
Is it possible?
hello, I would like to ask if its possible to read the channel point redemptions claimed? I am trying to use onEventReceived but it does not enter the function. or a different event-type should be used for twitch channel point redemptions? thank you in advance ๐
@north tartan we have nothing for twitch points yet.
thank you for the prompt response ๐
Do note I say yet.
not officially .... but are you making a custom widget and have some JS knowledge?
yes, I am trying to create a custom widget wherein a viewer can redeem a twitch channel point reward and streamelements will add points to the viewer. in summary, widget will convert twitch channel points to streamelements points
I have a bit of JS knowledge (and google is here as to help also ๐ )
take a look at #dev-chat message ๐
it will add a if (listener === 'reward-redeemed') listener for ya
oh thanks! I will look into this more! thanks for the help ๐
Yes
You want to add some fields as described in the Overlay Editor Docs, upload your images and replace the links with your {variables}
i change it to this but its not working
Did you add the field for it tho?
and
still no image
let's check it
in the editor window, press Ctrl-shift-c, click on the widget preview, press delete
Ctrl-shift-c again, click on some element inside the widget then try to find your event-follower element in the elements tree on the right, then look at the styles for it
like so
Oh it's not for the text container
using it on js event-container
it's just an example
I mean you need to look at the actual code to see if it's there or not
ctrl-shift-c - click here
and don't expose the links to your overlays on public
^
it should be event-follower, not event-Follower, case matters
what's in the styles?
it should be url({followIcon}) sorry I'm not fully awake yet lol
congrats, you won
im good thanks for the help ๐ ๐
hi, i use obs on my macOS big sur, and i have a ps5 played in a MSI monitor, i have a HDMI cable in the msi monitor that connects to the back of my mac into the USB-C and when i add a display capture it only shows the desktop of the msi monitor, not the ps5 gameplay. can i get some help?
Ghoul want the OBS discord https://discord.gg/obsproject
btw anyone knows how to auto timeout users if they lost in !roulette?
Not possible.
The response can't be modified and would most likely require another bot to do it.
does /timeout {user} work?*
huh?
the responses are in the https://streamelements.com/dashboard/bot/modules page
ah ok, let me try
it should ๐ค work; i'm just assuming that if the /me works then the other slash commands would
it works but you cannot have /timeout and /me on the response at the same time, so if you put /timeout at the beginning it will just timeout without any response
ya; the message will be the reason for the timeout; so can't do both a response + timeout
unless the ${customapi} works in the modules? then you could ... maybe
it works
ooooh; then you got options
is there an endpoint to timeout?
you can send messages to chat; so send 2 messages one for the `you lose' and one for '/timeout'
...haven't tested that; but should be able to send the slash commands via SE API; i don't think you can with jebaited middleware though
didn't know you can send message via se api
no, it's POST
yup; /say requires the JWT
https://jebaited.net for oauth middleware


