#developers
1 messages · Page 1 of 1 (latest)



tolkeinizer


Cant leave it 

We talked about making it so you can click 7tv emotes and get a mini dashboard like popup right? @hasty kernel
yes
we have vueuse in the extension right
Do we not just inject it into twitch's thing?
we could
if you actually want to find the criteria for that
and also figure out a reliable way
to open the cards
I think its just easier to replace it completely
Hello yes I am dev
pretty sure vueuse is in yea
if not it should be since we used thignsl ike onClickOutside() and whatnot
yea
it uses useDraggable from vueuse too
which cleans up the code a lot, compared to the equivalent pointer tracking in UiScrollable
forsen
nesrof

new general 






Why cant i write a single commit without a typo* 
good one lol
this is why you dont push immediately
make a few commits and then review
after youve rested your eyes

some gray thing
I believe
that's the "no icon" icon for vods, right?
used to be the ghost, no?
Is the new ExtensionV3 going to eventually include the complete web chat replacement?
It already does
Suggestion: add the links to the API and EventAPI repository in 7tv.io
Or all other github repositories under 7tv

https://7tv.io/v3/users/userid doesn't show paint information
but GetUserForUserPage(userid) does
is there a reason for this
Round ??? of React vs Vue
what's an Ember JS
idk
if it 17% im 17%
sound like the next big thing
lit is google's shit i think
am aware
so means very little overall
just means people like svelte
which makes sense
but doesn't really make it a viable production framework quite yet
i suppose
oh right its this one
looks like react, does everything like react, but at least it's not react

no virtual-dom
uses "signals" so it doesn't re-render everything
performant, ssr ready, something something buzzwords
it looks lightly convoluted
could use some syntactic sugars to help it i guess
looks raw
but i guess it's ok
twitch used to use ember
i think didnt they
before the react refactor in like 2018
yes they did i believe
https://vanilla-extract.style/ not related to 7tv in any way but this is actually pretty cool

zero runtime stylesheets
as if
runtime stylesheets
were ever a thing
in any framework

solving a problem that doesnt exist ✅
who uses it

-> make problem -> make new software to fix problem that didnt exist
thats not even a runtime engine tho
that prebuilds
just like the other one
cumwind
Thoughts on tailwind?
angular in 2023
didnt even consider that this wasnt a thing
wtf
so bad
I like graphs 
<div option="use-ellipsis" @click="emit('ctx-interact', 'use-select')">Use Emote...</div>
<div option="open-in-new-tab" @click="emit('ctx-interact', 'open-in-new-tab')">
{{ t("emote.context.open_in_new_tab") }}
</div>
<div option="copy-emote-link" @click="emit('ctx-interact', 'copy-emote-link')">
{{ "Copy Emote Link" }}
</div>``` can someone tell me where this object for `emote.context.open_in_new_tab` is located ?
right now I just hard coded it
or it prob doesnt matter 
This is from the website?
I believe t("emote.context.open_in_new_tab") is just to get the i18n
yes
//EmoteCard.vue
case "open-in-new-tab":
window.open(`/emotes/${props.emote.id}`, "_blank");
break;
case "copy-emote-link":
navigator.clipboard.writeText(`https://7tv.app/emotes/${props.emote.id}`);
break;
default:
break;``` i hope this is the right place to my function
Seems fine. But add the string for "Copy emote link" to locale/en_US.ts and do t("emote.context.copy_emote_link")
this one right ?
Yes, that should sync with crowdin
Also there should be a modal component right ? Its just to let a user know it has been copied
https://picocss.com/ interesting
did y'all stop creating chatterino7 installers with 7.4.0?
its more like we got lazy
just download the zip
and extract it
and it will work the same way
yeah. did it bork the update from the ui? or did that never work?
i don't remember if i've used it in the past or not
how do I get the emotes btw ?
yes
yes
go back to the official 7tv.app site
open the network tab and you can check how the gql query works on the site
EventAPI has a resume function now (websocket only atm)
https://github.com/SevenTV/EventAPI#resuming-websocket
It recovers all missed dispatches and restores subscriptions in the event the connection drops

how are trending emotes ordered?
(channel count) ÷ (days since created) ?
I'd guess it also takes the size of a channel into account. Would make sense at least.
never

im requesting changes NOW 

my bad , i always felt it looked weird or not right how the modal looked , i will show u , u will prob hate it more
Yes

is there like a tooltip component too I can use ?
ong it should be like a popup and a automatic close
I want to add toaster libarary for this
but feels overkill
and out of style maybe
well i dont think the ui utilities are on the site
so for now just don't add feedback
easiest way about it
the context menu closing is enough feedback that the url was copied anyway
so you are suggesting I remove it , fair enough
lemme add alert to it Kappa
anyway , lemme change some stuff , prob take few mins
@hasty kernel pushed it , I think my lint fucked up and added some extra space in the styling
should I remove them ?
pushed again

pushed again , es lint is the only thing that has given me a hard time Sadeg

@hasty kernel does it need any more changes ? I would love to see it live soon 
when can I see my feature live ?
who are you talking to? 

🧱
or I am prob schizo wasting my sleep to do this feature 🙃
I just found 2 bricks

how do i do the OAuth thing
i pressed login button, twitch and discord does have a pop up, but items arent set in local storage
Wish i could help 
Wow, my feature got merged, thanks Mr Anatole 
And @quick ibex for helping me set up the project 
first head
The v3 extension is in very active development, and contributons are welcome. I would recommend specifying what you want to do first, since everything is changing rapidly atm
Thanks. I suppose on Discord? I don't see many issues on GitHub
Yea, we havent really started using issues on github yet, those will become more active once theres a larger number of users
Atm its almost only me and anatole working, so a lot of the planning is just internally between us.
Okay I see
I want to submit a fix for the settings menu being overlayed by the Twitch page elements
yeah that should be a very easy fix
I'm using v3 on a smaller screen and it has this issue, unless you have other plans for the z-index of these elements
its just miss specificity z-index
you can also solve this with a stacking context
although thats a harder solution
ah I see
With support for narrow chat
I see the #seventv-root has z-index=1 though not sure why that's not working, as its still being covered by child elements of the main Twitch root div
Can probably just change that z-index yea
though removing the z-index=1 from the #seventv-root seems to work
@hasty kernel Do you know if there's any reason for the z-index on root to be 1?
Or can we just change it?
Does it matter?
Any relevant elements should be teleported inside the twitch root
Where z index doesn't matter as elements at the front take precedence
Right now, when zoomed in, some UI elements come on top of the 7TV settings
zindex is relative
so this doesnt even matter anyways
not sure why we use z-index in most places
z-index 99% of the time is useless
and only causes problems
because of its relative nature
because anatole is right you can just reorder the elements
and should
that is a good point
Hey guys, is there anything I can do as a web developer to make 7TV extension work on my site which has embedded twitch chat, or has that functionality just not been implemented yet in 7TV?
Probably nothing to make the 7TV browser extension work since it has a manifest where all the websites it has access to are listed, and those are probably only twitch domains
Actually an update to this:
I know it's possible since this website it works fine: https://www.liveviewsync.com/
Conveniently browse and synchronise league of legends LiveView streams from Twitch with Game Broadcasts on mobile or desktop.
But my website https://iwdlive.com/caster/iwd doesn't work
Watch youtube with a twitch stream simultaneously.
I have no idea what the difference could be
Probably because it just iframe's twitch/twitch chat?
Well tthat's what my website does too
Doesn't work for me on the BETA extension
Does it really work? For me only FFZ works, I think, not sure
wtf I swear it was working before lol
yea you're right doesn't work there ig
But since BTTV and FFZ are able to work in embeded chat, that means it must be at least possible. So ig my best bet would be to figure out how the extension works, fix it and make a pr?
I think we need to add a permission for the extension to run in all frames
For it to be allowed in iframes
Is it possible to add as optional?
Settings
Easy to implement since anatole made a composable to request permissions
Is it possible to place the context menu more upwards if you right click on an emote on the bottom row ?
i know it isnt that bad but still
Did you fixed it?
is there a gql query rate limit?
i want to try changing to random paint every minute
but dont wanna do something stupid accidentally
Hi ! Just wanted to know if there was an Android app that listed 7tv emotes and download them ? I like to use them in Google Messages but it's kinda annoying having to download them manually through the browser. I know a similar app for BTTV exists (https://play.google.com/store/apps/details?id=com.drakota.bttvstickers doesn't work anymore tho) but couldn't find anything related to 7tv.
Also, I wanted to look at the API, but it seems like the route to search emotes doesn't return anything. At least not on my end 
https://7tv.io/v3/emotes?query=hmm
I can query /gql but since there is an API I wanted to use it
anybody can tell me if its possible to set session storage in mongodb with nuxt ? I dont see anything on google Sadge
search via REST isn't implemented currently, it's only available via gql
thanks for the answer! Do you have a vague idea of when it'll be available ?
Not that it's urgent or anything, just pure curiosity
is it possible to add a custom context menu for each message ?
it will have options like mentioning a user , copying a message for example
do you mean for the extension?
yesir
it's a planned feature yea
i made an extension that would copy messages , so i was wondering that should be possible
we already use custom right-click contexts on the website, so yes
everything would be done through the extension script right ?
can you give some pointers , maybe I can try to help
wdym by extension script?
like the script from the extension , sorry if my words are making less sense 

I'm working on some custom alerts, is it possible to give priority to 7tv emotes? 7tv emotes get replaced by default bttv ones.. I coded the alerts for SE and SL both, so I'm open to change platform if needed, thanks 🙂
7tv emotes does have priority if you only use 7tv stable or beta extension
Bttv ones got the prio if you use ffz or bttv tho
how is the events api v3 supposed to work? do you subscribe with a condition.object_id of a user or something? how do you subscribe to particular channels' events?
you subscribe to the emote set id
ahhhh yeah that makes sense, thank you!
can i use the API to get a list of all the emotes in an emote set? ex: i ask for the emotes in emote set id 123 and it returns ['OMEGALUL', 'LULW', 'peepoHappy']
or smthn like that
i looked thru the api docs and i couldnt find anything about it but maybe im blind as fuck
go to an emote set, let's say mine: https://7tv.app/emote-sets/60ae3cb1b2ecb0150521fa1f
change from 7tv.app to 7tv.io/v3 : https://7tv.io/v3/emote-sets/60ae3cb1b2ecb0150521fa1f
use a request to get it as JSON
alternatively, you can use gql:
query GetEmoteSet($id: ObjectID!, $formats: [ImageFormat!]) {
emoteSet(id: $id) {
id
name
flags
capacity
origins {
id
weight
__typename
}
emotes {
id
name
actor {
id
display_name
avatar_url
__typename
}
origin_id
data {
id
name
flags
state
lifecycle
host {
url
files(formats: $formats) {
name
format
__typename
}
__typename
}
owner {
id
display_name
style {
color
__typename
}
roles
__typename
}
__typename
}
__typename
}
owner {
id
username
display_name
style {
color
__typename
}
avatar_url
roles
connections {
id
display_name
emote_capacity
platform
__typename
}
__typename
}
__typename
}
}
variable:
{
"id": "60ae3cb1b2ecb0150521fa1f"
}
oh ok i see, sorry im not a very good programmer so i dont know how all this works, once i have the .json how can i extract the emote list into an array?
what language do you program in?
my current project is coded in python
you can use the json library to read a json file
ideally, you would use requests to get the json strings straight from the url:
https://www.w3schools.com/python/module_requests.asp
once you have the json data, you can convert it into an Object for convenience sake:
https://stackoverflow.com/a/15882054/20720939
then it's just:
emote_list = [i.name for i in json_obj.emotes]

Hi,
seems like bunnyinfra.net / BunnyCDN got nuked by firehol. RIP Emotes I guess....
https://otx.alienvault.com/indicator/ip/185.59.220.198 AS60068
Any attempt into whitelisting your boxes?
what
the fuck
@molten viper im curious what setup do you have that has a outgoing firewall on your http requests?
are u mirroring our cdn or smth
unfortunately they are not our boxes to whitelist
we are currently using bunny in order to lower our cloudflare watermark
we have a 600TB commit on cf
but we are currently exceeding it by 400TB
usign 1PB of bandwidth
so bunny is currently elevating our over usage
Skynet for Merlin Fork an Asus routers
I never had issues before, the reason i realized was the outgoing filtering, but it would have been blocked incoming at the latest then anyway
7tv python library?
it makes the app usage impossible, i get broken picture file icons. basically anyone that querries firehol in their ACL will have limited functionality.
it shouldn't be a problem right now as we are currently not routing to bunny
I can verify that as currently all assets get loaded.
this might pose an issue if BunnyCDN gets an even worse rep and AV suppliers might change their view on them, I reenabled the extension yet and get no additional counters towards cnd.7tv.app
we were only going through bunnycdn to offload excess bandwidth, right now the cdn is serving from OVH
slowly moving towards a more baremetal approach since that completely removes variable bandwidth cost
I understand that this is a business decision using certain CDN providers for load sharing. Maybe tracking your delivery chain reputation will help you make valuable decisions better when you are growing
Thank you and your team for clarification on this topic tho
i'm not entirely sure i understand what this implies, i had a look at what firehol is and it appears to be a simple blocklist tool
so i don't fully understand if that's a false positive or such, i mean, cdn providers host malware all the time
it's nothing new. discord itself is one of the biggest malware hosters
just something that happens if anyone can upload whatever on your network.
I won't elaborate on this one cause it is simply a scalability issue, weather you want your service 24/7 available. I just pointed out that maybe Bunny even tho a cheaper option to load balance with might hurt your growth. The worst Bunny rep gets you might not be able to serve in peak hours when other AV solutions simply pick up on Bunny as well.
well, yeah, i think we made it clear there are no plans to keep using bunny long term
exactly, and I am glad you even responded on that.
however you are the only person who had such an issue, so it's quite specific, but either way the goal is to move towards a fully custom solution
cloud providers just charge way too much for bandwidth it's basically theft
I might be the an edge case using you but then again old ppl don't get younger
since our coverage currently only encompasses EU & NA it's possible some regions will hit bunnycdn still, but once we finish moving the contents of the cdn it will likely just fall back to cloudflare, within a few days
content wont deliver on its own and seeing residential bandwidth growth and accessibility to content this easily. Even at smaller scale hitting 1PB is massiv
the bulk of bandwidth comes from these two regions so that's where we are interested in saving
can anyone help me with this i got no idea what im doing 
nvm chatGPT solved it for me i love ai 

is the 7tv websocket way too slow ? i get the chatterino message 5-10 min after i added the emote
seems to be running fine
hmm then my internet is crap
hi, im trying to query emotes and I can only support either GIF or JPEG (telegram api only supports those two), I know I can query formats with gql but I'm getting a Rate Limit Reached error with this query:
{emotes(query:"pepeW"){items{id, name, host{files(formats: GIF){name, format},url}}}}
if I query with AVIF it works. This is odd
ok I made it work by adding a limit
{emotes(query:"pepeW", limit: 10){items{id, name, host{files(formats: GIF){name, format},url}}}}
but I still don't think that's how 429s should work
unfortunately sometimes there's no GIF. I might have to add a workaround to convert from webp to gif. Bit annoying but =/
When you query emote, there's a properly called animated
If animated is true, add .gif to the end of the host url, if not then add .png (don't forget to specify the image size)
7tv processor also do gif and png processing when an emote is uploaded, so no need to do it yourself
oh that's amazing! Thanks for the help!
Tho there is no jpeg support, only png for static images
yeah turns out telegram's docs say it supports only jpeg but you can still send it png and it'll work haha
So you are making a telegram sticker app?
I'm making a search thing kinda like @GIF
I already supported BTTV and twitch global emotes
but I wanted 7tv support
👍
I might remove bttv altogether since 7tv is the new (and better tbh) shit


Does the gif need to be in some specific aspect ratio?
If so u might actually need to process the emotes
nah telegram doesn't care
Ah i c
working well 😄

websocket offline ?




how can I get all 7tv emotes of a channel?
get... as a download, for your own channel, for a discord server?
Notice this is in #developers
(It’s not a normie question like that)
sorry, overlooked the channel
Out of curiosity, would this be the right "point" to get that data from?
https://7tv.io/v3/users/twitch/68168183 (68168183 = twitch user ID)
idk probably. lol
(I am not a developer
)
and how can you add emotes to other channels (where you are an editor)?
Does the streamer have an emote set??
what is an emote set? (never worked with the 7tv api)
Oh. nvm i don't know the api
By "emotes from a channel"
Do you mean the emotes in the active emote set? Or emotes made by that channel?
These are emote sets
It allows streamers to switch between different set of emotes without having to enable and disable emotes one by one
That said, you can get the emotes from the emote set from request: https://7tv.io/v3/emote-sets/<emote set id>
If you want to get the emotes made by a channel, you can use the gql to query them with GetUserOwnedEmotes
For reference: https://github.com/SevenTV/Website/blob/5ec8ea0c06141024bdd440159dd0890fee5754a2/src/apollo/query/user.query.ts#L176
@azure cape
its your long lost alt

can only EU sub to 7tv?
No, I'm american and I can sub
it just displays the price in euros or whatever
but it'll automatically convert when you actually go to pay

What is the deal with the "gross mishandling" by Mozilla? What did Mozzarella fuck up this time?
they "reviewed" the update that Anatole pushed. only they didn't review it... they reviewed a completely different extensions code, then marked 7tv for deletion

To be honest I was expecting 7TV Beta/Nightly to just evolve into the Stable branch to get as many people as possible on it, then release another Nightly again as a separate extension.
should I get a new feature in a working state before making a PR? (I mean yes this is common sense, but might be easier to ask questions if it's made visible)
ok idk what I'm doing wrong, but I just followed the steps in README and loaded the unpacked extension folder dist. Did yarn start to run the dev server in background and navigating to twitch I see no 7tv (nightly is also disabled)
this is just a clone of the repo (no changes)
firefox or chrome?
dev env only works on chrome
because firefox prevents loading from the hmr server
brave but basically chrome
also I noticed all the dev urls are pointing to localhost when I don't have any of the gql on my computer, should I just use the prod urls?
nothing I see here indicates an issue, the index.html brings up the onboarding page correctly 
did you make sure you built everything first?
like the worker scripts
before starting vite
yep did make deps
site.ts failed to load 
also
I wonder if brave built in blocking is too agressive
make sure that your vite isnt running in https mode
oh it probably is too
just like firefox
alright, the only thing that doesn't seem to work is animated avatars, which I'll figure out later
why is github ci so aids

time to rebase all of the PRs
https://github.com/SevenTV/Extension/pull/462 please mereg
me trying to decipher the code base 
+3 -3
i figured out how to run the extension
expect more prs like this
im closing them all before anatole even sees them
You mad? 
log.error("<EventAPI>", "Resume failed, manually reconfiguring..."); what do I do with this error?
This is what I’d be doing too 
If I had time
👀
yeah
very based
im making this with haxe lol
i'm sorry for your loss
the only part that sucks is dealing with the websocket responses because dynamic json 
what event would i subscribe to to get user badge/paint changes?
do i just have to subscribe to each user individually?
oh you need to use eventsub for that
is there any documentation for that?
you subscribe to the cosmetic events
for a channel
and receive cosmetic updates when users type
for their badges, paints, and personal emotes
oh i didnt realize eventsub meant eventapi lol
wait, so if i subscribe to cosmetic.update with object_id=<7tv id of streamer>, ill get updates for badges, paints, and personal emotes of the users that send messages in that channels chat?
yes
ok cool
you'll also need to subscribe to entitlement events as well
the cosmetic events only tell you what data a cosmetic contains, you'll get a create event pushing relevant data to you
entitlement events tell you what users have those cosmetics
cosmetics = paints, emote_sets = personal emotes, entitlements = badges etc
The struct for channel events isn't with object id
It's uh
ctx=channel
id=twitch id
I think
eventapi so dank nobody can remember
Need to document cosmetics impl
It works basically same as twitch eventsub in terms of subbing structure
should I clone EventAPI and run locally to get dev Extension working correctly?
idk for whatever reason the cosmetics are not being applied correctly when I run the extension in dev mode
you'd need to run everything else as well
which is a massive pita
unless your willing to setup docker containers
or some other form of container
standalone is possible but you'd have to set alot of shit up and its just annoying to do really
redis and mongo are not fond of being forced to run portably
instead of as services
https://github.com/SevenTV/Extension/blob/57b8312db5080abc7b23d3ad6dd969864cf4f3fb/src/worker/worker.http.ts#L155-L164
so i should use {"ctx": "channel", "platform": "TWITCH", "id": "<channel id>"} as the condition, and use it to subscribe to entitlement.*, cosmetic.*, and emote_set.*, and that will give me all events related to badges, paints, and personal emotes. is that right?
what id is the channel id? twitch id? 7tv id? username?
just try things until it works 
that's called programming
cum id
wait so i dont even need to query https://api.7tv.app/v2/badges to get paints now, itll just send cosmetic.create when someone sends a messages with a new paint that hasnt been seen yet?
thats cool
id assume the same is true for badges
yep
you should prefer using the eventapi over the v2 badges endpoint, actually
it's outdated af
i just copied what jchat did lmao

yep
don't actually use the v2 api at all
its very expensive
ye
why does the extension use the v2 api? (or at least have a reference to it?)
so theres a way to do global emotes with the eventapi too?
legacy
v3 only pushes cosmetics for users sending messages from a v3 enabled client
so while the v3 extension was in beta the legacy end point still needed to be fetched
so users who were typing from other clients could still have cosmetics shown to v3 users
I mean, theres nothing special for globals
you can always just subscribe to the actual set like any other
fetching /v3/emote-sets/global always gives you the global set
and also the id of the global set
which you can use to subscribe to in the eventapi
although its not really neccissary
globals arent really expected to change often
Hello. I just followed the readme, ran make deps and yarn start, and add the dist directory as a temporary extension to the Firefox, but it seems not working and threw an error.
I tried to replace chrome with browser, and it doesn't work.
@formal siren, it won't work on firefox
you need to use a chromium-based browser
for development
😢 ok
blame mozilla for having useless restrictions
Hi! Is there a way of getting emotes from the api without knowing the id? I've tried different variations of v3/emotes?name=<emote> and v3/emotes?query=<emote>, but I only get empty responses. Maybe I'm just being dumb, but I'd appericiate some help!
search is only accessible via GQL atm
Ah, ok. Am I still doing something wrong then? Sorry, completely new to GQL.
you need to make gql requests to the gql endpoint https://7tv.io/v3/gql
also query is the search term
its not in filter
filter is just extra options
should look something like this
you can also check the gql payloads in the site for reference
Nice, thank you guys 
@hasty kernel thoughts on this design mockup for the usercards?
I forgot some stuff
The gift sub button
and the options to report and block
Also the option to un-timeout
Ahh ok

vip unvip mod unmod ban unban shouldn't be seperate buttons
they should be inverse states
unvip if the user is vip'ed etc
also times being left aligned make them blend too much with the message contents below
they look like tabs, or status's instead of actions
Good idea
I'll fix that
While I 100% agree, I will say it’s kinda cool to have them as separate buttons. My pepega brain likes seeing both so it knows which one is which. When there’s only 1 button, it becomes a little more ambiguous whether or not someone is already a vip from the buttons alone
I feel like it could be made extremely readable and elegant by just including colors. Purple for the VIP toggle when enable, red when banned, green when modded etc., and leave it grayscale when the buttons are disabled.
I agree
was thinking colors might make that a bit more obveous
these mod/vip buttons would only show for the broadcaster though?
yeah
Also its missing the timeouts/bans/mod comments section
You could repurpose the mod/vip buttons as badges to show the person's status in the channel, even if the person in question is not a broadcaster/mod
Actual good idea
Colored for active and greyed out for not active
exactly
what about mod comment
I vote to not have them. They're cringe
they're only used to prevent innocent people from having a little fun.
If you dont have everything that the default user card has people are gonna complain
i disagree
as a mod the only thing I used mod comments for
was to correct mod actions
either by myself or other mods
The "ban" button should be an alias to /unbanall tbh
so they wouldn't reflect poorly if someone else looked at their logs
mod comment? how so?
or to explain bans too
Mod comments are useful especially when doing unban requests
disagree

bans without mod comments
are the ones you CANT unban
because you don't know why they were banned in the first place
well, that's not how xqc operates
and he's the only one I've watched do unban requests
I'm joking for most of that. ofc mod comments should be there
mod comment is useful for ban outside of your channel or even twitch
like crossbans, or banned from discord/community
Exactly
Everything that I said between these 2 messages is just tomfoolery
#developers message
#developers message

With the exception of my overall opinion that too many people are banned for innocent fun by soy mods 
that would be the mods' problem, and mod comment have nothing to do with it other than showing the mods are soy
How does it look like without the blur
Badges
adds more boxes

Badges would be a bit small, wouldn't they?
Will a banner be shown if there's one?
tbh banners are fucking ugly
Is this figma or did you already make it
figma yes
probably... but some people spend time for theirs and would be raging if it's not displayed at all
Figma balls

do we even have access to this shit
It’s useful
And if it’s gone people are gonna go apeshit
i mean yeah we have access to data on the entire website
hmm
yeah i'll take care of this
Second thought about banners: fuck them. Would prefer designs in the tier 2 sub which would be released monthly like paints 
👌
a bit better if i make the background opaque
on the mod action thing
oh oops
the more options button is floating
xd
See that little purple stripe under the “Messages”? I kinda like that. It makes it really easy to see which one is selected.
The style in the mock-up isn’t BAD but I think it’s safe to say that it’s less obvious which one is selected
There are only minor contrast changes. Gray text becomes white and the background becomes a bit lighter
Keeping a bright colored stripe could help
Maybe the color of the stripe could be customizable via a site-wide 7tv theme/color setting 
There are lots of places to change the twitch purple color
then people can make it lime green
I think its way too big
the actual important part
the messsages
takes up not even a third
of the height
Just use the channel accent color
This looks great but I think that little purple outline should be 2 pixels wide
1 pixel stuff can sometimes look like unintentional misalignment
How would you shrink it? The profile pic takes up a lot of space. Maybe some more stuff could be moved to the empty area to the right of it
But also compacting everything as much as possible can reduce readability
Makes sense
also
the tabs should be only on hover
if the mouse isnt over the tab region expand that space for the messages
also the top buttons shouldn't eat space
the close button shouldn't be on its own line
Put ban inside 5 dropdown menus that people have to navigate perfectly or else it closes and they have to start over
usernames should linebreak if they are too long
also perhaps the statuses could be put on the same line
or section around the avatar
on hover they expand downwards
with the full text
otherwise just show the relevant part
like length
The timeouts could be a slider rather than a list
Ban should 100% have a “are you sure? Confirmation”
To encourage timeouts more than bans
I’ve never banned anyone so I don’t have experience lol
just add an option to edit the timeout lengths
Custom timeout lengths in seconds so mods can use their codes
Imagine a bot in chat that would allow like 1 year timeouts
It would have to auto unban the person
Kkona
There’s just too big of a jump between 14 days and infinity days
Yep that's really good
treuks just got up: for sen E 💤 (1m, 41s ago)
Oops
treuks, Your AFK status has been resumed.
You truck trucks into bed with the power of a V8 engine
👉🛏🚚
What does intl in ChatUser interface mean? There is no any comment...
if the display name is cjk or other permitted non latin characters
ie. if the display name is not just a capitalized version of the login
used to determine if we should show the username after i18n names
like your discord name
for most names intl is false and there is no need to show the login, as the display name is the same text, but with capitalization
got it
Is there any way to know if an user is a moderator? I want to make mods' messages highlighted.
if they have a mod badge
iirc theres an irc tag for it too, but idk if 7tv exposes that at all
Hi 7TV Staff, I've been working on an extension that loads 7TV emotes on Kick.com, Is it allowed for me to publish it on Chrome for free? Any feature related to your API is completely for free on the extension, And I am down to share my source code with you guys if that's what you like.
Currently the extension is under review and not published yet, So I'd like to know if any of the API endpoints I used contradicts with any sort of policy or Terms Of Service related to 7TV.
Also, am I allowed to use your logo and merge it with Kick's logo? If not I am more than ready to change the logo, And https://7tv.app/ will be listed in the Extension's description.

Although I want to be clear, I do have a paid feature, Which does not relate to 7TV at all, It's color names, Exclusive to Patreon users.
All the colors used are made by me and none of them relate to 7TV's colors
@rugged perch sorry im gonna have to say no, i would much rather you make a pull request to the official extension instead
No problem at all, Thank you for your response, I will take down the extension as soon as it get's approved. I don't really want to make a PR and edit everything on it there etc... It'll be a lot of work and I don't have that much time in my hands these days, But thank you very much for your response, I will be removing any 7TV feature from the extension.
we are already in contact with the developers at kick regarding 7TV on their website any way.
Awesome! Can't wait!, Good luck, And I'm sorry for bothering.

what a helpful error popup
vscode git stuff is aids sometimes
sooo my first PR on the extension was just merged... according to twitter there is a funny dev badge for that, how do I acquite it?
Have to ask mr anatole for that
changes 10 characters wants badge
yeah I know xD but that's what it says on twitter
twitter
the contributor badge is given for substantial contributions, i.e if you made an entire feature
minor tweaks or non-major fixes don't count unless you've made a lot of them over time
it's just a basic standard to avoid junk PRs just to badge-farm
ofc small fixes are totally fine and if you were to regularly contribute that way you'd end up getting it
gotta admit tho, that's why I made the PR myself and didn't just open an issue about that bug
Contributor Badge [
] progress:
[▓▒▒▒▒▒▒▒▒▒] 10% complete
the standard isnt that high though, ive already given it to 2 people for a single PR
this one https://github.com/SevenTV/Extension/pull/449 and this one https://github.com/SevenTV/Extension/pull/466
I got this for submitting zero PRs
449 makes sense to me, but if a single copy icon gets it then I guess the bar must be really low xD
zemy is also working on other prs though
just give it to me for my 1 line contribution already 
no
it can be considered a substantial feature, it serves a function useful to users, is clearly visible, etc
why changing a few class names isnt quite on par (for an edge-case, incompatibility with a niche extension) i think is clear 
obv... I totally get you
when you first spoke about substantial contribution I expected a little bit more than a single button tho xD
I'll just check in every now and then when I find the time and contribute a bit, although I'm more used to svelte, vue doesn't seem soooo much different
vue 3 and svelte have similar flow yeah
the former just has more tooling and community support around it which is why i went with vue
what are the "basic steps" for creating a new module in the extension? i tried just copying the autoclaim module and changing stuff, but it doesnt like the id i pass to declareModule
you need to declare the ID in @/types/tw.module.d.ts @alpine echo
how can one "inject" a template into the dom that renders itself again even if the page gets re-rendered
you would need to use our react utils
to actually hook and interact with twitch's internal react instance
i have to warn you, this will spontaneously make you hate react as a framework forever
I've never used react and already hate it 
nice you'll hate it even more then 
it's only when you realize how it works under the hood that you truly feel a sense of despair 
alright so I'll follow the avatar module like I've been doing for reference 
what am I looking at 
avatars are not the thing to follow
those are a special case
because react has two component types
one of which is almost impossible to hook
how would i listen for the page changing? like when you go to the homepage or another channel, it doesnt reload the entire page so stuff that happens once on page load doesnt happen again
May I ask what you are trying to implement?
Chances are, if you are having to manually account for page changes, you're likely not going about this the right way
auto pausing the player on the frontpage
https://github.com/LeotomasMC/Extension/blob/master/src/site/twitch.tv/modules/autopause/AutopauseModule.vue this is currently what im doing. it works if you just load the frontpage, but if you navigate to the front page from another page it doesnt
(i am aware that it currently autopauses on normal channel pages too lol)
https://github.com/SevenTV/Extension/pull/486 How do you think about it?
not a reviewer, but personally I would default the feature to off
would the correct way to be do what the autoclaim module does with the useComponentHook stuff, but on whatever the stream player is?
i tried doing that first and couldnt figure it out, but i was probably just doing it wrong
I would assume so in some sense, but I'm having a hard time understanding what a component is. I assume its some react stuff I'm not familiar with
ok, getting somewhere
only problem is I cannot get the domNodes from any of these instances
@hasty kernel can we autofocus the chat input after somebody copies the message?
its supposed to be this element(s) idk 
Hey, is it possible to utilize the Twitch API and setup an automation where an application auto records the VOD when the specified twitch stream goes live, then deploy that recording into a folder within an AWS S3 Bucket? Or utilize the API so that the live VOD is directly transferred to the S3 bucket?
Check when stream is/isnt live: https://dev.twitch.tv/docs/api/reference/#get-streams or;
https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#streamonline & https://dev.twitch.tv/docs/eventsub/eventsub-subscription-types/#streamoffline
Get VOD: https://dev.twitch.tv/docs/api/reference/#get-videos
dunno much about deploying the vod to the S3 bucket tho
May anyone review this? I just want to know what to change and if it can be merged. owo
Is it worth being a 7tv mod? Or is contributor better 
unpaid jannies 
I submitted one for shits and giggles last time, but never heard back 
#general message
Unfortunately :x
will this cause issues
if it removes whatever element 7tv takes over for chat, itll probably just "silently" fail to do that, and if its just an overlay, itll probably just be under it
or if its inside whatever element 7tv takes over it might just do that and show chat anyways lol

in any of the cases this is bad
i dont see how its that bad
who uses 7tv on twitch while logged out
at least in a way that this would cause issues
obviously if your like switching accounts that makes sense, but your just going to sign in again anyways
what even happens if your signed out lmao
like do settings work at all?
its 7tv that makes usernames in stream titles be clickable, right?
im trying to find where it does that
No it was twitch that added that
oh 
wait it even does the colors on its own 💀
cant believe twitch added something good
rip banned users
@misty olive how do u like this change
its fucking retarded
imma say it rn
im just using chatterino
i havent gotten this change yet so
most definitely
true
i could see that annoying when im testing logged out behavior as well
probably the most retarded change twitch has ever done
not really
there's also the removal of the ability to look at the userlist without using webchat
huge
it 99% won't matter, we don't query the DOM
any help with this
(if not thats ok too)
Yea apparently I need to brush up on how the hooks work and all too
I don’t suppose there’s a good article to read
the only thing that seems to be at all similar to what im trying to do is the settings menu button, which just does what im doing already, but doesnt suffer from the page navigation issue because its part of the header
Looks like one of these player control instances might be what you’re looking for?
what actually is that screenshot of
A list of names of the hooked instances that were identified using some parentSelector (either .live-time or #live-channel-stream-info or something like that)
I was just using a predicate of (n) => true 
read the JSDoc on the utility functions
it explains virtually everything you need to know
parent selector is an optimization option
criteria is what matters
having a criteria which is too vague is catastrophic
parent selector just limits initial first trees to scan
but when testing its not really neccissary to use
Ok, starting to piece things together now. I’m going to experiment a bit more tonight
I think this was my issue and why I wasn’t seeing the right hooks. I’ll not include a selector for testing, then narrow down
so i got it to work about as well as it was before with a component hook like this ```js
useComponentHook<Twitch.StreamVideoPlayerComponent>(
{
//parentSelector: ".video-ref",
predicate: (el) => el.props && el.props.play,
},
{
hooks: {
render(inst, cur) {
console.log(inst);
console.log(cur);
var props = (cur as ReactExtended.ReactRuntimeElement).props ?? {};
console.log(props);
props.onPause();
return cur;
}
}
}
)``` but it still only works on the initial page load, even though it is outputting to the console when navigating pages
ok now im like really confused
i did this js predicate: (el) => { if (el.props && el.props.play) { console.log(el); return true; } return false }, and it prints out 7 objects
but it only hooks 1 thing
why is that?
other than commenting out props.onPause(), everything else is the same
oh wait the render hook is only run sometimes
i guess that makes sense
render only runs sometimes
and hooks are also representative of a class
not an instance
you'll probably want to iterate hook.instances
in a template
to instantiate vue nodes for every react instance
then you can use onMount and onUnmount to do lifecycle based actions
without having to worry about the true lifecycle
ie. if it was rendered before we hooked, or rendered again for some reason after
also render is the wrong function for this as well
update and mount are likely more what you're looking for
well all i want to do is pause the video player as soon as possible
is the linter workflow fail (https://github.com/SevenTV/Extension/actions/runs/4691567372/jobs/8316201738?pr=504) an issue I should fix? as far as I can tell other code uses the same formatting I used
https://twitter.com/Dexerto/status/1646556780111986691 bruhhhhhhhhhhhhhhhhhhhhh
this is making me fucking lose braincells
the tweet, the braindead comments
we literally knew this since the first day of release of kick

I'm bored so I want to build my own chat client for twitch.
Does anyone has documentation/guide on how to implement 7tv in an app?

but just go to the github org







👍 you should sub NOW





snitching bot
i mean there’s probably hundreds
for PR