@elfin arch Thanks for the insight. It worked when I used a millisecond format, which I conveniently took from https://currentmillis.com/
#dev-chat
1 messages Β· Page 40 of 1
ahhh yea.... int(round(time.time() * 1000)) is much cleaner π
So...how "programmy" can I get with StreamElements chat bot? I've got almost everything transferred over from StreamLabs cloudbot and Nightbot, but there's a "roast" command that I'm using in Nightbot that goes to a PasteBin instance, pulls a random insult from the list, and then displays it @ the person that was the target of the roast in chat. Is it even possible to do that in SE chatbot?
Here's the command code from Nightbot:
$(query). $(eval roast = decodeURIComponent("$(querystring $(urlfetch json https://pastebin.com/raw/2G4XwSct ))").split(","); roast[Math.floor(Math.random() * (roast.length - 1))]).
Take a look at this API: https://thefyrewire.com/docs/api/twitch/pastebin/
@elfin arch thanks for the video on command help. I'll try to reproduce it sometime soon.
How do you bring up the console for debugging like you've done with print statements? Is it just the chrome console for instance?
@rugged rapids Thank you SO much for that link. The SE custom api command is so much simpler than doing it in Nightbot. Used that and a variable cannibalized from my shoutout command and it's working perfectly! Thanks again!
Glad to see the code bois got your back @meager lotus 
I'm still trying to figure out how the timestamp works in the REST API. No matter the datetime range I use in 'before' and 'after', it always returns the top few results. Doesnt seem like the timestamp range actually does anything...
Unless theres a datetime conversion that I'm not understanding... I'm sure timezone doesnt affect the universal millisecond time right?
The rest api is returning UTC datetime stamps according to https://www.utctime.net/
UTC time now (Coordinated Universal Time) helps you to get the current time and date in UTC (GMT) local time zone, what is the time now in UTC.
Have you tried an ISO-8601 timestamp like 2020-06-06T15:40:22.108Z?
Yup, even elements outside the range are included in the API response
Hm, it seems to be filtering correctly for me
Could you provide a sample query string?
After iterating through a few samples, I found that the filter works day-to-day, but everything within the same day falls through the filter
e.g. "after":"2020-06-06T05:37:22.108Z","before":"2020-06-06T06:00:00.000Z" returns everything from 2020-06-06 even if they are outside the range
Unfortunately I don't think I have any cases of tips within the same day (I have two within 24 hours of each other but technically different days), so I can't help replicate that. Seems to be parsing the time incorrectly. Maybe try without milliseconds? 2020-06-06T15:25:22Z
(though it wouldn't really make sense since the createdAt and updatedAt timestamps are in the format with milliseconds, so I dunno, probably a bug or not fully implemented yet)
technically you can always filter it yourself once you receive the response back. Not ideal, but 
Ok thanks for the help, I suppose a local filter would work fine for my use case too.
@slow gale yea, Kappa seems to work fine, i've just gotten handshake errors for a couple mins at overlay links - probably through the Custom Widget connections.
Oh it's been like that for a few days now I think
Usually connects on the 2nd or 3rd attempt
nah, this keeps going π
WebSocket connection to 'wss://realtime.streamelements.com/socket.io/?cluster=main&EIO=3&transport=websocket' failed: Error during WebSocket handshake: Unexpected response code: 503
must be a maintenance that's going on, or something went down
i mean - i can use the info from the log, i just thought i'd mention it π
Nope. We had a brief hiccup.
Right on ! all good
what would i change this to for accumulative (weekly) tip = data['tip-week'].amount > 0 ? data['tip-weekly-top-donation'] : {amount: 0}; cheer = data['cheer-week'].amount > 0 ? data['cheer-weekly-top-donation'] : {amount: 0};
@mortal wagon So you want to show the highest tipper/cheerer of the week
Or do you just want to show like.. the total amount you've been tipped/cheered in the last week
Hey @granite pelican first of all thanks for submitting your animated webcam frame it looks awesome! But I have a problem:
I can't seem to change the mask image. Even when changing it back to your original image, the frame somehow gets stuck in the top left corner and you only see like one pixel of it. Here's an example: https://streamable.com/wsetxd
Please @ me when replying or I'll miss your message π
Right now its set to top single amount, i want to set it to accumulative amount from a user @slow gale
ah ok
@mortal wagon So there's actually 2 values that are very similarly named
there is data.cheer-weekly-top-donation AND
data.cheer-weekly-top-donator
Top donation will return the single highest donation within the timeframe (session, weekly, monthly or alltime) whereas top donator will show the cumulatively biggest donator within the timeframe
So if in a week Stan made 1 Donation of $10 and Bill made 2 donations of $8.
Stan would be returned with data.cheer-weekly-top-donation with a value of 10
But Bill would be returned with data.cheer-weekly-top-donator with a value of 16
Is there a websocket event.type for tiltify donations?
Hey, just wondering if anyone is available to create an event list and a countdown clock please. Please DM me if you can help. Thank you
@serene turtle I think you'd have to do it through Tiltify's own API
You've been very patient asking but I think that the StreamElements stuff is just pulling from Tiltify itself.
Exactly, tiltify only supports polling.
And since StreamElements is already polling, for widgit alerts, it would be nice to send it along to the websocket event message.
Hey @slow gale are you available to look at a theoretical something?
@lyric nymph Hit me
@serene turtle You may be stuck in middleware territory there my friend π¦
@slow gale
#widget-share message
Could this widget be edited to work with tiltify?
I'd ask lx but he's hard to see on haha. A dream team member was looking
Looks like it...
Is there even any websocket documentation about what events are passed?
I cannot seem to find any.
The websocket page says to check the widget docs Each event processed via the websockets can be seen documented here: https://github.com/StreamElements/widgets/blob/master/CustomCode.md for that info, but I don't see any mention of websockets anywhere there. Or the event types I'm already checking for.
Sometimes you have to pick through the example widgets to find example of stuff
Hey not entirely sure if I should post this here or in the other help sections. I am looking for a way for a SE command to trigger either a hotkey on OBS or activate a URL (locally hosted). I am using an app called UPDeck and it has some really versatile options for animating sources etc and I am trying to find a way to allow chat to trigger the buttons on the app whilst being able to spend their loyalty points (I dont like Channel Points so I haven't used triggerfyre yet).
@lyric nymph It is possible in theory assuming that streamelements hasn't arbitrarily locked it down.
They have tiltify support on native widgets, the user just really wants a customizable progress bar. He said what's there is perfect if only tiltify was built in 
The only things it would need is your tiltify goal value and your current tiltify amount value. Now session data doesn't expose tiltify stuff from what I can see. And there is no mention of tiltify in the the Kappa API at least from what I can see but the API docs are shitty.
BUT
I just looked at the native tiltify progress bar and it's making a call to an API endpoint that isn't mentioned in the documentation

The problem is, I can't test what that calling on that API endpoint will return unless I connected my account to tiltify
I believe mine is but I doubt that helps 
okay so... This may be slightly convoluted but I'm trying to utilize the count command on a custom widget and the tutorial I followed on youtube doesn't work. Is there another way to do this? Or a better tutorial than this one here: https://www.youtube.com/watch?v=1gXtDGz4tYo
A video to show you how to easily display a counter on your live stream using StreamElements bot and custom widget.
You can use this to create any sort of counter, mostly commonly used for such things as in-game death.
for context I am terrible at coding
but I can follow someone elses code easily
@crude crest 
Basically I have the chat commands set up. But when I follow his code, it doesn't work.
oh he's in this group awesome lol maybe I can get his help then
my widget always stays at 0 when I type my command in chat
I'm pretty lost lol
@crude crest it doesn't update the widget. Maybe I'm missing something? I'm pretty sure I copied your code exactly I have checked multiple times. What exactly is linking the widget to the custom commands? Also, maybe important but I'm using !ded instead of !heded because it's less characters to type in my chat. My understanding is that the widget is linked to the commands through this code here: counter = 'ded';
window.addEventListener('onEventReceived', function(obj){
const listener = obj.detail.listener;
const data - obj.detail.event;
if (listener === 'bot:counter' && data.counter === counter){
document.getElementById("deathcounter").innerHTML=data.value;
}
});
and here
here's the HTML part
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet">
<div class="main-container">
<div class="dc" id="deathcounter">0</div>
<div class="counter-holder" id="ch"></div>
</div>
@lusty void try to wrap code snippets with ``` before and after. Makes it a lot cleaner to read
oh sorry
window.addEventListener('onEventReceived', function(obj){
const listener = obj.detail.listener;
const data - obj.detail.event;
if (listener === 'bot:counter' && data.counter === counter){
document.getElementById("deathcounter").innerHTML=data.value;
}
});```
<div class="main-container">
<div class="dc" id="deathcounter">0</div>
<div class="counter-holder" id="ch"></div>
</div>```

thx lol
@lusty void can you add the couple following console.log() lines in the code and see what the Chrome inspector on the widget editor says when you try the command in chat? ```js
counter = 'ded';
window.addEventListener('onEventReceived', function(obj){
const listener = obj.detail.listener;
const data = obj.detail.event;
//add
console.log('lis:', listener);
console.log('data:', data);
//
if (listener === 'bot:counter' && data.counter === counter){
document.getElementById("deathcounter").innerHTML=data.value;
}
});
sure thing
then post a screen cap of that inspector window .... looking for what the listener and data are when you proc the command in chat
ok one moment
window.addEventListener('onEventReceived', function(obj){
const listener = obj.detail.listener;
const data - obj.detail.event;
console.log('lis:', listener);
console.log('data:', data);
if (listener === 'bot:counter' && data.counter === counter){
document.getElementById("deathcounter").innerHTML=data.value;
}
});``` updated code
idk if I even did it right
my chat
const data - should be const data =
facepalm
that fixed it ty
lol see this is why I don't write code.. I literally went to school for Computer science for 3 years and.. yeah
I just don't have the eye for detail or the logical flow for it ig
haha; typos still get me too often to admit. I didn't notice it until i saw the console π
yeah here I was thinking I was missing something lol turns out I'm just an idiot lol
Did you get it all sorted @lusty void ? Was just catching up, seen your comments.
yes sir I did indeed Minus the image. for whatever reason I can't seem to get the URL for the image I am using but I found a workaround from here so I think I'm good. Is there a way to make the number bigger tho?
I tried changing a value in the HTML but that didn't work lol
@crude crest
You can add a Font-Size to the CSS under the class for the text to adjust the size of the text however you like π
@lusty void we all do it. Honestly if youβre writing more than 3 lines of jQuery get in the habit of writing it in a proper coding environment like VSCode and pasting it into stream elements. It takes an extra second and it covers and catches and lints all the syntax errors and typos that we all make constantly.
okay sorry I didn't reply sooner I was streaming, yeah, I meant the font size. I will try and figure it out, thank you
@slow gale don't I know it. I spent 3 years in college for comp sci and yeah, coding is hard. It's always the little things that get you. Forgetting a semi-colon was always a major thorn in my side.
so, okay, another thing that's also happening, when I switch scenes in OBS.live it switches the death counter back to 0 on my overlay.
if you have the 'shut down source' uncheck does it work between scene changes @lusty void ?
not sure how the widget loads the data "on widget load"
yeah that fixed it. I figured it would be something small like that
however doesn't that use more resources to keep it running all the time?
not that it matters lol just wondering
Depends on the contents. Animated can be an issue while static stuff shouldn't.
okay all mine are static lol I want to use an animated overlay one day tho
thanks u guys have been a great help! π
@lament ice hey! It looks like a problem with CDN. Default security policy denies to load resources from external and browser produces CORS error. I got mask applied after few cycles of enter-exit from widget. Maybe just needs some time for CDN to return correct headers.
@lament ice this https://discordapp.com/channels/141203863863558144/259680142459142144/718315581320724480 is working fix but it will invalidate cache for mask forever. I have an idea to implement this hack as option until CDN problem won't be solved.
For JS I think I would use something like that to invalidate requests on the fly:
const fancyFetch = (url, params) => {
return new Promise((resolve, reject) => {
fetch(url, params).then(resolve).catch(() => {
url += '?_nocache=' + new Date().getTime();
fetch(url, params).then(resolve).catch(reject);
}
)
})
}
But I don't know how could I do that for CSS.
How do I find the id for a specific store item? (Stream Perks item)
i just use a temp overlay with the custom widget and add console.log('e', event); and check the console for the data; there's probably an easier way, but I don't know of it π
GET request to https://api.streamelements.com/kappa/v2/store/:channel/items?limit={limit}&offset={offset}
Thanks guys, I'm having issues seeing stream perk transaction details. I'm only seeing sound effect details. How do we see Stream Perk transaction details?
one of these endpoints might help: https://docs.streamelements.com/reference/redemptions
Yeah tried all of them but never get back Stream Perk details, only the Sound Effects in the store
Hey @viral patrol did you see the stuff we were talking about tiltify API stuff yesterday?
I saw, but AFAIR we have native widgets only for tiltify
And IIRC it is not possible to set a widget under managed account (only channel owner can set it up)
@granite pelican okay that fix works. Thank you for your reply 
Okay GIFs work too. Time to get creative
https://i.imgur.com/SLtD2nq.gifv

i have an idea and dont know how to add it to my streams. i have a bot command for duels. i want to take the winners of those duels and automatically have them pop up on my stream and stay so i can have a chat champion. how would one do this ?
@viral patrol Meet @latent gulch. He has a question 
Heya! I hope we can provide answers
Can Streamelements do an other method for tips and merch so we don't need to use PayPal
Like a Giro bank account or something
@bright coyote SE.PAY is available for streamers who are atleast 18 years old, with bank account under their name in one of the following countries and have at least 101 Follower (Twitch) / 101 Subscribers (Youtube):
Austria, Belgium, Czech Republic, Denmark, Finland, France, Germany, Ireland , Italy, Netherlands, Poland, Portugal, Slovakia, Spain, Sweden, Switzerland, United Kingdom, United States.
If you meet these criteria and donβt see SE.Pay, let us know.
For information on SE.Pay payment methods, their fees, and settlement times see https://streamelements.com/dashboard/tipping/fees.
What is SE.Pay ?
@bright coyote Wrong channel.
oh sorry
@viral patrol @hardy walrus what regex are you using for the (bot-spam-filters -> Symbol Protection) ?
It is Google RE2 syntax (without lookback AFAIK).
Ah - kind of a rewrite engine to make regex's simpler i take? i'll take a look at it, thanks ! you're always great help π
we init() π€
so i found that modules in js (script tags with type='module' and import export in the files) doesn't work well with caching in the custom-widget. it'll keep the modules cached for either eternity or a very long time - tried with a randomized param on each module aswell, but it didn't work either.
it was merely for organizing purposes if in doubt
Oh hey @viral patrol ! Sorry for the delay, I barely checked my Discord notifications π
I have a few questions honestly, let me list them for you
1-) Is there a way for me to receive simulated events thru Websocket connection, without creating new ones with a POST request to the actual API? My user base uses the dashboard to test their configurations on the software I'm maintaining.
2-) Is there a documentation on which field means which on Websocket events? Cuz I'm trying to write handlers for Twitch Raid and Twitch Subscription Gift events, but couldn't find a doc explaining the structure honestly
3-) Finally, are Youtube and Mixer events also emitted from the Websocket API?
Thanks in advance!
I'm having issues seeing stream perk transaction details. I'm only seeing sound effect details. How do we see Stream Perk transaction details?
I've tried all methods on https://docs.streamelements.com/reference/redemptions and was unable to get Stream Perk transaction details.
When making custom alert designs, can you reference images stored on storage of the overlay editor? Like if I had image1.jpg, image2.jpg, image3.jpg, image4.jpg, how do I refer to it in the custom HTML editor
add some fields to the field tab @snow summit i.e ```json
"firstimage": {
"type": "image-input",
"label": "First Image:",
"group": "Images"
}
then in the html; call that image with `{{firstimage}}`
That worked, thanks
For the alertbox, do I have to keep the provided CSS/JS?
@latent gulch Simulated events have a bit different structure as far as I know, so the best way is to have a testing account and create events via POST request to /activities endpoint. Docs there's is no big docs about websockets, but event structure is in JSON schema here: https://discordapp.com/channels/141203863863558144/259680142459142144/619851854439776266. And about Mixer/FB/YT - yes. Their events are dispatched to websockets too.
I see. Thank you for taking your time and answering @viral patrol !
Has anyone had success receiving Stream Perk transaction details via the API? I can only see Sound Effect transaction details when using all methods documented in https://docs.streamelements.com/reference/redemptions
@shrewd wadi try https://api.streamelements.com/kappa/v2/store/${process.env.SE_ACCOUNTID}/redemptions?pending=true
.... i'm still hitting the endpoints but looks like it's defaulting to only completed redemtions
there is no response documented on the API site; here is what i see for /redemptions endpoint
{
_total: 1,
docs: [
{
redeemerType: 'Channel',
completed: false,
input: [Array],
_id: '5ede1bfec259e762b4486453',
channel: '5961d0a0c481d33bb8eb95c9',
redeemer: [Object],
item: [Object],
source: 'website',
message: 'im a message',
createdAt: '2020-06-08T11:07:42.862Z',
updatedAt: '2020-06-08T11:07:42.862Z'
}
]
}
input: (what the redeemer types in)
[ [ 'pjonp', 'pjonp@aol.com' ] ]
redeemer ```js
[
{
_id: '5961d0a0c481d33bb8eb95c9',
username: 'pjonp',
avatar: 'https://static-cdn.jtvnw.net/jtv_user_pictures/a92640f1-a743-4774-a58b-60eae8ad3bd7-profile_image-300x300.png',
inactive: false,
isPartner: true
}
]
item (fields required to input) ```js
{
userInput: [ 'name', 'email' ],
_id: '5ede180702496d154a8144c5',
name: 'Stream Perk2'
}
]
Thanks @elfin arch I've found some success with this. Still working on it but progress being made, appreciate it!
I'm not seeing sub messages available in SE or Twitch API, do you know if SE achieves this by the bot in chat (or how is it done?)?
are you talking about like a message from chat? it is in the message data from Twitch, SE uses that too
When someone subscribes/resubscribes it can be accompanied by a message. This message is separate from any other message posted in chat. SE is aware of this as in the Activity Feed you can see their sub-message along their sub. I would like this data π
Are you using the SE overlays or your own client/bot?
Not SE overlays
Thanks very much, I'll look into it!
not sure what all data you get from it, haven't played with it. (i personally use https://www.npmjs.com/package/twitchps and but there are other options)
Is anyone here with coding experience able to edit and create widget and event lists as well as progress bar (clock) as a widget. Thank you
Yea. do you have a specific question or just a general idea for what you want to make?
are you trying to make like a few small things @glacial forge or like 1 big thing where the events add to/subtract from the timer?
Thank you @elfin arch Just show you a DM π
Ya. Those are some cool overlays; I was thinking you were trying to do something with the build-in SE Overlay editor π
Hey all, I have Twitch/Mixer/YT setup with stream elements. I am looking to get a viewer count for all three (total) along with Subs/Follows per stream, much like a normal activity feed. I cant Find anything that exists like it. So my question is any of that remotely possible? Thanks for your time π
A yes/no is all good, I don't want to waste anyones time.
Is there a way to use TTS in a custom alert? I'd like to inject {{name}} in-between some other audio, but I don't see any reference to the 'alert message' or TTS in the code.
You can check Twitch item redemption widget that has a call for TTS (google TTS) which you can use with alertbox.
@lx thank you! I will look into implementing Google TTS.
@viral patrol I have looked at the GitHub, StreamElements widgets, and searched Google, but cannot find the widget you are referring to. Would you mind pointing me in the right direction?
One moment
I hate that there's no metadata to messages: https://discordapp.com/channels/141203863863558144/457957557470887947/702819359743148072
To the Dev of the Animated Webcam Frame widget, this is a issue on the Mixer Side when changing the Width and Height
@pulsar willow you should adjust width and height in left panel too
Did that but no effect
It seems as only the mask is bugged out
Removing the Mask solves the issue
Hey all, Iβm on my bot Modules page, and when I change the messages for the various alerts (follow, tip, host) it says βsavedβ but, it doesnβt save. Didnβt see In pinned, any suggestions?
you'll have to refresh page after clicking saved @left ivy
is there somehow to make this button open a link in a new tab?
see this post @tropic finch for the CSS question; same as html: {{fieldKEY}}
second question; i'm not sure.
I genuinely don't think you could make that button open a new tab. It is literally hard coded to send data to the API onclick
if you want to create some sort of custom control panel you'd have to create some middleware to do it for you.
end goal, I'd like to find a way to pull data from the SE_API.Store and provide a simple interface for widget users to modify that data
@glad urchin @mild cipher
...going way back to this; I found a way that kinda solves this. requires using Tab to switch between the fields
<form>
<label for="fname">Input #1:</label><br>
<input type="text" id="in1"><br>
<label for="lname" id="in2">Input #2:</label><br>
<input type="text"><br><br>
<input type="button" onclick="testfunc('Settings Saved!')" value="Click Me!">
</form>
<div id='status'>
Use tab button to switch between fields.
</div>
in Onload
document.getElementById('in1').focus().select();
Hi @heady ruin ! Are you around by any chance?
i am π
I would like to investigate this issue from points adding
The screenshot you provided looks bit different than I thought it would look like. ${addpoints} instead of ${customapi}
Can you DM me invitation link to your account, so I could check it there?
which permissions do u need
Editor please
Continuing to ask around if any devs that can edit and add to pre-made event lists and goal widgets please private message me. Thank you
To the Dev of the Animated Webcam Frame widget, this is a issue on the Mixer Side when changing the Width and Height
@pulsar willow it's better to add mention because I could lost a message. Width/height ratio must be proper. If it won't help, please, DM me.
Ohhhh, i am stupid. Will look into it next time
So I really don't know anything about CSS, but I know I'm trying to do something relatively simple. If any of you would mind helping, I'd really appreciate it.
I'm using the "Video On Command" widget that's free on Streamelements to play some fun videos on my screen with easy chat commands. However, it only allows VIPs, MODs, and Me to activate the command. I'm trying to make it so that Subscribers can activate it, or Everyone can activate it. However I have no clue what-so-ever how to add this in the code. (Here is how the permissions are defaulted https://i.imgur.com/gUvsCFf.png)
If I can get it to show Streamer + Mods + VIP + Subscriber and another with + Viewer, that'd be fan-freaking-tastic
Does anyone know how to do that?
@thorny ravine I recommend to use the stream store with streamelements for this.
@rugged rapids I've managed to set it up to where the stream store can play the same videos on command - the only downside is I can't control the videos volume & every time the command is used, Streamelements makes a chat message for "you successfully redeemed Shark1 for 0 points. elementsOkay"
If I can control the volume through the store and make it to where the bot doesn't respond every single time a command is "redeemed" I'd use it π¦
The sound should be controllable when the store item is created.
Yes, the only downside is that there is a chat message on redemption with a custom redeem command.
But to use the widget the same way, you would need to control cooldowns via the widget, to not get the item commands spammed.
I'm fine with them being spammable.
For me it's a non-issue for now because I only have 1 ~ 3 viewers. Just starting out π
Then you can delete the section in the JS where the checks for the user level is made.
I can see that working in the temporary - but is there a way to make it so that subscribers can be included to the permission checks?
That being said I kinda feel dumb for not thinking to just delete the user level stuff lmao
You can check for userState.sub.
@rugged rapids Hey, sorry to bother you. Do you happen to have any contacts with coders that specialise in editing and adding code to pre-made widgets and event lists? Thank you
Check fiverr: https://bit.ly/StreamersMarket
@rugged rapids https://i.imgur.com/0SFk8kq.png
Thats what I see - I manually added the "viewer : parseint" stuff
How do I make it to where they're allowed to use the commands though? The dropdown bar will not display them in that manner I don't think
Do you already have subscribers?
No.
Check Fiver, 0 results for what I wanted
Back the drawing board, thanks for the help π
There is no viewer delivered in the userState.
If you want to have it for everyone, you would need to delete the check for levels completely, as everyone can then use the command.
You can make it for subs like this:
JS
if (((userState.vip || userState.mod || userState.sub) && (userOptions['managePermissions'] == 'subs')) || (userState.mod && userOptions['managePermissions'] === 'mods') || ((userState.vip || userState.mod) && (userOptions['managePermissions'] == 'vips')) || userState.broadcaster || (userOptions['otherUsers'].indexOf(user) !== -1)) {
JSON:
"managePermissions": {
"type": "dropdown",
"label": "Who can start video:",
"value": "mods",
"options": {
"streamer": "Streamer",
"mods": "Streamer + Mods",
"vips": "Streamer + Mods + Vips",
"subs": "Streamer + Mods + Vips + Subs"
}
},
OhH! I was trying to do that, but for some reason if I edit the manage permissions the "subs" is yellow & bricks the display settings for modifying via stream elements.
I'll try this out real quick and see if I just did dumb stuff
Huh, that worked. idk why mine didn't worked - i had the exact same line in JSON and it wouldn't display ANYTHING after I confirmed it
You most likely forgot the komma after the vips line.
Thanks for the assist π I assume I just delete those same lines for all viewers to use without issue?
Er, the if (((userstate
You would need to delete the JS line and the correct closing } further down.
Cool. Thanks for the assist π I really know jack about this code stuff - I just kinda try to eyeball it lmfao
@rugged rapids Are Followers delivered in the userstate?
or can they be?
Last question I promise β€οΈ
No, they are not.
Darn, thank you!
Hey - is there an option to make groups or labels with the JSON Field Data in the Custom Widget Editor, or have you (devs) thought about making it possible?
Hey can anyone me explain how to connect a google sheet API to my twitch?
Hi. Recently, streamelements.com has been having problems getting promo-codes for challenges for Magic the Gathering: Arena streamers. At the moment when you click the "post to twitter" button to receive codes, a window with redirection opens and nothing else happens. Codes for e-mail do not come. Can anyone help with this problem? maybe some troubles with Streamelements or twitter API...
The new widget "Image Reveal Game" is awesome. I was always hoping for a chat trivia game, where I can set up custom questions with several possible answers and points distribution for correct answers. I guess that is somehow possible and I hope anyone of you guys is able to do that in the future. π
@timber lark Spoiler alert: || Trivia game is in queue||
@shell quest I think this could be helpful: https://stackoverflow.com/questions/23760768/how-to-retrieve-data-from-google-spreadsheet-to-javascript-or-json
Stack Overflow
This is public spreadsheet created using Google Drive:
https://docs.google.com/spreadsheets/d/1hA4LKZn9yKoqnSzaI6_73GQSj_ZVpB3O0kC93QM98Vs/pubhtml
How to retrieve data from Google Spreadsheet to

Seeings as the Kappa API docs suck, do we have a list of what endpoints require the JWT token and what will auth with just the API token?
It is possible to get all currency table with py code?
to export it? with userID|userNAME|Points|hours?
Is it still possible to send a chat message using the StreamElements API? I tried to follow the format discussed in this post https://discordapp.com/channels/141203863863558144/259680142459142144/571456713908027394
I've tried this in the overlay using jquery:
method: "POST",
headers: {
"Content-Type":"json",
"Authorization": "Bearer " + userOptions['auth']
},
url: "https://api.streamelements.com/kappa/v2/bot/" + channel.id + "/say",
data: { message: message }
});```
Where `userOptions['auth']` is the JWT auth string from StreamElements, `channel` is `obj['detail']['channel']` from `window.addEventListener` and `message` is a string variable.
I get a success response of
```{
"status": 200,
"channel": "CHANNEL ID"
}```
but the text does not post to chat. Am I missing something?
OMG it finally worked by using application/x-www-form-urlencoded instead of application/json as in the documentation. Problem solved!
Hey - is there an option to make groups or labels with the JSON Field Data in the Custom Widget Editor, or have you (devs) thought about making it possible?
also, is the data['subscriber-gifted-latest'] the latest that was gifted or the latest that gifted? in https://github.com/StreamElements/widgets/blob/master/CustomCode.md#on-widget-load
@karmic zenith do you mean this https://discordapp.com/channels/141203863863558144/259680142459142144/655135159884054528 ?
Is it possible to get all the events that happened in the current stream? (Mention me in your response so I don't mis it)
Anyone able to help me, hide a layer while an alert is playing if possible please!
@elder dragon The best way is to read activity feed. You can also read /activities endpoint to fetch this data
@granite pelican damn thanks, that's awesome - didn't realize it was for me, the last time u sent the link π edit: oh it wasn't you, but it was sent without @'ing me π
Hey devs! Dropped a new issue on the widgets repo. I didn't see an issue template so I wanted to drop it here to make sure it's clear: https://github.com/StreamElements/widgets/issues/9
GitHub
The documentation for onSessionUpdate says that the schema for the data that comes through for a session on onSessionUpdate matches the data that comes through on onWidgetLoad. See here: https://gi...
I have a widget question, is there a weather widget?
@pulsar willow what'd you mean?
Someone in #general-chat asked for a weather widget
AFAIR there was a command on #command-share
Would it be possible for it to be a widget?
If you want a widget, you can paste code from here https://www.booked.net/widgets/weather to HTML tab of custom widget (and remove CSS, Javascript, Fields)
Is there a way to manually poll for the latest session data from a widget?
I have code for a social media Popup, but I donβt know where to paste it so that it shows up on my stream, any help?
create a new custom widget on an existing overlay or a new one. then edit the source and put the HTML / CSS / JS into each tab
@pastel anchor ^
I donβt know which one to put it in them whether itβs a html, css or js. Also do I delete the alreayd existing code in the other categories so there is just the category with the Popup code left?
correct. you will want to delete all of the existing stuff so only your code is in there.
do you have 3 parts of code or is it one big code?
what you have posted looks right. that is all HTML
with the <div> tags .... you need some CSS ...which looks kinda like this: ```css
.main-container {
width:100%;
}
#user{
color: red
};
Should I just copy that code into css category or do I need to change it in any way
you need to find the CSS code for that social media popup you are trying to make
Ok
and then it will also probably need some JS code to
Ok
Oh I see I can change which code Iβm viewing
There is an option for scss do I need that?
that might work for the css... i'm not sure if the overlay editor supports scss or not
ya, scss is like css but has a little more features. you can try it and see if it works
Thanks so much!
yup. no problem!
Also, one other glitch that I get is when I put in my follower goal it says I have 49 followers when I actually have 125, how can I fix this?
105
I think that is something with the session data ... but am not 100% sure on that. I have never used it
Yeah it was that, thanks again
but when I put it into the actual app, the logo doesnβt show up, any idea why?
I bet this is an issue with iOS
does it show correctly when you click the preview button on the Overlay editor on the SE website?
ya. i'm not sure then what would cause that
Thatβs unfortunate for me then
I can try and get in contact with my apps developer on their discord
ya. or maybe ask in one of the helpdesk channels or OBS if that is what you are using
Iβm on iPad so Iβm using a specific application
Is there a way to pull the animated gif icon associated with cheers?
You can RMB on preview in variation and click "copy URL"
Or via code in that variation you can use {image} or {video}
Hi there! I've been playing around with the Raffle System on Streamelements to figure out if it's possible to do a single or multi raffle to choose winners but instead of winning points, is there a way to deduct a certain amount of points to the raffle winners? Also points requirements to !join the raffle
Hi! Iβm back again with another question about custom widgets. I found event list code but just in css and when I put the css code in, it doesnβt load in the preview. Is there more code that I need to put in or is there another probleM?
@pastel anchor If it's specifically for Streamelements. When you first create a custom widget, the code that it comes with is code for an event list. Maybe it just wants to keep the prewritten HTML and JS and just paste in the CSS
hi all
Would be nice if it would be possible to create cross-channel or cross-platform resources:
for instance, setting up a tipping page and choose it to have it for youtube and twitch
Same with Overlays and alerts
and with merchstore. Is that possible?
I'm super new to StreamElements and I want to start coding some custom widgets. Where should I start, is there a basic guide on the api and the details on how to use it?
Check channel header.
@pulsar willow you can create a tipping link for Twitch and then use overlay for alertbox for tips only from Twitch. Platform specific events should be in another widget.
I just purchased a stream package from Ownd3d and do not know how to upload it to streamelements. Please help!
Best to contact Ownd3d.
I didnt realize this is an Ownd3d issue as Im trying to upload to Streamelements
https://streamelements.com/dashboard/overlays/share/5e11d89e7478120646035d13
@viral patrol Is this still a working method? I've been playing with it and can only get the trigger to happen when adding the url to "URL to trigger after duration is reset"
It should be working as url to trigger "back to normal" is nested. But you can check this one as well for better experience https://streamelements.com/dashboard/overlays/share/5eba5cea02e307acd9c8661b
Thanks, I'll check that out. I had tested the iftt links with custom commands successfully so I know they are working. Just no idea why i couldnt get the custom widget to work
With that one the very first try for a follower event and it works....lol. Been banging my head on the other one for a few hours. Thank you very much for this one
Not sure how to target fields created and change value with a button. Anyone got the syntax to change a field value when clicking a button?
I don't believe you can update the field information from with in the JS code and save it back to the field data. You can use that button to alter the value that is loaded into memory of the script while running though @rare loom
Does anyone know what variable in obj.detail.event when redeeming a gift sub changes based on gift sub or personal sub?
obj.detail.event.amount seems to be their current streak.
So .gifted shows true if it was a gift and undefined if it wasn't.. Ok..
But if they regular subscribe, gift should be false.
but it's still undefined.
Does anyone know how to seperate a normal sub and the person giving out a gift sub?
The default custom widget uses this code. It looks like there is an obj.detail.event.sender for gifts
if (listener === 'subscriber') {
if (includeSubs) {
if (event.amount === 'gift') {
addEvent('sub', `Sub gift`, event.name);
} else {
addEvent('sub', `Sub X${event.amount}`, event.name);
}
}
}
so maybe just this for gifted verse not @lusty portal ? ```js
if(obj.detail.event.sender) { } // gifted sub
nods Yeah. I may have to work something around...
Thanks. π
Actually, I have it set to check sender against the username and if they are the same, I toss the request out.
The only way that can break is if a twitch user is named undefined gives a gift. π
but he doesn't come to my channel.
Is there a way to see what kind of sub a user has subscribed with?
(Besides using a variation...)
like when/if they announce the sub or get gifted one in chat @snow summit ? (Twitch?)
For Twitch. I mean like if someone resubscribes with a Tier 3 in chat 30 months for example. Currently I'm looking at variations but it limits me to one condition under variations.
Well good news. I almost got what I wanted working. But it now says missing scope bot:write. Am trying to make a overlay can display infomation and also send replys to chat.
ah... with the default Alert Box; i am not sure? i haven't played with it enough.
Is there no way to send bot messages via the overlay?
Yeah I'm messing with the editor myself. And there should be a way to send bot messages to the Alert Box.
what are you using to send your messages from the overlay @plucky phoenix ?
https://docs.streamelements.com/reference/bot#botsaybychannelpost and the api key I can get from loading the widget.
StreamElements
statusCode: 403, error: "Forbidden", message: "missing scope bot:write"}
error: "Forbidden"
message: "missing scope bot:write"
statusCode: 403
take a look at the last widget in #widget-share π ... you can see the set up i used
there's a middleware to hide the keys. otherwise you'd need to put a token in there
So you use the jebaited api to go to SE API 
Okay I'm getting somewhere messing with Event Inspector. I can see that an object is made with the info I want to display, but I don't know how to access it.
I don't know how much you can do with the default Alert Box... there is the custom CSS thing that shows some code.... but I don't know what all that affects
You guys want to see what am working on? 
sure. i like code things π
Do you know aidenwallis now playing widget? Basicly I recreated it to use lastfm (just for simple use) and created it into a SE custom widget.
Got it working the dirty way but will clean it up and add settings.
It only says it two times as I have the preview and the editer running
not familiar with that widget; but nice
Wanted this back so really happy. 
Not going to lie did not think I could do this with the custom widget. It's funny but going to reinvent the wheel per say. But ever since moving to SE been loving how powerful it is for developers. Now I see why a lot of bigger streamers use it as you can do legit anything with the right guy on the case.
^ ya. exactly. the Custom stuff is amazing.
I've taken a break from the overlays and switched to some Discord integration stuff .... but can't share that for widgets.
Did wish SE had a discord bot. Hopefully soon β’οΈ
it is not in the roadmap from what I was told. And for good reasons.
I don't think it will ever be a thing. As there is many other bots made for basic discord tasks.
How do I read the data from obj.detail.listener in the case I wanted subscriber-latest ? I'm trying to use the code:
let data=obj["detail"]["session"]["data"];
document.getElementById("tier").innerHTML = data["subscriber-latest"]["tier"];
});```
But can't figure out where to go from there.
what are you trying to get? the tier of a new sub?
The Tier, yes.
so; i generally just grab the default "custom widget" and work back from that code.... so start with ```js
window.addEventListener('onEventReceived', function (obj) {
if (!obj.detail.event) {
return;
}
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 === 'follower') {
if (includeFollowers) {
addEvent('follower', 'Follower', event.name);
}
} else if (listener === 'redemption') {
if (includeRedemptions) {
addEvent('redemption', 'Redeemed', event.name);
}
} else if (listener === 'subscriber') {
if (includeSubs) {
if (event.amount === 'gift') {
addEvent('sub', `Sub gift`, event.name);
} else {
addEvent('sub', `Sub X${event.amount}`, event.name);
}
}
then.... ```js
window.addEventListener('onEventReceived', function (obj) {
if (!obj.detail.event) {
return;
}
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 === 'subscriber') {
if (event.amount === 'gift') { //edit here !!!
addEvent('sub', `Sub gift`, event.name);
} else {
addEvent('sub', `Sub X${event.amount}`, event.name);
}
}
});
Yeah that's what I thought. I don't think I can pull the Tier information from that.
haha. sorry to hack the code together in the website editor.... but ya.... if you got it π
look at the event.tier
"prime" / 1000 / 2000 / 3000 .... but not sure how the gifts/community gifts play into all of that.... π€
Okay something is really odd... it REALLY doesn't like when I use anything from obj.detail.event. It effectively kills the alertbox.
can you post screen shot of Chrome Inspector or JS code?
Give me a second.
JS :
const event = obj.detail.event;
}
//get data from the π€ StreamElements π€ data injection
const name = '{{name}}';
const animation = 'fadeInDown';
// vanilla es6 query selection (can use libraries and frameworks too)
const userNameContainer = document.querySelector('.username-container');
// change the inner html to animate it π€ͺ
userNameContainer.innerHTML = stringToAnimatedHTML(name, animation);
/**
* return an html, with animation
* @param s: the text
* @param anim: the animation to use on the text
* @returns {string}
*/
function stringToAnimatedHTML(s, anim) {
let stringAsArray = s.split('');
stringAsArray = stringAsArray.map((letter) => {
return `<span class="animated-letter ${anim}">${letter}</span>`
});
return stringAsArray.join('');
}
function animateValue(id, start, end, duration) {
var range = end - start;
var current = start;
var increment = end > start? 1 : -1;
var stepTime = Math.abs(Math.floor(duration / range));
var obj = document.getElementById(id);
var timer = setInterval(function() {
current += increment;
obj.innerHTML = current;
if (current == end) {
clearInterval(timer);
}
}, stepTime);
}
animateValue('count', 0, {{amount}}, 750);```
Result:
Removing the onEventReceived trigger I get my usual stuff back:
i'll drop it in and see if i have an issues .... also you can add js after the 3 ` to make it format pretty π
Oh yeah that's what I used. heh
ok; i don't have all code; so i'll just give this a run over. what is breaking the name?
the yellow name in second image?
no idea. That is all the JS I have running on the alertbox.
When I remove the onEventReceived block, everything appears normal. (I screencapped mid animation)
you are missing a ) at the end? ... it's just an empty function? ```js
window.addEventListener('onEventReceived', function (obj) {
const event = obj.detail.event;
});
happens all the time. .... i just did realize it was all empty until i read your messages
That parentheses got everything working again, but using event.tier or event.name isn't replacing the HTML I wanted
const event = obj.detail.event;
document.getElementById("tier").innerHTML = event.name;
});```
<span class="username-container awsome-text-container"></span>
<hr style="border-top: 3px solid #FFFFFF;width: 400px;margin:4px auto 4px auto;">
<span class="action-container">Returning <span id="tier"></span> Subscriber</span>
</div>```
So it SHOULD be affecting the ID named tier but nothing is happening.
Even changing it to: document.querySelector('.tier') Doesn't do anything.
so first; go back to https://discordapp.com/channels/141203863863558144/259680142459142144/721650455540793345 ... cause you want to filter out to only sub events, right?
Correct. This is just an alertbox that pops up when triggered by a new sub.
and that should put the .name in the html into the "tier" span you have
Yup.
there is no document.querySelector('.tier') but you do have a document.querySelector('#tier') (id not class)
Right.
I was trying to pull tier from this data["subscriber-latest"]["tier"] - Tier of sub (1-3)
document.getElementById("tier").innerHTML = "TEST"; should work ...
you want use event.tier
that event.name should work?
do you have any fields set already by chance in the Fields tab?
No fields is emptied.
ok; just checking.... they will override an {} in the JS ....
add a console.log in there .... π€ ```js
window.addEventListener('onEventReceived', function (obj) {
if (!obj.detail.event) {
return;
}
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 === 'subscriber') {
console.log(event.tier)
document.getElementById("tier").innerHTML = event.name;
}
});
can you get the "prime" / 1000 / 2000 / 3000 logging?
Nope I see nothing.
Tried on both Chrome and FF
Thank you for the help by the way, I know its late in the morning.
that code above in a blank widget gives me:
What am I doing wrong...
post your full JS again π€£
if (!obj.detail.event) {
return;
}
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 === 'subscriber') {
console.log(event.tier)
document.getElementById("tier").innerHTML = event.name;
}
});
//get data from the π€ StreamElements π€ data injection
const name = '{{name}}';
const animation = 'fadeInDown';
// vanilla es6 query selection (can use libraries and frameworks too)
const userNameContainer = document.querySelector('.username-container');
// change the inner html to animate it π€ͺ
userNameContainer.innerHTML = stringToAnimatedHTML(name, animation);
/**
* return an html, with animation
* @param s: the text
* @param anim: the animation to use on the text
* @returns {string}
*/
function stringToAnimatedHTML(s, anim) {
let stringAsArray = s.split('');
stringAsArray = stringAsArray.map((letter) => {
return `<span class="animated-letter ${anim}">${letter}</span>`
});
return stringAsArray.join('');
}
function animateValue(id, start, end, duration) {
var range = end - start;
var current = start;
var increment = end > start? 1 : -1;
var stepTime = Math.abs(Math.floor(duration / range));
var obj = document.getElementById(id);
var timer = setInterval(function() {
current += increment;
obj.innerHTML = current;
if (current == end) {
clearInterval(timer);
}
}, stepTime);
}
animateValue('count', 0, {{amount}}, 750);```
ooooh... are you doing onEventReceived or onSessionUpdate ?
i'm using onEventReceived
OOH let me switch that.
Also is it hurting that I'm doing this as a variation and not a normal?
are you doing this in the default Alert Box?
no a Variation box.
I am not sure.... you'll have to let me know π
Nope I get nothing in the console. I don't think it works in the event of it being a variation.
Is that a bug or by design?
Also which inspector are you using?
i use chrome; ctrl+shit+i
yeah I don't see it at all.
so you are trying to put this into a default Alert Box -> variation?
Yup.
ahhh.... i thought this was a custom widget thing π€ .... i'm not great with the default Alert Box thing
It's alright. Guess I could try to make a widget from the group up for the overlay.
(That or skip the whole thing heh)
and it looks like the custom css affects all of the variations; from my quick look
Just to make sure, when you say Widget do you mean + > Static/Custom > Custom Widget
haha; ya. ... if i was more familiar with the Alert Box i would have noticed it was the same code..... i'll take a few minutes to play with it and see if I can get tiers. i really only the the custom stuff
cool deal. If you can get it work, great. If not, that's fine too. This isn't a deal breaker but I'm genuinely curious why it's not working... or is the API for pulls only available when its a widget and not an alertbox.
ya. i'm not sure.... i can't even get a basic console.log() to trigger in a variation from the JS
...so anything in the JS doesn't seem to matter from my testing....
but dumb answer @snow summit .... just add {{tier}} in the HTML and get the tier
@snow summit just saw ur message about
Nope I get nothing in the console.
Im not into ur problem but came about that yesterday...
I had to get the console directly from the window object to see the log output... just calling console.log diddnt worked for me
window.console.log("bli bla blub...")
just tried that @crude crown ... but can't get any response from the JS in the AlertBox -> custom CSS -> JS tab. did you get that from the AlertWidget or a custom widget?
console. methods don't work in alertbox.
it should works if u get the console object directly from the window object @viral patrol since the window object is acessible everywhere in the browser
ill try that later today so im not spreading an wrong informations^^
The alertbox overrides window.console
can i clear an custom array on session start in a custom widget?
for context: the custom greet widget fills an array "alertPlayed" but doesnt seem to empty it except i "resave" the overlay
So should I avoid using alertbox and instead use a custom widget?
Just not sure how its not possible for me to pull down the Tier an active subscriber in an alertbox.
Nevermind about the {{amount}} fiasco... Turns out... the alertbox didn't copy the right HTML and it was copying a class attribute instead of an "ID" one.
So before I move on anyone know how to get the Tier name (or value in general) of a Twitch sub into the Alertbox? (If it's possible.)
try just {{tier}} in the HTML @snow summit
facepalms
I could've sworn I did that. You know what... I'm not even complaining about it thank you @elfin arch
haha. ya..... simple solution that we were over thinking π€£
This isn't directly related to the editor but does anyone know how to retrieve the animated GIFs Twitch uses for bits
Thought there was a way to pull it from the API but guess back to google.
you can also use the ones that came with the alertbox default widget
Wait that helps.
π
where do i need to go if I have questions about how to edit super themes ?
In the API I see a way to get the current value of a counter for a bot but is there a way to change the value of a counter using the API?
@pulsar willow #helpdesk-selive
In the API I see a way to get the current value of a counter for a bot but is there a way to change the value of a counter using the API?
@sand igloo you cant, there is other ways to do it, refer to helpdesk-yourplatform to more info
is there any updated docs on the websocket api events? the guide mentions 4, event:test, event, event:update and event:reset but I only ever get events on event:test, and never anything on the update or reset events. (docs here https://docs.streamelements.com/docs/connecting-via-websocket or https://docs.streamelements.com/docs/connecting-via-websocket-using-oauth2)
StreamElements
You can make a Websocket connection towards our API - this method requires you to use a JWT token.Each event processed via the websockets can be seen documented here:Code snippet for connecting to Websocket with OAuth2: Make sure that after you obtain your JWT token from: http...
I've a question of theory.
If you can use a SE widget to change scenes which I do.
Could you not also use an SE widget to mute/unmute audio sources?
SE is running in a sandbox, they cannot affect your computer directly. however, there is an OBS plugin that allow your OBS to receive orders in a certain port
so basically using that plugin you could write a little program to send the right instructions your OBS can understand to change your scenes and/or enable/disable sources
luckily, there are a few systems around that simplify this for you. like TriggerFyre, check that on its website. Be aware that this is not affiliated with StreamElements, although it does use a StreamElements as an intermediary widget @unreal kestrel
I believe this system also allows you to interact with StreamDeck actions, which can enable/disable sources on OBS
I'll check it out, I use Websocket and one of the widgets in #widget-share to change scenes via chat and hide sources already so if I can get a way to do the same thing in theory to mute/unmute things in the audio mixer then that would be amazing.
if u hide unhide a source of media it goes mute unmuted don't?
i mean if the source is hidden the sound stop too
Yeah
But wouldn't want to hide the media source as well.
Contextual thing where audio has to be muted for a moment but want to maintain video.
there is a widget / plugin that press a button in your keyboard under chat command
then if u setup that hotkey in the numpad to mute / unmute the audio source it will work π

wait a gosh darn second
That could be used to start/stop stream from chat too.

hm true
there are a lot of applications that can be done with that type of implementation
also if u was running without spare hotkeys u could simple buy a external numpad and use autohotkey software to register custom keypress to those
Yeah I am looking through the hotkey options now.
Could do so many things with that type of widget.
with that statement i mean u could do infinity keypresses aka commands
its a very scalonable idea
Is it in #widget-share I just scrolled to the top and didn't see one about hotkeys
https://obsproject.com/forum/resources/better-points.918/ @unreal kestrel
OBS Forums
Better Points
Control OBS with Twitch channel points
About
Channel Points 2.0
Take your Twitch Channel Points to the next level by connecting them directly to OBS. Allow your viewers to trigger complex events that can change scenes and control...
Oh, nice thanks. That would be fun.
Wait what the hek.
none of them actualy works
have tested all only one i couldn't cause of the twitch problem
the first link would work but its a rough implementation of it
That could be used to start/stop stream from chat too.
@unreal kestrel that's why some sort of permissions is good. Triggerfyre allows you to set who can trigger what
@viral patrol anyplans / way to add DonorDrive to your alerts widget?
Hi guys! I want to create customs widgets for Runeterra, I'm thinking of scrapping Mobalytics site with some info, Deck Win Rate, and Win/Loss match list, and I don't know if I can use node.js with puppeteer inside the sandbox widget to scrappe the data, any ideas/help?
@nimble ore you can import and use js libraries that are publicly reachable in the internet and you can certainly make web requests and retrieve information using REST API endpoints from other systems.as long as you have a place to get that info, it shouldn't be a problem
@steady iron thanks for the promptly response, I'm going to try that
If you need an example of how to make REST API calls in simple JS and use that information, you can give it a look at this simple widget I made which, everytime you get a new follower, it gets the name of the follower from StreamElements listener and then gets a users Twitch avatar from decapi REST API: https://www.streamelements.com/dashboard/overlays/share/5ec41eb99af8fdae1120acd8
Also, you can look at this English/Spanish stream where I explained exactly how we made this widget, from scratch: https://www.twitch.tv/videos/625793406
@split bobcat Hi. Can you DM me an example fundraising there so I can investigate it?
Ok, hi. I've said this in intros, but people probably don't read that so: I'm looking to start creating overlays, widgets, stuff like that using Overlay Expert. I don't know whether the newcomers guide was supposed to abruptly stop after "Content" (my guess is not but who knows) so i don't know what 50% of the things do. Can i find some help here , just stuff like what the nested layers can be used for, advanced options for text, etc, it would be really appreciated. Thanks in advance if I don't get back straight away.
@pulsar willow Hi! Seems like you are referring to service that is not related to StreamElements. Our overlay editor can be found here: https://streamelements.com/dashboard/overlays You can select from vast of preconfigured overlays here: https://streamelements.com/dashboard/themes
Anyone an idea why the onWidgetLoad event returns incorrect sub counts?
All other events are returning the correct count, its just this event which returns it incorrect....
@crude crown Due to a recent change from Twitch API, these features are affected by the change:
- Ground Control does not have Custom Bot Name
- Subscriber count will count the Channel and any other permanent sub you may have (+1 or +2 or +3 on top).
We are working on fixing both issues, but there is no ETA.
OBS.Live still has Custom Bot name working fine in it.
@crude crown But partly due to that we don't get the correct number.
ok, then ill wait^^ cant do much more π but thanks for the fast answer
Is there a way to programmatically get !watchtime for a channel, either by specific viewer or overal? Is this perhaps loyalties in the api?
I think that /loyalties endpoint should give you expected results about that one
opens postman
Doesn't appear to, @viral patrol. Just the details of how the points system works for the channel. :/
@left rampart GET https://api.streamelements.com/kappa/v2/points/:channelId/:userName should return you points, alltime, current rank and watchtime
Instead of :username you can use top to get toplist of points
Thnk you, good sir
can i ask for css snippet here ?
i wanted to show this side but it is always cutted even i stretched here. even added a margin-right but its not even working
.event-container {
width: 0px;
height: 40px;
display: flex;
justify-content: right;
align-items: center;
border: 2px black solid;
background-color: {{backgroundColor}};
border-radius: 14px;
margin-top: 3px;
padding: 4px;
animation: 0.6s slide-in;
animation-fill-mode: forwards;
}```
nvm i got by adding padding on main-container
Okay, one more api question for now. Is the level of auth needed to run a protected endpoint tied to the level of the manager? Or do they just all require full control?
I think editors can also access
@viral patrol DM sent
(Sorry for so many AlertBox questions). When you are setting up a subscriber gift trigger, does {{amount}} equal the number of months the gifted user is a subscriber or how many gifts were sent?
That is "When variation is a gift"
Wait I get swag just for submitting a cool widget. ". You'll get EXCLUSIVE swag with your name on it!" 
Hey ya'll, I have a simple CSS question (sorry still learning) I'm just trying to center my text so that it doesn't bleed off the alert and accommodates for the length of one's username. Any idea how?
(I'm in the chit chat voice channel if anyone wants to hop in)
I think that it is bit more complex that plain CSS: https://github.com/rikschennink/fitty
βοΈ i used fitty when lx first mentioned it to me and it is great! but your issue might because you have "absolute" positioning on your .username and .following
if you give both a left of 0; width to match the container size, and text-align center? i think
@elfin arch I tried that, the text just disappears from the alert.. π€
I have a suspicion that I can only text-align it if I parent it correctly..I wonder if I parented the text in the right way, which is why the text disappears when I set the position to anything but absolute
right; so you switched from absolute to relative
Its the same result w/ absolute
go back to your first code with a left of 0
Same code as original, but w/ left set to 0
^ yup perfect.
that second image you π€ is missing a "top/bottom"
Hi, can I get some help with the duckduckgo command.
i don't know if inline block would work because it is on top of the parent div
Hey everyone, I would like to get some help with some commands
I need help with the stats and status commands
^for youtube that is
thank you for posting the answer @slate bay!
@velvet cave thanks and can I pm you about something as well?
@cursive pasture my DMs are closed, you can ask those in the helpdesks
@velvet cave who can I ask about a specific pc to stream OBS and Streamelements?
@cursive pasture There are no "best settings".
Please understand that every setup will be very different.
Any guides or videos that claim otherwise are misinforming. Your best option is to start with a base and adjust as necessary.
You can run the OBS auto-configuration tool. To use the auto-config, click on the Tools menu in OBS, select Auto-Configuration Wizard, and then just follow the on-screen directions.
You can use this tool to get baseline settings for your hardware and adjust as necessary from there.
Test, test, and test again. We are happy to offer suggestions for any issues you may be having afterwards, but not a list of settings.
Thank you 
Also please keep this channels to code related questions plesase, thank you!
Okay thanks, yeah some help with the !stats and !status commands on Youtube please
can you state your !commandName and the response you have; or maybe best a screen capture of the command settings? and give the best description of the problem? ... i don't know youtube myself at all so i'm not able to help; but hopefully someone else can
These are my two commands I need help with and their respective codes. For !stats it displays the current viewers accurately and the rest returns a 0. !status returns all of the inputs correctly except for current game which returns the ${game}
so can i only use the api with a channels JWT Token or is there actually a scope based oauth access possible? I'd like to develop on the API, but it would be great, if a streamer does not need to give me full access to everything.
@wind heron https://strms.net/oauth2_request
Create a new survey on your own or with others at the same time. Choose from a variety of survey types and analyze results in Google Forms. Free from Google.
how long do they take to respond? so i can tell my friends how long i need to do this the safer way :)
Applications are processed in batches so it'll depend on when the last one was. Maybe two or three weeks?
phew thats long, okay. then i'll develop for now on the JWT token which can be switched to a access token
thanks :)
Aww, thats unfortunate
Hey guys, how you doing today?
I'm trying todevelop a chatbot for my channel using streamelements api and loyalty points, but i'm receiving a 404 getting user current points
the URL i'm using is the following:
https://api.streamelements.com/kappa/v2/points/johnnyfrosty/johnnyfrosty
the channel is found but the user isn't
You'll want your channel ID instead of username
../points/5e303059b9153d9385e20124/johnnyfrosty
@pulsar willow Please ask your question in one helpdesk channel only. A support volunteer or StreamElements staff member will assist you as soon as they are available. Asking in multiple places will only result in confusion, not faster answers. Thank you for your patience.
can anyone help me i cant edit socials on a overlay
@plush eagle If you would like help from the StreamElements support volunteers/staff please post your question in one of the helpdesk channels and someone will assist you as soon as they are available
#helpdesk-twitch | #helpdesk-youtube | #helpdesk-facebook | #helpdesk-mobile | #helpdesk-selive | #651453660810838026 | #helpdesk-merch
Thank you for being patient.
Is there a maximum amount of characters you can put inside a text field?
I have a question about imopring your own alert
I made it in After Effect as transparent background in .mov
but as streamelements doesn't support .mov, i tried converting it into .webm but when i do that hte background gets black
but as streamelements doesn't support .mov, i tried converting it into .webm but when i do that hte background gets black
@analog topaz if u have used a web conversion thats the problem, they discard alpha channels, u need to use proper conversion tool like premiere to this work or ffmpeg
@analog topaz Do you have premiere pro or media encoder by chance?
ffmpeg -i input.mov -c:v libvpx-vp9 -b:v 2M -pix_fmt yuva420p output.webm
God dam getting backticks on a phone keyboard is inordinately difficult
That will convert to a webm and retain alpha
At a good bitrate too
vp9 ? @slow gale
Is there a way to create buttons to control content from custom widget?
yup; the buttons will need to be in the field tab
look for "button click" https://github.com/StreamElements/widgets/blob/master/CustomCode.md
Hello π Is there a way to embed a gif or webm into my custom CSS overlay code? I'm using custom CSS and can't figure out how to get a gif or webm in there. iFrames are disabled by stream elements.
are you using the default Alertbox with just the custom CSS turned on?
or like a full custom setup
Sry for late responce. I never used premier but can try and see how it goes
@analog topaz The easiest way is the one provided here: https://discordapp.com/channels/141203863863558144/259680142459142144/723005341792469012 I am using that every time I want to convert movs
casual post here that lx is a saint and I'm the big dumb, so give him love and respect for being patient with my smooth-brain-having self
@analog topaz https://ffmpeg.org/ - here you can find ffmpeg
Ok thanks so much will try
π€
I think all I need to know is, in the CSS Editor, do I replace
<span id="username-container"></span>
With something like
<span id="sender-container"></span>
@random pebble
this is empty HTML .....
<div class="image-container">
<img src="https://cdn.streamelements.com/static/alertbox/default.gif">
</div>
<div>
<div class="awsome-text-container">
<span id="username-container"></span>
just subscribed
</div>
<p>
{{message}}
</p>
</div>
</div>```
That's what I'm working with just now.
<span id="username-container"> ???? nothing here </span>
I'm sorry but I don't understand.
I'm really new to coding.
so a <span></span> is empty. there is nothing between them.
<div class="text-container">
<div class="image-container">
<img src="https://cdn.streamelements.com/static/alertbox/default.gif">
</div>
<div>
<div class="awsome-text-container">
<span id="username-container"> {name} </span>
just subscribed
</div>
<p>
{{message}}
</p>
</div>
</div>
^ i added {name} there so i should say the name now. (but the JS might override all of that)
Ok, I'll give that a shot and jump back on later to let you know how it went. Didn't realise I'm supposed to be jumping on to stream, like, NOW
Thank you very much for the help!
yup yup. i will probably be offline; but lots of others can help. happy streaming π
With default alertbox username-container is empty as it is filled with animated text via JS
... but the next step was to remove all of the JS . The end goal is {sender} gifted a sub to {name}
....can that just be HTML overrides with the {var} ?
Next step was to remove JS, but if JS is still present, it overwrites value in HTML on load
yes. if the JS is still there it would override the HTML; .... and answering my own question; yes it can be HTML/CSS only
had to play with it for a little bit π i've not used the default Alert widget much
... so i played with it more.... and the non delete all JS cheat mode is:
HTML
<div class="text-container">
<div class="image-container">
<img src="https://cdn.streamelements.com/static/alertbox/default.gif">
</div>
<div>
<div class="awsome-text-container">
<span id="sender-container"></span> gifted a sub to <span id="username-container"></span>!
</div>
<p>
{{message}}
</p>
</div>
</div>
JS ```js
//get data from the π€ StreamElements π€ data injection
const name = '{{name}}',
sender = '{{sender}}',
animation = 'wobble',
userNameContainer = document.querySelector('#username-container'),
senderNameContainer = document.querySelector('#sender-container');
senderNameContainer.innerHTML = stringToAnimatedHTML(sender, animation);
userNameContainer.innerHTML = stringToAnimatedHTML(name, animation);
function stringToAnimatedHTML(s, anim) {
let stringAsArray = s.split('');
stringAsArray = stringAsArray.map((letter) => {
return <span class="animated-letter ${anim}">${letter}</span>
});
return stringAsArray.join('');
}
ALT js... sorry i got side tracked π€£
//get data from the π€ StreamElements π€ data injection
const name = '{{name}}',
sender = '{{sender}}',
animation = 'wobble',
userNameContainer = document.querySelector('#username-container'),
senderNameContainer = document.querySelector('#sender-container'),
stringToAnimatedHTML = (s, anim) => s.split('').map(letter => `<span class="animated-letter ${anim}">${letter}</span>`).join('');
senderNameContainer.innerHTML = stringToAnimatedHTML(sender, animation);
userNameContainer.innerHTML = stringToAnimatedHTML(name, animation);
We need to reduce it moar:
const animation = 'wobble',
stringToAnimatedHTML = (s, anim) => s.split('').map(letter => `<span class="animated-letter ${anim}">${letter}</span>`).join('');
document.querySelector('#username-container').innerHTML=stringToAnimatedHTML('{name}', animation);
document.querySelector('#sender-container').innerHTML=stringToAnimatedHTML('{sender}', animation);
π€£ ... well played
But with stuff like that I am going more like providing values in fields and then replace them via templating
not saying that it the best practice π€· probably not good (i don't have professional experience)
So user can have {firstline} containing {name}
My practice is not good too, as it is messy if you want to change it
haha, ya that is why i keep my vars at the top.... most often 'edited'
π€£ and if we had one more variable container in there... id' want to map the querySelector s
const wrapData = (message) => {
return message.replace(/\b{name}\b/g, '<span class="username">{name}</span>').replace(/\b{amount}\b/g, '<span class="amount">{amount}</span>').replace(/\b{sender}\b/g, '<span class="sender">{sender}</span>');
}
const messageTemplate = wrapData("{announcement}");
$("#alert-message").html(messageTemplate);
Oh. Like that. So you can have {user} has subscribed for {amount} months in Alert message
Which will be populated with spans, that have classes.
ya... but you are using regex..... but that is basically built in with the AlertBox and custom CSS toggle
I am using that, so user can type templated variables in box instead of editing html code. This is definitely for more complex alertboxes
But it gives a lot of freedom to user
in default widget - no, but if you enable custom code it acts almost like custom widget
But you have no "onWidgetLoad"
So you have to use templating variables
Like const direction = "{direction}"; where direction is a custom field like:
"direction": {
"type": "dropdown",
"label": "Animation direction",
"value": "anim-bottom-right",
"options":{
"anim-bottom-right":"Bottom Right",
"anim-bottom-left":"Bottom Left",
"anim-top-right":"Top Right",
"anim-top-left":"Top Left"
},
"group": "Global settings"
}
ya; i was thinking the "fields" option" ... i need to play with the alert box box. i get the basics, but not the complex
ya. didn't realize that was a thing.
π€£ ... the reason i posted that first condensed code was to help with the "custom CSS" thing ... basically put all vars/divIDs in there commented out
And the reason I posted is to encourage a conversation about that, so besides you are helping, you are getting something in exchange too π
and i want to thank you for your help π―
Hello everyone, everything good? Hope so! I was looking to make a custom live chat widget using the open source that streamelements made available on Github. But I suck at JS ... I was wondering if anyone knows how to guide me what I do to make the chat overlay more or less like this:
- The nickname and insignia in a box above the person's message.
- The text size message box.
An example:
what source are you using from Github?and ya; you are in luck no JS needed .... just CSS π¬
just css to resolve this issue of mine? e.e I'm using the code of this link https://github.com/StreamElements/widgets/tree/master/CustomChat
ya.... i think? look at .user-box
ya.... i think? look at
.user-box
@elfin arch Sorry for the delay in responding. I see it here, and I am managing to make these changes. Now ... there are 2 other points I wanted to talk about. I didn't want the messages to come from top to bottom, but from bottom to top ... while I'm doing some tests on the css here, can you tell me how I can do this?
The think you should create is a user row in CSS which will be able to display all text, no matter how long it is
Then you update CSS and if you need JS too: https://github.com/StreamElements/widgets/blob/master/CustomChat/widget.js#L197
There are 3 classes by default:
message-row- it is a message containeruser-boxit is a box for badges and usernameuser-message- box containing user message
To make something like that you may want to set user-box to display:block;margin-left:15px; margin-top:10px; background: #1d6178; and user-message to display:block; margin-top:-10px; background: #ffffff
^^ π― (that's from the widget dev)
also if you start with this link (install) https://discordapp.com/channels/141203863863558144/457957557470887947/656092139817664523 there is an option for top to bottom or bottom to top π
Wow, thank you, really! My path went from 10% to 100% in less than 10 minutes! I will "play" here with the changes to get what I want. Thank you! @elfin arch @viral patrol
Hej I have a little question regarding the "To Do List" Command here (https://discordapp.com/channels/141203863863558144/424943321794871296/652419535613329409)
When I want to deploy the app and verify it, Google says it can't be trusted but I cant confirm it. :(
Hi could someone with knowledge of css please dm me i really need help with something
hello there... is it just me or does item redemption emulation throw an error for others as well? tried with the default custom widget as well and it throws the same error...
Uncaught TypeError: Cannot read property 'indexOf' of undefined at VM4954 about:srcdoc:24
the error is being thrown from here:
function bindEvent(element, eventName, eventHandler) {
if (element.addEventListener) {
element.addEventListener(eventName, eventHandler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + eventName, eventHandler);
}
}
bindEvent(window, 'message', function (event) {
const data = event.data;
if (data.listener && SE_API.responses[data.listener]) {
if (data.error) {
SE_API.responses[data.listener].reject(data.error);
} else {
SE_API.responses[data.listener].resolve(data.result);
}
return;
}
if (data.listener.indexOf('resp_') === 0) { // error
return;
}
the store redemption widget works however the custom widget doesnt... not even with the default javascript...
With the help and assistance of both of you( @elfin arch @viral patrol ), I arrived at the result I wanted. But there is a catch ... I tried some things in the css so that the background is compact the size of the internal text, but I was not successful. When the text is too long it simply ignores the line break and eats part of it at the right of the conainer. Would any of you know how to guide me on this point?
word-break CSS property
word-breakCSS property
@viral patrol NICE! And this case? π
it seems that when the message is smaller than the nickname box it keeps the size on the right side. I'm trying to understand what might be interfering with this ... if you have any assumptions.
I think this might be something with width:100%
Hey guys, is there a event to check if a field is true or false to reload the widget?
@heady orchid what do you want to do?
I think this might be something with
width:100%
@viral patrol I really looked a lot and made some changes and it really didn't work ... then I later "break my head more" to try to understand why this is happening. And anything I call you, if you can ...
@heady orchid what should be the size of the box if it's smaller as the nick?
@heady orchid what should be the size of the box if it's smaller as the nick?
@arctic tiger The size of the internal text
can you post the css of the box?
yeah
display:inline;
width:block;
margin-left:35px;
margin-top: 0px;
padding-bottom: 5px;
padding-left: 10px;
padding-right: 10px;
padding-top: 10px;
border-top-left-radius: 15px;
border-bottom-left-radius: 15px;
border-top-right-radius: 15px;
border-bottom-right-radius: 15px;
background: #082d6d;
font-size:18px;
.user-message{
display:block;
width:block;
background-color:#F2F2F2;
border-style: solid;
border-width: 2px;
margin-left:15px;
margin-top:-2px;
padding-bottom: 10px;
padding-left: 10px;
padding-right: 10px;
padding-top: 10px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
border-top-right-radius: 5px;
border-bottom-right-radius: 25px;
font-size:20px;
word-wrap: break-word;
@arctic tiger
try display: inline-block on the user-message.
maybe it has also to do with the alignment of the parent div
that there is a min-width or something.
try display: inline-block on the user-message.
@arctic tiger sorry for the delay. I was serving a customer here! So ... inline-block was like this:
xD
whats that? width:block;
try that to set on max-content
didnt see width: block; before.
width: max-content;
OOOOOOOOOOOOOOOOOOOH
width: max-content;
@arctic tiger
@arctic tiger it worked, but it didn't.... rsrsrs
I put max-width: max-content; and it worked
or is the screenshot the result with max-content? @heady orchid
@arctic tiger
yessss β€οΈ
Thank you !
No Problem. But you solved it for your self π
So I have been working on a Counter for 1 v 1 battles and I need to make the buttons edit/decrease the count. But I can't figure out how to target the widget and change the values. Any suggestions? It's looking something like this.
"how to target the widget and change" what do you mean by that?
So The buttons on the left "left stock" "right stock" should change the values on the right where the number "2" is
I used the code from the github, but not sure how to target the button.
window.addEventListener('onEventReceived', function (obj) {
const data = obj.detail.event;
if (data.listener === 'widget-button') {
if (data.field==='chat' && data.value==='First Message'){
const emulated = new CustomEvent("onEventReceived", {
detail: {
"listener": "message",
event: {
data: {
text: "Example message!",
displayName: "StreamElements"
}
}
}
});
window.dispatchEvent(emulated);
}
}
});```
The example given is addressing chat.
Well I guess no-one understand what I'm asking about.
what are the fields for your buttons?
might want to use switch() for each button @rare loom; but basically ```js
window.addEventListener('onEventReceived', function(obj) {
const data = obj.detail.event;
if(data.listener === 'widget-button') {
console.log('Button Pressed!');
if(data.field === 'button1') {
//do something when button named button1 is Pressed
}
}
});
any idea how to get a "last tweet" url? Id love !retweet command, that brings up the last thing i tweeted
@acoustic mantle hold my πΊ while I do some digging.
might drink some, hope that's ok
${customapi.https://decapi.me/twitter/latest/yourtwitternamehere?no_rts}
Replace the obvious information.
@rare loom if you need true or false as return you could use a dropdown as well
hi!
i wanted to have a widget that let's you have a subgoal with the bar updating the current subpoints (or subs if subpoints aren't possible)
does anyone have something like that?
I think there should be something in #widget-share @gentle forum
thank you @velvet cave
Mmh see when you make an overlay on streamelements and you want to send it to someone for when they click on it and it downloads how would you go about that?
The feature of overlay share is enabled for professional overlay creators and Code Gurus due to safety concerns.
Are Loyalty Point events emitted from the Socket API?
They are not, you can read current user state via GET request from https://api.streamelements.com/kappa/v2/points/:channel_id/:username
As points are updated in bulks and that would cause a big chunk of data emitted via sockets
I see, that including the Loyalty Point Redemptions, right?
Redemptions (stream store redemptions) may be emitted but I am not 100% sure about that. Spending on commands, subtraction via API are not emitted for sure.
Thanks for the answer. I'll check the scheme again
Judging by the scheme, I believe redemptions aren't emitted
...
"type": {
"enum": [
"cheer",
"follow",
"host",
"raid",
"subscriber",
"tip"
],
"description": "Event type"
},
...
I don't know if this is the right place to ask, but:
How long does it normally take to get feedback on community widget submissions?
I don't know if this is the right place to ask, but:
How long does it normally take to get feedback on community widget submissions?
@past heron no ETA, i have one too waiting to publish ;-;
@arctic tiger @elfin arch Thanks fro the help. I had given up for a while. And just got back. I think I got it to work. But then again thanks .
After gong back and forth on the documentation I was able to get it to work. It's not as clear, tho.
I ended up doing it with a switch.
window.addEventListener('onEventReceived', function(obj) {
const fieldData = obj.detail.fieldData;
const data = obj.detail.event;
if (data.listener === 'widget-button') {
switch (data.field) {
case 'optionOne':
break;
case 'optionTwo':
break;
}
}
});
Is there a way to have an external button to control these instead of opening the overlay to press the button? something I could load in OBS.live or OBS to press it externally. Also to fill the fields from outside the overlay editor.
might want to use switch() for each button @rare loom; but basically ```js
window.addEventListener('onEventReceived', function(obj) {
const data = obj.detail.event;
if(data.listener === 'widget-button') {
console.log('Button Pressed!');
if(data.field === 'button1') {
//do something when button named button1 is Pressed
}
}
});
@elfin arch @rare loom
and then set a local var to store a state with you.
Is that to answer my second question?
I got the button to work while I'm in the overlay Editor. @arctic tiger
I press the button and it does the instruction. IT was like charm. Thanks
Is there a away I can have buttons shown on OBS.Live to send buttonclick externally?
Is there like APIs to connect externally?
Or controlled by a chat command?
Just curious.
But then again, just letting you know all you have helped me with has been gold!
Having a question, is it possible to create a command that users will redeem points and then makes an external HTTP call ? Thanks in advance.
Hello there, I'm having some issues with the Event Rotator widget (CO6Studio). I cannot figure out why is not showing in my live stream, it's only working in the preview. Any ideas? thanks
@quasi dune You can use ${customapi URL} as command response and set that command's cost.
@viral patrol thanks for the response.
Hello, i know many people ask about that, but if someone have a wish and time, pls tell me how to make something like this. I'm new in html/css/js, learning it, but need to know how to make it from and to.Want to make my stream awesome and make it 4 others.Thanks in advance https://www.youtube.com/watch?v=phHCTVztsxs https://www.youtube.com/watch?v=BXS_JcXQb8w https://www.youtube.com/watch?v=lZ8jwWETIz8
Get this overlay .....βΊ https://goo.gl/R77tT3
Check out the read me file .....βΊ https://goo.gl/wRzPrR
Retrowave overlay and stream package is now available! Support for Twitch, YouTube Gaming, Mixer, and Facebook live streaming.
Whatβs cooler than the 80s? Well, lots of thin...
Get Interface Here .....βΊ https://nerdordie.com/product/interface-stream-package/
Interface is the product of a dark dystopian future. In collaboration with Twaz, we have created this cyber punk inspired stream package for streamers who want a clean, animated retro-futurism a...
Make a splash. Presenting βRiptideβ. A sun-soaked, summery design for streamers on #Twitch, Mixer, YouTube, and Facebook Gaming.
Animated overlays and stream templates, designed for beach bums and energetic, upbeat broadcasters. Psychadelic colors, waves, & graffiti patterns...
hello there... is it just me or does item redemption emulation throw an error for others as well? tried with the default custom widget as well and it throws the same error...
Uncaught TypeError: Cannot read property 'indexOf' of undefined at VM4954 about:srcdoc:24
the error is being thrown from here:
function bindEvent(element, eventName, eventHandler) {
if (element.addEventListener) {
element.addEventListener(eventName, eventHandler, false);
} else if (element.attachEvent) {
element.attachEvent('on' + eventName, eventHandler);
}
}
bindEvent(window, 'message', function (event) {
const data = event.data;
if (data.listener && SE_API.responses[data.listener]) {
if (data.error) {
SE_API.responses[data.listener].reject(data.error);
} else {
SE_API.responses[data.listener].resolve(data.result);
}
return;
}
if (data.listener.indexOf('resp_') === 0) { // error
return;
}
the store redemption widget works however the custom widget doesnt... not even with the default javascript...
hello everyone, is it hard to set a command so that the text auto changes line so it doesnt cross the image
well, HTML doesn't know it has to do that unless you tell it. Is the image always going to be the same size ad same place?
YOu can do different things, like placing the image and the text in different containers, so the text will stay in its container, which you can place in a way that will not interfere with the image
are you using the Wheel of Forutne v2 ? this one https://discordapp.com/channels/141203863863558144/457957557470887947/659336746051567627
i can take a look at it for ya @pulsar willow ... show an example of how to get it to show hide between the commands
sure. i'll take a look. give me a few minutes
go with this in the CSS: ```css
#container {
background-image: url({background});
background-repeat: no-repeat; /* Ensure that background does not repeat /
background-position: center; / Ensure image is centred /
background-size: contain;
width: calc({{wheelSize}}px + 160px); / Width and height should at least be the same as the canvas */
height: calc({{wheelSize}}px + 160px);
opacity: 0;
}
#canvas{
top:80px;
left:80px;
position:relative;
}
.show {
animation: fadein 1s forwards;
}
.hide {
animation: fadeout 1s forwards;
}
@keyframes fadein {
from {opacity: 0;}
to {opacity: 1;}
}
@keyframes fadeout {
from {opacity: 1;}
to {opacity: 0;}
}
Add this into the JS tab```js
$("#container").removeClass("show").addClass("hide");
on lines 34 & 64
and add this on line 143 ```js
$("#container").removeClass( "hide").addClass("show");
I also just doubled the cooldown between rounds (so it will stay on the screen for the same amount of time it spins). should work π€ @pulsar willow
π€£
yup yup.
well post it here π depends on who is online at the time
Thanks. have a good night and happy streaming π
@long tinsel The easiest way is to check #widget-share channel, Themes gallery in StreamElements, so you can find some ideas that you can alter to fit your needs.
Okay thx @viral patrol
@steady iron the image willl always be the same
But some nicknames are very big, do you know if its hard to set that?
And if not, could you help me?
Where dit all the session data go on the onWidgetLoad eventlistener?
obj.detail.session.data doesn't have the session stuff anymore
As I see on your screen it contains session data.
I mean the stars-session follower-session share-session etc
Oh. If session does not have a specific value it is not set instead of 0 as value, but I am not sure
Is there a way to emulate it?
Set values here:
Thanks
Something i found in the session data tab, this is for facebook. The stars data doesn't have a count and amount input. Only top Stars and Top Stars Donator
And theres a line going trough it
Reporting that to devs. Thanks
you can set it up there? lol didnt know that, thanks for the tip!
π
Saving values there will emit onSessionUpdate
Is there a way to access chat through python scripting in OBS directly? (Without using twitch irc)
Hello there, I'm having some issues with the Event Rotator widget (CO6Studio). I cannot figure out why is not showing in my live stream, it's only working in the preview. Any ideas? thanks
@fallow vortex Change the resolution.
@glad urchin you might want to use this to connect your .py script with OBS: https://github.com/Palakis/obs-websocket
@pulsar willow This is the library we are using for wheel of fortune: http://dougtesting.net/winwheel/examples - you can set the winner before wheel spins using any JS you want to.
@viral patrol I noticed you shared a obs-websocket that means we can control actions/button outside of StreamElements editor? I might try to link it to a StreamDeck.
Would you recommend multiple browser sources in OBS and get the different overlays from SE... Or set all overalys in one main Overlay from SE and just add 1 Browser Source on OBS?
take a look at the http://dougtesting.net/winwheel/docs/tut14_setting_the_prize in the docs lx sent you @pulsar willow
in that first example there is a stopAt ```js
let stopAt = (91 + Math.floor((Math.random() * 43)))
Basically; in that wheel example each piece is 45ΒΊ separated. So, if you want to say NOT have the 1st piece included, you would want ```js
let stopAt = (46 + Math.floor((Math.random() * (360-46) )));
``` with the above, the wheel should only stop between 46ΒΊ & 359ΒΊ
@rare loom Certain circumstances might require multiple overlays depending on your scene designs or if you need something heard but not seen. All depends on your needs.
Btw, your name is dangerous @hardy walrus
yup exactly!. ... that 1 extra degree is for like a visual to make sure it's not a split π
@outer oasis you can create a div and set a fixed size for that div, and add a property to make text wrap around if it hits the edge, something like what is explained here: https://www.w3schools.com/cssref/css3_pr_word-wrap.asp
when i use the CSS Editor it always show the dolphin, I want to chance that, maybe using the html feature, but where i can find the videos i upload?
you want to add a field in the field tab to set the image/video
something like this ```json
"thisisimage1": {
"type": "image-input",
"label": "I am image number 1!",
"value": ""
},
then when you go the the fields you see a "I am image number 1" .... in the HTML/CSS anywhere you put `{{thisisimage1}}` will be replaced with that image
i'll try that, thanks
Nice @steady iron. Thank you very much
It has an example that includes code, that should make it easier to take and adapt to what you are doing, let me know if you have trouble!
ok im gonna try this one last time in a hope to get feedback... its a default custom widget:
i need to check out soon @static lintel but can you post the js code in the widget from that area? have you accidently mutated data?
add a console.log(data.listener) there in the line 20
@elfin arch the code in the top side of the dev tools is not written by myself. it is streamelements code. all i did was i simply added a custom widget and emulated an item redemption, without changing anything in the default code that comes with it when you add it. it doesnt get to the client code at all.
you changed nothing in the default custom widget and get that error?
yes, that is right
give me a sec; i'll fire up an empty overlay. are you using Chrome?
yes chrome 83
yup yup. same error
tried it in incognito and gives the same error... was thinking it was maybe an extension or something...
my guess is that the custom widget isn't coded for the redemtions
...haha and looking at the code it is in there π€£
yeah there is a hack in the default code for it even...
you are right π― ..... the redemption emulate breaks ... now to figure out why or a solution ...
i'm not sure why; and i don't have a solution... but anything i test with the custom widget breaks it π€ .... i'll pass it along for a red name Dev to look into.
tyvm
ive always done it like this
} else if (event.listener === 'redemption-latest') {
if (includeRedemptions) {
addEvent('redemption', 'Redeemed', event.event.name);
}```
@broken coyote it never gets to the client code... it errors out before that...
im not sure one what your working with. thats just how i grab redemption info
if you add a custom widget and emulate an item redemption
Yes, but the error above is caused in initial Custom Widget handler. It should not affect custom widgets functionality, but it doesn't look nice in console π
the thing is that since it errors out it never reaches the client code so it doesnt trigger any animation or anything... not necessarily the console log is the problem cuz that nobody will see
and as far as i noticed it happens only for the onEventReceived event... for the onWidgetLoad event it seems to work just fine
actually that is not entirely true either... cuz i just had a redemption on my stream today and it is not showing up with the default custom widget... however with the onWidgetLoad event it doesnt error out...
Huh. I forwarded that issue before weekend. I am sure that we will have somebody from almighty devteam coming with fix really soon. I will do my best to motivate them (including "I will start singing until you fix that")
oh geesh... im so sorry for those guys then... π π
OK. Seems that they were too afraid of me singing. Fixed π
i know there are badges for subs, vip and mod. but is there a special badge type for the founders?
meaning if they count towards subs or if they are sent as another badgetype in the event data
@viral patrol Iβm looking through the documents on that web-socket api for OBS, not seeing methods for pulling data from chat. My current script runs as a custom widget, it uses obs-websockets to communicate with OBS and then uses the web events to read chat. Iβd like to take this solution out of the custom widget and run it directly in OBS as a python script. The OBS scene commands and such are no problem for me, but I cannot figure out how to pull the chat data without using something like twitch-irc. I was hoping this data could be accessed through OBS since OBS connects chat to my channel.
We are not re-emitting Twitch events via our websocket.
Do you know of any method to monitor these events through a local script?
Huh. The only thing I could think of is using IRC client/tmi.js
So for some reasion using {{compiledMessage}} doesn't show any text. Event when there should be. This is on a youtube account.
Am i doing something clearly wrong?
Using {name} or any other predefined variable doesn't work inside the js. If i switch to not use css it works fine.
Anybody knows if there's a chat command that takes the name of all the first chatters on twitch?
hello devs! Question: is there a way to show currently playing track on obs? what i mean is that ive used text file as source so far (nightbot output text file) and then on obs (text source - local file etc)
but i would like to use streamelements songrequest feature instead of nightbots one
SE songrequest has a widget to show currently playing song @solid holly
@elder dragon There was a change which was not on github yet (mb). {message} is HTML, {messageRaw} is plaintext
Ah okay thanks
are there other badge tyoes then subscriber, vips and moderators? and what are the names of those?
(btw is there a documentation for for example the session data?)
for Twitch .... yes a bunch
....they are the badges in chat .... so like maybe 100 different ones
hmm but some got the same type correct? like all sub badges count as subscriber? cause i have the feeling that the founder badge doesnt count as subscriber
ya; here is the Twitch API https://dev.twitch.tv/docs/irc/tags#globaluserstate-twitch-tags
@viral patrol Tested it and {messageRaw} returns undefined
and {message} still returns nothing
there should be a different badge for 'founder' badge (but only if the chatter has that displayed as an option) @hexed ridge
okay will try that then :) thanks
Is it possible to make a !yoink command which steals 25 points from one random chatter and gives it to the guys who wrote the command?
i don't believe so @fickle iron; at least with the built in command variables. best bet would be like the !duel system
@elfin arch ok thank you SmileW
@elder dragon
Why it not work with me then :(
Console.log also doesnβt work for me
I am working as an editor on someone elseβs account which is a youtube account
But not sure if that changes anything
This is the output if i put {message} - {messageRaw} for the message variable
{name} {amount} {tier} do work
hey guys, is there anyway i can find the full code for the current alert box? I want everything for it minus the alert duration as I want each alert to infinitely loop till the next alert is triggered
The best approach for that would be using eventlist instead of alertbox as a base. Limit displayed events to 1 latest and adjust styling from alertbox. So basically if you combine those two widgets, you should be able to achieve that:
awesome will give it a try, just seeing how easy it is to make it seems like alerts are permanently affecting the overlay, and that looped animation in between the 2 seems to be the play
sort of like on streamlabs when you accidentaly dont have an animate out and it infinately loops till the next alert is triggered
ok JS is still way over my head! Is there anyone I can commission to make such a widget, can't seem to see anyone on the Marketplace that does widget coding? It's basically just an alertbox that can take looped WebM's that don't have an end timer. Each new alert replaces the old alert.
hey everyone i have a question is it possible to set filter: hue-rotate random ?
{
"type": "follower",
"amount": 0,
"colors": {
"hue-rotate": "0deg",
"saturate":2,
}
I Have this and i want to have a random number 0-360deg for hue-rotate
is it possible ?
Hi there!
I tried to remove song from media request queue and got an error: {"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred"}
Any ideas?
Hi where can I find the JWT
I'm in my channels dashboard
but I don't see a "show secrets" toggle
or click your username at the top right in your SE dashboard
ty
how can I make a custom alert that I trigger with requests. If anyone has seem the shadow raid legends alert that is what I'm going for
where there is some kind of hook or callback that triggers it
I am getting a CORS error on StreamElements own CDN (image-input) when trying to load an image..is this a known temporary outage or am I missing something?
Static/Custom > Custom Widget 
cool ty
and then which part of the documentation do I reference to trigger it
StreamElements
from a python module
okay basically whenever I launch a Twitter giveaway I want to kick off a notification on stream
So I have created the custom widget... but how do I access it
It's a blank canvas, it's up to you to provide the connection. You could use socket.io to provide the connection between the custom widget and your server
or just put a button in your overlay and trigger it manually
https://github.com/StreamElements/widgets/blob/master/CustomCode.md#button-click
you would need a socket server otherwise
okay I guess I'll need to go with a socket then thank you
I guess I was hoping I could do something like this?
well, I never used the Kappa-API before so I am not sure what action refers to
gotcha
I think that endpoint is for editing an overlay through the API
It wouldn't be possible to target a custom widget in any case. A potential workaround might be to use the alertbox/redemption widget instead. Set up a redemption item with the notification you want, then POST a request to redeem the item or something like that
@pulsar willow You can find your JWT token on your account channels page ("Show Secrets" to reveal the token): https://streamelements.com/dashboard/account/channels
READ ME:
This is a private security token. Do NOT share this token here or other public places, only with a StreamElements staff member in private.
@red sequoia You may also check #widget-share https://discordapp.com/channels/141203863863558144/457957557470887947/709114221581041664 - in those charity widgets you can find alertbox fired by external action,but not as websocket/webhook provided.
How do I delete a channel in Streamlabs (x box)
hey @graceful pine be sure to ask around in the #dreamteam and do note, that you're asking a slobs related question
tx
Hello! I recently moved to twitch from mixer and i previously used streamelements for all my alerts. How can I use all my alerts that i currently have with my mixer account and sync it with twitch? I logged in separately with my twitch account to streamelements and i cant use the import feature. I tried to add the twitch account alongside my mixer and i get a message reading that the twitch account is already in use. what can I do?
Account Merging - Please note:
- Merging accounts only allows 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 you will be directed to DM them to a staff member.
@frosty socket You can find your JWT token on your account channels page ("Show Secrets" to reveal the token): https://streamelements.com/dashboard/account/channels
READ ME:
This is a private security token. Do NOT share this token here or other public places, only with a StreamElements staff member in private.
Thank you!
On deck
Can I use the same tipping link for more than one platform and still get alerts?
yes @vernal hare
just use the same link for all platforms
as the tipping website is in SE domain
there isn't any problem with it, the alerts will work just fine
Thank you!
Any backend devs that are able to help edit pre-made widgets and goal event lists? Please DM me
You don't need backend devs to prepare your own goal/event list widget. We got it covered both on our github or #widget-share channel.
@viral patrol I need it custom made, fusion of a couple together, that's why I specified "edit"
Its just not 1 I am looking at doing, thanks though
I think the best way to find somebody to create that widget is to find a developer here: https://bit.ly/StreamersMarket
@viral patrol Tried that
No one available for me, thanks for your help π
Most of them specialise in animation screens, however, not in coding and knowledge there of streamlements, you either have people who have knowledge with coding or of streamelements yet not both
Its a difficult combination to find
What about @simple wraith ?
I'm more of an; i can help with your idea and make it look pretty - kind of guy..
@native trellis @simple wraith Thank you to you both π I do need coding done it to though since it will be amalgamation of two widgets to get the ideal one, plus there will be some graphical changes as well
Fiverr is a really horrible place to find a coder specialised in StreamElements, I highly advise against searching for such on there, I have so many people reply to my ads that are not compotent in both and/or just want the money, its very draining
Hello, I have been working on figuring out Grot's Credit roll all week. I think I've made some progress. I can get it to work just fine, but only AFTER I end the stream. I'm very confused as to why it won't update while the stream is live. Does it have something to do with my session data? Do I need to have launchpad or something running?
The strange thing to me is that in my overlay editor it shows the names of recent subs/follows, etc. It just won't show in OBS or on stream unless I stop the stream. Any help is appreciated, feel free to DM me since my post will likely get lost in here.
Hey everybody π exists an overview about all "types" in custom "fields/json" ?
Check channel header for Overlay Editor documentation.
@rugged rapids ty π
question how many request lamit to request custom donation alerts?
just that 1 people other server thinking adding his Crypto donation platform with SE alerts and not sure cap can do send as queue.
i already found out streamlabs 1 but im after your guys 1 next
Hello! I am wanting to switch to streamelements but I can't loop my alert animations to lengthen them to the sound alerts. Is there a solution here?
Hello! I am wanting to switch to streamelements but I can't loop my alert animations to lengthen them to the sound alerts. Is there a solution here?
@cosmic sorrel manual looping using a video edit software is the best way to precisely match video+audio
Okay thank you!
@static wedge the documentation is on the description of this channel
This one specifically has the list of field types: https://github.com/StreamElements/widgets/blob/master/CustomCode.md
Hi! I complete the form to get a Token some days ago, are they being processed?
@steady iron thank you so much π π got it
@gilded lotus
Access to OAuth2 is granted in batches from what I know, so it can take between few minutes and 2 weeks (it depends when previous batch was granted access).
did no one got me back my message yesterday?
@rugged rapids ohh! thanks!! I will wait
is there a way to speak directly to the developers?
I truly need a way to show that someone specifically RESUBSCRIBED with a TIER 2, not only one of them
I wonder how hard it can be to add multiple conditions
Is anyone here perhaps able to identify what pre-made widget/goal list this is from, I saw a streamer with it, however they were end stream so I couldn't ask. Thanks
Hey there! I have a question. Is it possible to have a chat command that creates a chain of multiple responses? Like if I have stuff to put in chat but it's too long for one response, so I split it into 2 and have them automatically appear in chat one after the other with the use of the command.
Not natively with the chat commands, but it is possible with a custom widget pretty easy.
Are there custom widgets for that already available?
Give me a minute and i'll post some code for an example
π
make a new 'custom widget' on one of the overlays that will be active when you want to use the command and delete the code in all of the tabs.
then put this in the JS tab ```js
const commandName = '!socials', //chat command
jebaitedAPIToken = 'jebaitedAPIToken', //Go here and get a botSay token: https://jebaited.net/
responses = [
'You better be following me here Kappa',
'Youtube: youtubeName',
'Twitter: twitterName', //...etc
],
delay = 5; //second delay between messages
window.addEventListener('onEventReceived', function(obj) {
if (obj.detail.listener === "message") {
if (obj.detail.event.data.text === commandName && obj.detail.event.data.badges.some(i => i.type === 'broadcaster')) {
responses.forEach((response,index) => setTimeout(() => sayMessage(response), (delay<0.5?0.5:delay)index1000));
};
};
});
const sayMessage = (message) => {
if (jebaitedAPIToken.length !== 24) {
console.log('API Token is not correct')
return;
};
fetch(https://api.jebaited.net/botMsg/${jebaitedAPIToken}/,
{
method: 'post',
body: JSON.stringify({"message": message})
})
.catch(e => console.error(Error sending message to chat));
};
*updated sayMessage to 'post'
let me know if you have any issues @gloomy stump but should work for you as well π€
@elfin arch Awesome!! Thanks π
Have a question, I am using customapi in the commands, is it possible to ignore the answer returned from HTTP?
And is there any possibility to group commands and having a global cooldown for that group of commands?
When attempting to change the font size on MrBoost's Chat Widget, it will not change at all and is stuck on the current font size. Not even adding a line of CSS Code wont fix it.

