#developers

1 messages · Page 1 of 1 (latest)

quick ibex
solemn widget
hasty kernel
bronze glacier
solemn widget
#

tokienizer Okayeg

pseudo rivet
#

tolkeinizer

quick ibex
frank spoke
solemn widget
#

nice

#

i have succesfully yakbaited someone into fixing the spelling

quick ibex
#

Cant leave it Smadge

solemn widget
quick ibex
#

We talked about making it so you can click 7tv emotes and get a mini dashboard like popup right? @hasty kernel

hasty kernel
#

yes

pseudo rivet
#

copy from the trainwrecks project for that

#

UiDraggable.vue

hasty kernel
#

yeee

#

can u give it to him @pseudo rivet

pseudo rivet
#

we have vueuse in the extension right

quick ibex
#

Do we not just inject it into twitch's thing?

pseudo rivet
#

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

pulsar iris
#

Hello yes I am dev

solemn widget
#

Stealing your own code from someone else's project

hasty kernel
#

pretty sure vueuse is in yea

#

if not it should be since we used thignsl ike onClickOutside() and whatnot

pseudo rivet
#

yea

#

it uses useDraggable from vueuse too

#

which cleans up the code a lot, compared to the equivalent pointer tracking in UiScrollable

paper plover
#

forsen

pseudo rivet
#

nesrof

crystal girder
vagrant lion
#

new general Pogpega

novel rivet
#

I'm a developer

#

Give me contributor

quick spear
#

No me

#

See i have the developer badge

#

Surely that means im really a dev Clueless

strange jacinth
proven wasp
solemn widget
lethal spoke
strange socket
sharp robin
quick ibex
#

Why cant i write a single commit without a typo* LULE

frank spoke
#

good one lol

pseudo rivet
#

make a few commits and then review

#

after youve rested your eyes

quick ibex
pseudo rivet
#

you can always go back

#

before you push

pseudo rivet
#

PagMan new twitch asset alert

#

except

#

I dont actually remember what it was before

muted hill
#

I believe

#

that's the "no icon" icon for vods, right?

solemn widget
#

used to be the ghost, no?

pseudo rivet
#

thought it was the ghost

#

but I wasnt sure

paper token
#

Nintendo would sue them for this icon

#

fr fr

ashen smelt
#

Is the new ExtensionV3 going to eventually include the complete web chat replacement?

pseudo rivet
#

It already does

paper plover
#

Suggestion: add the links to the API and EventAPI repository in 7tv.io

#

Or all other github repositories under 7tv

pseudo rivet
#

ApuArt but just go to the github org

#

they're all there

paper plover
#

ye but im lazE
and that might be useful for those who stumbled upon 7tv.io

paper plover
zinc gyro
paper plover
#

Round ??? of React vs Vue

zinc gyro
#

i'm not starting that

#

just wanna say solid and svelte been killing it

paper plover
#

what's an Ember JS

zinc gyro
#

idk

paper plover
#

if it 17% im 17%

zinc gyro
#

sound like the next big thing

paper plover
#

😂 👌 🔥 Lit

#

that's a litty framework

zinc gyro
#

lit is google's shit i think

hasty kernel
# zinc gyro

this is developer satisfaction, not market share btw

zinc gyro
#

am aware

hasty kernel
#

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

zinc gyro
#

i suppose

hasty kernel
#

never heard of solid though

#

is it another react-based thing

zinc gyro
#

no

#

it uses jsx but its not react

hasty kernel
#

oh right its this one

#

looks like react, does everything like react, but at least it's not react

zinc gyro
#

no virtual-dom

hasty kernel
#

ah

#

kind of a W then

zinc gyro
#

uses "signals" so it doesn't re-render everything

#

performant, ssr ready, something something buzzwords

hasty kernel
#

it looks lightly convoluted

#

could use some syntactic sugars to help it i guess

#

looks raw

#

but i guess it's ok

zinc gyro
#

idk it seems nice

#

might try it

hasty kernel
#

raw DOM interactions

#

not a huge fan

zinc gyro
#

their version of next/link i'd assume but its just A

#

oh this just feels like Remix

pseudo rivet
#

i think didnt they

#

before the react refactor in like 2018

paper plover
#

I like the format of <random word> JS

#

ForsenJS

zinc gyro
solemn widget
pseudo rivet
#

zero runtime stylesheets

#

as if

#

runtime stylesheets

#

were ever a thing

#

in any framework

#

solving a problem that doesnt exist ✅

solemn widget
#

there is

#

actually

pseudo rivet
#

ok but who uses it

#

why

solemn widget
#

who uses it

pseudo rivet
#

-> make problem -> make new software to fix problem that didnt exist

pseudo rivet
#

that prebuilds

#

just like the other one

solemn widget
#

ok

#

idk then

pseudo rivet
#

seems like you can run it at runtime but its a processor

#

so it just spits out data

zinc gyro
#

yeah but

#

tailwind

pseudo rivet
#

cumwind

paper plover
#

Thoughts on tailwind?

zinc gyro
#

angular in 2023

pseudo rivet
#

FeelsDonkMan didnt even consider that this wasnt a thing

narrow belfry
#

OMEGALUL wtf

paper token
#

OMEGALUL so bad

dreamy geyser
#
<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 FeelsDankMan

quick ibex
#

This is from the website?

#

I believe t("emote.context.open_in_new_tab") is just to get the i18n

dreamy geyser
#
//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
quick ibex
quick ibex
#

Yes, that should sync with crowdin

dreamy geyser
#

Also there should be a modal component right ? Its just to let a user know it has been copied

zinc gyro
orchid tide
#

did y'all stop creating chatterino7 installers with 7.4.0?

south flare
#

its more like we got lazy

#

just download the zip

#

and extract it

#

and it will work the same way

orchid tide
#

lmao

#

yeah

south flare
#

its aids to make the installer

#

and it doesnt do anything

orchid tide
#

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

dreamy geyser
#

how do I get the emotes btw ?

paper token
#

yes

solemn widget
#

yes

paper plover
paper plover
hasty kernel
#

It recovers all missed dispatches and restores subscriptions in the event the connection drops

pseudo rivet
#

Nice

#

Pag eventapi is actually good now??? Wtf pog????

hasty kernel
paper plover
#

FDM how are trending emotes ordered?
(channel count) ÷ (days since created) ?

frank spoke
#

I'd guess it also takes the size of a channel into account. Would make sense at least.

dreamy geyser
#

when will my request get merged

misty olive
#

Tomfoolery never

misty olive
#

holy...

#

devs get on this shit

dreamy geyser
#

already done , just waiting for my PR to get merged

misty olive
hasty kernel
#

im requesting changes NOW forsenMaxLevel

misty olive
dreamy geyser
#

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

misty olive
#

Yes

hasty kernel
dreamy geyser
#

is there like a tooltip component too I can use ?

misty olive
#

ong it should be like a popup and a automatic close

dreamy geyser
#

I want to add toaster libarary for this

#

but feels overkill

#

and out of style maybe

hasty kernel
#

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

dreamy geyser
#

so you are suggesting I remove it , fair enough

#

lemme add alert to it Kappa

#

anyway , lemme change some stuff , prob take few mins

dreamy geyser
#

@hasty kernel pushed it , I think my lint fucked up and added some extra space in the styling

#

should I remove them ?

#

pushed again

dreamy geyser
#

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

dreamy geyser
dreamy geyser
#

@hasty kernel does it need any more changes ? I would love to see it live soon peepoShi

dreamy geyser
#

when can I see my feature live ?

sharp robin
#

who are you talking to? LULE

visual wedge
dreamy geyser
paper token
dreamy geyser
paper token
#

sittin on the side

#

of the road

paper plover
#

FDM 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

dreamy geyser
#

Wish i could help Sadeg

dreamy geyser
#

Wow, my feature got merged, thanks Mr Anatole PagStick

#

And @quick ibex for helping me set up the project 5Head

pseudo rivet
#

first head

distant lantern
#

i really like this 3rd-party thing

#

does mv3 version need contributors?

quick ibex
distant lantern
quick ibex
#

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.

distant lantern
#

Okay I see

#

I want to submit a fix for the settings menu being overlayed by the Twitch page elements

pseudo rivet
#

yeah that should be a very easy fix

distant lantern
#

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

pseudo rivet
#

its just miss specificity z-index

#

you can also solve this with a stacking context

#

although thats a harder solution

quick ibex
#

The settings menu is completely redesigned btw

distant lantern
#

ah I see

quick ibex
#

With support for narrow chat

distant lantern
#

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

quick ibex
#

Can probably just change that z-index yea

distant lantern
#

though removing the z-index=1 from the #seventv-root seems to work

quick ibex
#

@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?

hasty kernel
#

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

distant lantern
#

Right now, when zoomed in, some UI elements come on top of the 7TV settings

hasty kernel
#

Ah make it like 999 or smth

#

Should be fine

distant lantern
#

TR

#

PR ApuApproved

pseudo rivet
#

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

distant lantern
arctic torrent
#

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?

pearl ore
arctic torrent
#

Actually an update to this:

#

I know it's possible since this website it works fine: https://www.liveviewsync.com/

#

I have no idea what the difference could be

pearl ore
#

Probably because it just iframe's twitch/twitch chat?

arctic torrent
#

Well tthat's what my website does too

pearl ore
pearl ore
arctic torrent
#

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?

quick ibex
#

I think we need to add a permission for the extension to run in all frames

#

For it to be allowed in iframes

pseudo rivet
#

A permission that we cannot add

#

Remember that we are locked in

quick ibex
#

Is it possible to add as optional?

pseudo rivet
#

We can not add non optional perms

#

Where would we req tho

quick ibex
#

Settings

pearl ore
#

iframe perm should be optional anyway

quick ibex
#

Easy to implement since anatole made a composable to request permissions

dreamy geyser
#

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

paper plover
#

FDM is there a gql query rate limit?

#

i want to try changing to random paint every minute
but dont wanna do something stupid accidentally

hot quest
#

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 Hmm
https://7tv.io/v3/emotes?query=hmm

#

I can query /gql but since there is an API I wanted to use it

dreamy geyser
#

anybody can tell me if its possible to set session storage in mongodb with nuxt ? I dont see anything on google Sadge

hasty kernel
hot quest
dreamy geyser
#

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

hasty kernel
#

do you mean for the extension?

dreamy geyser
hasty kernel
#

it's a planned feature yea

dreamy geyser
#

i made an extension that would copy messages , so i was wondering that should be possible

hasty kernel
#

we already use custom right-click contexts on the website, so yes

dreamy geyser
#

can you give some pointers , maybe I can try to help

hasty kernel
#

wdym by extension script?

dreamy geyser
#

like the script from the extension , sorry if my words are making less sense FeelsDankMan

dreamy geyser
#

is the emote maker publisher banned or why is it blank?

quick spear
dreamy geyser
silent pike
#

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 🙂

paper plover
#

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

orchid tide
#

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?

pseudo rivet
orchid tide
frozen meadow
#

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

paper plover
#

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"
}
frozen meadow
paper plover
#

what language do you program in?

frozen meadow
#

my current project is coded in python

paper plover
#

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

#

then it's just:

emote_list = [i.name for i in json_obj.emotes]
frozen meadow
#

ill try it out

#

thank you for the help Okayge

paper plover
molten viper
south flare
#

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

south flare
#

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

molten viper
#

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

south flare
#

i see

#

is it a big issue @molten viper

#

are u unable to see emotes?

paper plover
#

Thinkge 7tv python library?

molten viper
hasty kernel
#

it shouldn't be a problem right now as we are currently not routing to bunny

molten viper
#

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

hasty kernel
#

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

molten viper
#

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

hasty kernel
#

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.

molten viper
#

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.

hasty kernel
#

well, yeah, i think we made it clear there are no plans to keep using bunny long term

molten viper
#

exactly, and I am glad you even responded on that.

hasty kernel
#

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

molten viper
#

I might be the an edge case using you but then again old ppl don't get younger

hasty kernel
#

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

molten viper
#

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

hasty kernel
#

the bulk of bandwidth comes from these two regions so that's where we are interested in saving

frozen meadow
frozen meadow
#

nvm chatGPT solved it for me i love ai BATCHEST

delicate roost
halcyon seal
#

is the 7tv websocket way too slow ? i get the chatterino message 5-10 min after i added the emote

halcyon seal
#

hmm then my internet is crap

haughty marlin
#

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 =/

paper plover
haughty marlin
paper plover
#

Tho there is no jpeg support, only png for static images

haughty marlin
#

yeah turns out telegram's docs say it supports only jpeg but you can still send it png and it'll work haha

paper plover
#

So you are making a telegram sticker app?

haughty marlin
#

I'm making a search thing kinda like @GIF

#

I already supported BTTV and twitch global emotes

#

but I wanted 7tv support

paper plover
#

7ime👍

haughty marlin
#

I might remove bttv altogether since 7tv is the new (and better tbh) shit

paper plover
#

Does the gif need to be in some specific aspect ratio?

#

If so u might actually need to process the emotes

haughty marlin
#

nah telegram doesn't care

paper plover
#

Ah i c

haughty marlin
#

working well 😄

paper plover
halcyon seal
#

websocket offline ?

dreamy geyser
#

just saw this

#

7tv nightly*

pseudo rivet
#

thats just the new extra sub badge

#

you get to really stand out

visual wedge
dreamy geyser
hexed abyss
primal cobalt
gleaming kayak
#

how can I get all 7tv emotes of a channel?

frank spoke
paper token
#

(It’s not a normie question like that)

frank spoke
frank spoke
paper token
#

(I am not a developer happE)

gleaming kayak
#

and how can you add emotes to other channels (where you are an editor)?

safe oriole
#

Does the streamer have an emote set??

gleaming kayak
#

what is an emote set? (never worked with the 7tv api)

safe oriole
#

Oh. nvm i don't know the api

paper plover
paper plover
pseudo rivet
#

@azure cape PagStick its your long lost alt

opaque ledge
#

can only EU sub to 7tv?

paper token
#

it just displays the price in euros or whatever

#

but it'll automatically convert when you actually go to pay

paper plover
#

Im in hong kong and i can also sub

#

SUBge 👍 you should sub NOW

paper token
forest jewel
#

What is the deal with the "gross mishandling" by Mozilla? What did Mozzarella fuck up this time?

visual wedge
forest jewel
#

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.

frosty bronze
#

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)

pseudo rivet
#

just mark it as a draft

#

then it'll be known that its not finished

frosty bronze
#

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)

pseudo rivet
#

dev env only works on chrome

#

because firefox prevents loading from the hmr server

frosty bronze
#

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?

pseudo rivet
#

yes

#

you can change the .env.dev

#

just dont commit it (obveously)

frosty bronze
#

nothing I see here indicates an issue, the index.html brings up the onboarding page correctly BRUHMM

pseudo rivet
#

like the worker scripts

#

before starting vite

frosty bronze
#

yep did make deps

pseudo rivet
#

check your console logs on twitch

#

to see if its even loading the content script

frosty bronze
#

site.ts failed to load monkaHmm

pseudo rivet
#

also

frosty bronze
#

I wonder if brave built in blocking is too agressive

pseudo rivet
#

make sure that your vite isnt running in https mode

#

oh it probably is too

#

just like firefox

frosty bronze
#

oh yeah that was definitely it

frosty bronze
#

alright, the only thing that doesn't seem to work is animated avatars, which I'll figure out later

hasty kernel
#

NotLikeThis why is github ci so aids

solemn widget
hasty kernel
#

trucks im using ur branch

#

as a bed for trial and error

#

dont mind me

solemn widget
#

ah

#

that's alright then

#

because it doesn't change code

hasty kernel
#

ok idk

#

this is fine i guess

#

so fucking annoying

hasty kernel
#

KKonaW time to rebase all of the PRs

solemn widget
#

At developers

#

tf 🔔

frosty bronze
#

me trying to decipher the code base Clueless

solemn widget
#

tf +3 -3

pseudo rivet
#

lil bro changes one color in one spot

#

to be 0.001% different

solemn widget
#

it makes it 10 thousand times more readable

rotund pivot
#

i figured out how to run the extension kek expect more prs like this

pseudo rivet
#

im closing them all before anatole even sees them

solemn widget
#

You mad? tf

frosty bronze
#

log.error("<EventAPI>", "Resume failed, manually reconfiguring..."); what do I do with this error?

paper token
#

If I had time

alpine echo
solemn widget
#

holy

#

you're a haxe enjoyer

alpine echo
#

yeah

solemn widget
#

very based

alpine echo
#

im making this with haxe lol

solemn widget
#

i'm sorry for your loss

alpine echo
#

the only part that sucks is dealing with the websocket responses because dynamic json Stare

solemn widget
#

but yeah have fun

#

haxe is an interesting language

#

for sure

alpine echo
#

what event would i subscribe to to get user badge/paint changes?

#

do i just have to subscribe to each user individually?

solemn widget
#

oh you need to use eventsub for that

alpine echo
#

is there any documentation for that?

pseudo rivet
#

you subscribe to the cosmetic events

#

for a channel

#

and receive cosmetic updates when users type

#

for their badges, paints, and personal emotes

alpine echo
#

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?

pseudo rivet
#

yes

alpine echo
#

ok cool

pseudo rivet
#

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

solemn widget
#

asd

#

thought it was called eventsub

#

because of twitch

hasty kernel
#

The struct for channel events isn't with object id

#

It's uh
ctx=channel
id=twitch id

#

I think

pseudo rivet
#

LULE eventapi so dank nobody can remember

hasty kernel
#

Need to document cosmetics impl

#

It works basically same as twitch eventsub in terms of subbing structure

frosty bronze
#

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

pseudo rivet
#

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

alpine echo
#

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?

GitHub

The Web Extension for 7TV, bringing new features, emotes, vanity and performance to Twitch & YouTube - Extension/worker.http.ts at 57b8312db5080abc7b23d3ad6dd969864cf4f3fb · SevenTV/Extension

#

what id is the channel id? twitch id? 7tv id? username?

solemn widget
#

channel id

#

lol

#

uhhh

#

probably the twitch id yeah

alpine echo
#

just try things until it works eyey

solemn widget
#

that's called programming

hasty kernel
#

yes you have it right

#

id would be twitch id in this case

pseudo rivet
#

cum id

alpine echo
#

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

solemn widget
#

yep

#

you should prefer using the eventapi over the v2 badges endpoint, actually

#

it's outdated af

alpine echo
#

i just copied what jchat did lmao

solemn widget
pseudo rivet
#

don't actually use the v2 api at all

#

its very expensive

solemn widget
#

ye

frosty bronze
#

why does the extension use the v2 api? (or at least have a reference to it?)

alpine echo
#

so theres a way to do global emotes with the eventapi too?

pseudo rivet
#

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

pseudo rivet
#

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

formal siren
#

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.

hasty kernel
#

@formal siren, it won't work on firefox

#

you need to use a chromium-based browser

#

for development

formal siren
#

😢 ok

hasty kernel
#

blame mozilla for having useless restrictions

snow ember
#

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!

hasty kernel
#

search is only accessible via GQL atm

snow ember
#

Ah, ok. Am I still doing something wrong then? Sorry, completely new to GQL.

pseudo rivet
#

also query is the search term

#

its not in filter

#

filter is just extra options

paper plover
#

you can also check the gql payloads in the site for reference

snow ember
#

Nice, thank you guys PagStick

solemn widget
#

@hasty kernel thoughts on this design mockup for the usercards?

quick spear
#

I forgot some stuff

#

The gift sub button

#

and the options to report and block

#

Also the option to un-timeout

solemn widget
#

you untimeout by pressing the unban button

#

afaik

quick spear
#

Ahh ok

solemn widget
#

kkonaw

quick spear
pseudo rivet
#

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

paper token
# pseudo rivet they should be inverse states

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.

pseudo rivet
#

was thinking colors might make that a bit more obveous

frosty bronze
#

these mod/vip buttons would only show for the broadcaster though?

pseudo rivet
#

yeah

quick spear
#

Also its missing the timeouts/bans/mod comments section

paper token
#

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

quick spear
#

Colored for active and greyed out for not active

paper token
#

exactly

paper plover
#

what about mod comment

paper token
#

I vote to not have them. They're cringe

#

they're only used to prevent innocent people from having a little fun.

quick spear
#

If you dont have everything that the default user card has people are gonna complain

pseudo rivet
#

i disagree

#

as a mod the only thing I used mod comments for

#

was to correct mod actions

#

either by myself or other mods

paper token
#

The "ban" button should be an alias to /unbanall tbh

pseudo rivet
#

so they wouldn't reflect poorly if someone else looked at their logs

pseudo rivet
#

or to explain bans too

quick spear
#

Mod comments are useful especially when doing unban requests

paper token
#

useful for keeping people BANNED

#

(lame)

pseudo rivet
#

disagree

paper plover
pseudo rivet
#

bans without mod comments

#

are the ones you CANT unban

#

because you don't know why they were banned in the first place

paper token
#

well, that's not how xqc operates

pseudo rivet
#

unban requests on stream are different

#

streamers have pepega brain

paper token
#

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

paper plover
#

mod comment is useful for ban outside of your channel or even twitch
like crossbans, or banned from discord/community

quick spear
#

Exactly

paper token
paper plover
paper token
#

With the exception of my overall opinion that too many people are banned for innocent fun by soy mods Tomfoolery

paper plover
#

that would be the mods' problem, and mod comment have nothing to do with it other than showing the mods are soy

rotund pivot
solemn widget
rotund pivot
#

I think there are too many unnecessary boxes

#

makes it very cluttered

misty olive
rotund pivot
#

Badges

misty olive
#

oh i see

#

very nice

solemn widget
rotund pivot
frank spoke
#

Badges would be a bit small, wouldn't they?
Will a banner be shown if there's one?

solemn widget
#

tbh banners are fucking ugly

misty olive
rotund pivot
#

Is this figma or did you already make it

solemn widget
#

figma yes

frank spoke
#

probably... but some people spend time for theirs and would be raging if it's not displayed at all

rotund pivot
#

Figma balls

misty olive
solemn widget
#

how actual designers work

#

how i work

rotund pivot
#

kek do we even have access to this shit

#

It’s useful

#

And if it’s gone people are gonna go apeshit

solemn widget
#

i mean yeah we have access to data on the entire website

#

hmm

#

yeah i'll take care of this

frank spoke
#

Second thought about banners: fuck them. Would prefer designs in the tier 2 sub which would be released monthly like paints kek

solemn widget
#

kkona

misty olive
#

KKonaSmile 👌

solemn widget
#

a bit better if i make the background opaque

#

on the mod action thing

#

oh oops

#

the more options button is floating

#

xd

rotund pivot
#

share the file

#

I wanna check some things tomorrow

misty olive
#

looks very nice trucks

#

KKonaSmile 🚚

hasty kernel
#

Okayeg loks nais

#

thats roughly what i had in mind

paper token
#

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 kek

#

There are lots of places to change the twitch purple color

#

kek then people can make it lime green

paper plover
pseudo rivet
#

I think its way too big

#

the actual important part

#

the messsages

#

takes up not even a third

#

of the height

rotund pivot
#

Just use the channel accent color

paper token
# paper plover

This looks great but I think that little purple outline should be 2 pixels wide

#

1 pixel stuff can sometimes look like unintentional misalignment

paper token
#

But also compacting everything as much as possible can reduce readability

pseudo rivet
#

actions should be hidden by default

#

collapsed

paper token
#

Makes sense

pseudo rivet
#

also

#

the tabs should be only on hover

#

if the mouse isnt over the tab region expand that space for the messages

paper token
#

Ban should be hidden more

#

2 week timeout is more than plenty in a lot of cases

pseudo rivet
#

also the top buttons shouldn't eat space

#

the close button shouldn't be on its own line

paper token
#

Put ban inside 5 dropdown menus that people have to navigate perfectly or else it closes and they have to start over

pseudo rivet
#

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

paper plover
rotund pivot
#

it has to be simpler than this

#

And honestly I’d just disable the blur for this

paper token
#

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

rotund pivot
#

it’s the same system chatterino uses

#

And I think it’s good as it is

paper token
#

I’ve never banned anyone so I don’t have experience lol

rotund pivot
#

just add an option to edit the timeout lengths

paper token
#

Custom timeout lengths in seconds so mods can use their codes

solemn widget
#

Let's have it be like the android alarm clock

paper token
#

Imagine a bot in chat that would allow like 1 year timeouts

#

It would have to auto unban the person

solemn widget
#

Kkona

paper token
#

There’s just too big of a jump between 14 days and infinity days

misty olive
#

that looks really good

solemn widget
#

Yep that's really good

mortal fossilBOT
#

treuks just got up: for sen E 💤 (1m, 41s ago)

solemn widget
#

Oops

misty olive
#

go back to sleep

solemn widget
#

FeelsWeirdMan snitching bot

#

$rafk

mortal fossilBOT
#

treuks, Your AFK status has been resumed.

misty olive
#

get your ass to bed ReallyMad

#

yeah

#

good

#

$truck trucks

mortal fossilBOT
#

You truck trucks into bed with the power of a V8 engine KKonaW 👉🛏🚚

formal siren
#

What does intl in ChatUser interface mean? There is no any comment...

pseudo rivet
#

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

formal siren
#

got it

#

Is there any way to know if an user is a moderator? I want to make mods' messages highlighted.

alpine echo
#

if they have a mod badge

#

iirc theres an irc tag for it too, but idk if 7tv exposes that at all

formal siren
#

I think I found it

formal siren
#

wait, it seems like the properties of the viewer(?) actually

#

done

rugged perch
#

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.

paper plover
rugged perch
#

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

hasty kernel
#

@rugged perch sorry im gonna have to say no, i would much rather you make a pull request to the official extension instead

rugged perch
#

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.

hasty kernel
#

we are already in contact with the developers at kick regarding 7TV on their website any way.

rugged perch
#

Awesome! Can't wait!, Good luck, And I'm sorry for bothering.

alpine echo
#

what a helpful error popup

frosty bronze
#

vscode git stuff is aids sometimes

foggy karma
#

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?

quick spear
#

Have to ask mr anatole for that

paper token
#

You won't get a dev badge for a single PR being accepted

#

contributor badge, maybe

pseudo rivet
#

kek changes 10 characters wants badge

foggy karma
#

yeah I know xD but that's what it says on twitter

paper token
#

BatChesting twitter

hasty kernel
#

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

foggy karma
#

gotta admit tho, that's why I made the PR myself and didn't just open an issue about that bug

paper token
#

Contributor Badge [ 7TV ] progress:
[▓▒▒▒▒▒▒▒▒▒] 10% complete

hasty kernel
#

the standard isnt that high though, ive already given it to 2 people for a single PR

pseudo rivet
#

i mean

#

fuck

#

anson has it

hasty kernel
paper token
foggy karma
#

449 makes sense to me, but if a single copy icon gets it then I guess the bar must be really low xD

pseudo rivet
#

zemy is also working on other prs though

foggy karma
#

just give it to me for my 1 line contribution already Kapp

pseudo rivet
#

Madge no

hasty kernel
#

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 LULE

foggy karma
#

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

hasty kernel
#

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

alpine echo
#

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

hasty kernel
#

you need to declare the ID in @/types/tw.module.d.ts @alpine echo

frosty bronze
#

how can one "inject" a template into the dom that renders itself again even if the page gets re-rendered

hasty kernel
#

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

frosty bronze
#

I've never used react and already hate it LULE

hasty kernel
#

nice you'll hate it even more then happE

#

it's only when you realize how it works under the hood that you truly feel a sense of despair kek

frosty bronze
#

alright so I'll follow the avatar module like I've been doing for reference ok

frosty bronze
#

what am I looking at NotLikeDucky

pseudo rivet
#

those are a special case

#

because react has two component types

#

one of which is almost impossible to hook

alpine echo
#

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

pseudo rivet
#

Chances are, if you are having to manually account for page changes, you're likely not going about this the right way

alpine echo
#

auto pausing the player on the frontpage

#

(i am aware that it currently autopauses on normal channel pages too lol)

formal siren
frosty bronze
#

not a reviewer, but personally I would default the feature to off

alpine echo
#

i tried doing that first and couldnt figure it out, but i was probably just doing it wrong

frosty bronze
#

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

frosty bronze
#

ok, getting somewhere

frosty bronze
#

only problem is I cannot get the domNodes from any of these instances

dreamy geyser
#

@hasty kernel can we autofocus the chat input after somebody copies the message?

#

its supposed to be this element(s) idk FeelsDankMan

orchid tide
#

are update websockets still being denied connections?

#

cuz of being over the limits

scarlet iris
#

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?

formal siren
frosty bronze
#

Is it worth being a 7tv mod? Or is contributor better Clueless

solemn widget
#

unpaid jannies LULW

frosty bronze
#

I submitted one for shits and giggles last time, but never heard back Shruge

frosty bronze
#

makes sense YEPge i mean there’s probably hundreds

#

Anyway off topic now

#

I peepoSit for PR

solemn widget
#

will this cause issues

alpine echo
#

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

solemn widget
#

yeah

#

that's the thing

cold kernel
solemn widget
#

in any of the cases this is bad

alpine echo
#

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

solemn widget
#

well who knows

#

tbh

alpine echo
#

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

visual wedge
alpine echo
#

oh kekw

#

wait it even does the colors on its own 💀

#

cant believe twitch added something good

hasty kernel
#

@misty olive how do u like this change

misty olive
#

its fucking retarded

#

imma say it rn

#

im just using chatterino

#

i havent gotten this change yet so

hasty kernel
#

i guess we should add an option to hide it

#

it seems obnoxious af

misty olive
#

most definitely

solemn widget
#

true

hasty kernel
#

i could see that annoying when im testing logged out behavior as well

misty olive
#

probably the most retarded change twitch has ever done

solemn widget
#

not really

misty olive
#

i legit pinged melon to make a ublock script to just remove that shit

solemn widget
#

there's also the removal of the ability to look at the userlist without using webchat

misty olive
#

wym?

solemn widget
misty olive
#

hmm

#

would the devs work on a alternative?

#

or they cant really?

solemn widget
#

we can

#

work on an alternative

misty olive
#

huge

hasty kernel
alpine echo
frosty bronze
#

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

alpine echo
#

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

frosty bronze
alpine echo
#

what actually is that screenshot of

frosty bronze
#

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 LULE

hasty kernel
#

read the JSDoc on the utility functions

#

it explains virtually everything you need to know

pseudo rivet
#

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

frosty bronze
#

Ok, starting to piece things together now. I’m going to experiment a bit more tonight

frosty bronze
alpine echo
#

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

alpine echo
#

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

pseudo rivet
#

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

alpine echo
#

well all i want to do is pause the video player as soon as possible

brisk quiver
solemn widget
#

this is making me fucking lose braincells

#

the tweet, the braindead comments

#

we literally knew this since the first day of release of kick

exotic sigil
gray sandal
#

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?