#developers

1 messages · Page 4 of 1

pseudo rivet
#

LULE

paper plover
#

cosmetic merge LULE

pseudo rivet
#

idk if the site has been built since then then idk

#

id assume it has though

boreal grove
#

got a simple question. When someone with a 7tv identity ( paint / badge ) first messages in a chatroom, does it not always come up in the event api??? im only seeming to get when they use an emote. I'm probably missing something but

pseudo rivet
#

only if they post from a 7tv enabled client

#

clients create/maintain a "presence" in a chatroom when the user sends messages

#

which is what the service uses to determine when to send relevant data

#

if a client doesnt produce this

#

then it wont send any info

boreal grove
#

hmm i'm probably doing somethign wrong then. cause im only getting it when they posting an emote even with the 7tv client enabled

pseudo rivet
#

so like if someone talks from chatty or some other client without 7tv

#

or even on the site without 7tv installed

boreal grove
#

i'll figure it out, just making sure im not missing something

pseudo rivet
#

it wont be creating presences, and you wont get pushed their cosmetics

paper plover
#

FDM so if i first message in the native twitch app, my cosmetic will never show up for others until i chat on a client with 7tv

pseudo rivet
#

yes exactly that

paper plover
feral merlin
pseudo rivet
#

The code quality is unfortunately not really acceptable for usage into the extension

#

its extremely likely to break

#

with even the most minor changes to the site

misty olive
pseudo rivet
#

I recommend doing some sort of actual query, just raw accessing massive chains of children is not only very unsafe, but also very unreliable

#

not to mention nearly unreadable for most people, its not very clear what that is actually doing

feral merlin
solemn widget
#

@patent wing hey where can i find the read-only pusher websocket for a kick chat?

#

figured you'd probably know the most about this stuff

patent wing
#

Kick pusher id: eb1d5f283081a78b932c
Their cluster is us2
Once connected to the pusher websocket, you must subscribe to a chatroom by subscribing to chatrooms.{chatroomId}.v2
Then bind to App\\Events\\ChatMessageEvent for messages

#

To get chatroomId you must fetch this api https://kick.com/api/v2/channels/{username}

#

with username being the kick channel username

#

If you use pusher's pusher-js javascript package it would look something like this in typescript/javascript.

import Pusher from "pusher-js";

const chatroomId = 668; // xQc Chatroom

const pusher = new Pusher("eb1d5f283081a78b932c", {
      cluster: "us2"
});

const chat = pusher.subscribe(`chatrooms.${chatroomId}.v2`);

chat.bind("App\\Events\\ChatMessageEvent", (message: Kick.ChatMessage) => {
      // Message Recieve
});

chat.bind("App\\Events\\MessageDeletedEvent", (message: Kick.ChatMessageDelete) => {
      // Message Delete
});

chat.bind("App\\Events\\UserBannedEvent", (message: Kick.UserBanned) => {
      // User Ban
});

There are more events you can listen to, but these three are what you probably need.

Here are the typescript types if needed:

interface ChatMessageDelete {
    id: string;
    message: {
      id: string;
    };
  }

interface UserBanned {
  id: string;
  user: {
    id: number;
    username: string;
    slug: string;
  };
  banned_by: {
    id: number;
    username: string;
    slug: string;
  };
  expires_at: string;
}

interface ChatMessage {
  id: string;
  chatroom_id: number;
  content: string;
  type: string;
  created_at: string;
  sender: {
    id: number;
    username: string;
    slug: string;
    identity: {
      color: string;
      badges: Badge[];
    };
  };
}

interface Badge {
  type: string;
  text: string;
  count: number;
}
frosty bronze
#

I created a pure websocket version, but yeah it’s not as clean. Also it disconnects after 1-2 hours of no activity (which I can’t tell if it’s me or the server)

#

I stopped working on it because without a chat api it’s not super useful at the moment

solemn widget
#

ah right there's a pusher java client

patent wing
#

Also, the kick api has cloudflare protection so you need to bypass it by doing some tls handshake spoofing or by using a headless browser like puppeteer.

#

Hopefully whatever your doing doesnt require the api because it is a big pain in the ass if its not through browser requests like that is the reason why my chat overlay can fetch the api without getting blocked by cloudflare.

solemn widget
#

did you try to solve that with your uhh desktop kick app

patent wing
#

my kick client run on webview which is basiclly a browser lol it handles all the tls handshakes

solemn widget
#

i mean yeah

#

you had done it with egui before though

patent wing
#

nope, that was the main problem. I was using the chatroom id as a constant. I never made api requests

solemn widget
#

ahh ok ok

#

makes sense

#

are there any timelines for when the public api releases

frosty bronze
#

soon ™️

patent wing
#

^

#

they have been saying in a couple weeks for months

frosty bronze
#

I think they're only going to open it up to a handle of apps

solemn widget
#

in the next few weeks.

#

lol that was like a month ago by now wasn't it

patent wing
#

yep hehe

frosty bronze
patent wing
#

👀 very early work in progress

frosty bronze
#

tauri nice

#

does the pusher js/ts client not disconnect after long periods? It might handle reconnection itself

patent wing
#

yeah i belive pusher-js handles reconnects

solemn widget
#

😎

paper token
#

name it "Kock"

#

like Kick + Talk

#

KikTok

patent wing
paper token
#

Kickerino is already taken

#

UI looks nicer than chatterino tbh

rotund pivot
#

kok

#

Or kicksen

patent wing
#

its not exclusive to kick chats so something more unique would be needed

#

the ui is very very basic currently

#

a lot of work is to come

rotund pivot
paper plover
paper token
#

yep

frosty bronze
#

Dank Kok

frosty bronze
paper token
#

I would LOVE if that were fixed

azure cape
#

@hasty kernel @pseudo rivet

solemn widget
#

shitty little kick app i'm working on

analog oxide
#

Does anyone have code to change colors in 7tv when writing a post? Hmm

rotund pivot
#

what

#

oh nvm

analog oxide
#

forget 😊

zinc gyro
brave token
#

oh it's cross platform

#

that's kinda sick

tacit flame
#

can anybody explain how to build install on arch Danki I am a complete bot when it comes to building packages that do not exist on the AUR (edit: sorry, that don't have a buildpkg file to be exact), actually chatterino7 does exist on the AUR but its outdated, I figured asking in the discord the software sort of "belongs to" was the best idea, if you have any guides or guidance?

pseudo rivet
#

it will still build a package for latest version

#

the version in the pkgbuild is just the last time the scripts had to be updated

#

it will automatically make a package with whatever the latest version is when you build the package

tacit flame
#

thanks!

opal ledge
#

How can I tell if an emote is supposed to be combined with other emotes (like RainTime)? It looks like in https://7tv.io/v3/emote-sets/global for those emotes there is "flags":1 and in data there is "flags":256 (whereas for other emotes both are 0). Which one should I use?

paper token
#

I was using the chatterino2-bin AUR package and just changing the URL to the 7tv linux binary

#

until it stopped being built

#

but it looks like it's being built again, maybe

novel otter
#

Is it possible for 7tv to be converted to a userscript? If so how does one do this?

Some background I am trying to use 7TV in Safari on my Mac... (yes, I know you guys think I am gross) just like safari the most out of all the browsers I've used.

pseudo rivet
#

it is possible, but it has not been done yet

#

it would require some slight changes to the code but for the most part the new extension has been designed to allow for this

#

it just hasn't been gotten around to yet

#

if your looking for something you can do right now yourself, you may beable to get safari to load the webextension the way it is now with no changes

#

you'd just need to have the proper apple only tools to beable to create the right packages to allow for this

#

which none of our developers have, and why there isnt already a safari distribution

#

im not sure if there are user oriented tools that allow you to do this easily

#

but i would not be suprised if there are, its worth looking for sure if you're down to fiddle with things

paper token
#

last I checked, Safari is the most power efficient browser on Macs

paper token
#

I don't think they do

#

but Safari leverages the tech in the system that it can expect to be there

#

hardware rendering and stuff

novel otter
#

I have gotten 7tv working by converting the chrome extension into a safari extension app running some commands with xcode but the damn application expires since. Since its a "beta" app. If we can find a way to get it onto to the app store I have no problem helping with updates. I have gotten it working on iOS and iPadOS as well in the past.

#

Safari is just well optimized for Apple devices "simple" as that lmao

pseudo rivet
#

so inherantly its going to be more efficiant

paper token
#

assume the dev teams are competent

#

which they are not always

pseudo rivet
#

its not ideal, but I don't think distributing on apple's ecosystem is something that is viable for us at the moment

#

but if you did write such a script, im sure people would be glad to use it if you made it public

frosty bronze
#

what is the benefit of a userscript over the extension? portability?

pseudo rivet
#

pretty much

#

the current extension was designed to allow for distributing as a userscript at some point

#

the core code doesn't really care that it was injected as part of an extension

novel otter
pseudo rivet
#

except for some minor stuff

frosty bronze
pseudo rivet
#

le epic troll

novel otter
#

and just like that I have it working... fully functional

#

I might have found a way to "distribute" the extension but I will have to look more into it.

frosty bronze
#

ah I didn't realize the behavior of the chat boxes were different between twitch and kick

#

need to investigate the up arrow behavior

#

yeah up/down arrow behavior is wonky too

frosty bronze
#

Here's a shortlist of what I found thus far:

  • When colon active, pressing Enter to select emote will send cursor to next line
  • (assuming there is a history buffer, i.e. you've sent previous messages) Pressing Down arrow when the input is empty will return the first message on the history instead of clearing the input
  • Index ordering of the history when pressing Up Arrow will skip the first message in the history and go to second message
lethal jackal
#

Finally I don't need to care about destroying my 16th PR bajj with a private repo HYPERS

frosty bronze
#

so the stale PRs that were closed... should I make a new PR to revive them?

carmine zephyr
#

Is there a way to query the api to get the global emotes?

#

for people who are looking for this in the future, it's just /emote-sets/global

drifting timber
#

Hey can anyone help? How to get 7tv kick emotes of a Kick.com channel? I tried:

https://7tv.io/v3/users/{kickuser.id}```
#

ayo ok got it now after a search, sorry
/v3/users/{connection.name}/{connection.id}

#

I suppose this is the new endpoint? I am still using https://api.7tv.app/v2/users/${twitch.channelId}/emotes for twitch 7tv emotes. Is it soon to be discontinued or why are there two endpoints now? I tried https://api.7tv.app/v3/users/kick/kickid and it also works but takes much longer to load

crude crag
#

Hey everyone. I hope someone could help me out with this.

I'm developing a Chrome extension that includes injecting a button to the twitch page. Now I'm stumbling upon the issue that 7tv seems to remove the button after a couple of second after the page onload. Anyone that has the capability to find what is causing this?

pseudo rivet
#

its not 7tv thats causing this, this is just twitch rerendering the component

#

which may be being triggered by some other 7tv change, but if this is the case this will happen any time twitch does this

#

not just alongside 7tv

#

ex. your button will probably also dissapear if the channel changes titles or etc

#

anything that would cause a rerender will cause your manually inserted elements to drop

#

patching the actual components is quite a bit trickier

#

and evenmoreso for the component you've chosen to change, since I believe its a functional component

#

which makes it virtually unpatchable unless you find some other referential backdoor

#

that you can use in some way

hasty kernel
lethal jackal
#

any recommended IRC message parser package?

#

I always create my own with limited parsing capabilities. Just wondered because seeing that most tools creates their own parsers instead of using a parser package.

solemn widget
#

if you want just pure parsing and nothing else

#

if you want to connect directly to twitch without any fuckery, you can try using this (not sure if it'll work for your usecase though)

crude crag
#

@pseudo rivet Appreciate the response. I'll look further into this. The reason behind me blaming 7tv is that disabling the add-on prevented this issue, but I might have been too quick with the blame then.

unborn plinth
#

~~Does 7TV have a standalone JS/CDN? I've got a standalone Electron Twitch client and would definitely enjoy 7tv in it ~~i should have just scrolled up a bit and read the channel history, nevermind 🙂

noble meteor
#

so how do you change value of chat input? im currently trying to figure it out

pseudo rivet
#

the extension is just interfacing with twitch's built in system

#

which exposes mutation via a .apply method

noble meteor
#

@pseudo rivet I'm guessing there's no documentation on this?

pseudo rivet
#

its mostly all reverse engineered

#

so no

#

however you may find some usefulness by looking at the library twitch uses for the chat rendering

#

slate

#

you'll still have to reverse engineer out the specific methods and actions you can apply

#

but atleast you'll have a starting point

#

may not list all possible operations

#

but its a head start

noble meteor
#

i guess there is a lot of code to dig through

#

thank you!

vague laurel
#

If you are interested, here is my source code

quick ibex
quick ibex
#

I believe the autocompleteinputref has a setInput function

#

In your case you could alternatively just send a chat message directly instead of using the input box

vague laurel
quick ibex
#

Dosnt look like we have it listed on our twitch.d.ts tho~
nvm we do

vague laurel
#

could you explain to me the autocompleteinputref im not familiar with it

quick ibex
#
export type ChatAutocompleteComponent = ReactExtended.WritableComponent<
        {
            channelID: string;
            channelLogin: string;
            clearModifierTray: () => void;
            clearTray: () => void;
            clearReplyToList: () => void;
            closeCard: () => void;
            closeKeyboardReplyTray: () => void;
            currentUserDisplayName: string;
            currentUserID: string;
            currentUserLogin: string;
            emotes: TwitchEmoteSet[];
            isCurrentUserEditor: boolean;
            isCurrentUserModerator: boolean;
            isCurrentUserStaff: boolean;
            messageBufferAPI: any;
            onFocus: (v: any) => any;
            onKeyDown: (v: any) => any;
            onMatch: (e: any, t: any, i: any) => any;
            onReset: (v: any) => any;
            onValueUpdate: (v: any) => any;
            setInputValue: (v: any) => any;
            setModifierTray: (v: any) => any;
            setReplyToList: (v: any) => any;
            setTray: (v?: ChatTray) => any;
            showModerationIcons: boolean;
            showTimestamps: boolean;
            tray: any;
            useHighContrastColors: boolean;
        },
        {
            value: string;
        }
    > & {
        focus: () => void;
        selectionStart: number;
        setSelectionRange: (start: number, end: number) => void;
        componentRef: Twitch.ChatInputComponent;
        getMatches: (v: string, ...args: []) => object[];
        providers: ChatAutocompleteProvider[];
        onEditableValueUpdate: (value: string, sendOnUpdate: boolean | undefined) => void;
        getValue: () => string;
        setValue: (v: string) => void;
    };
#

Some of these could be typed better

#

But i setValue is what twitch uses when it wants to replace what is in the input box

#

So just invoke setValue instead of onChange unless there is something im missing

vague laurel
#

interesting, i will maybe try it out

quick ibex
#

I think your ChatInput type is our ChatAutocompleteComponent

vague laurel
#

I think it is Twitch.ChatInputComponent

#

because of this function in my src:

    getChatInputReact(): ChatInput {
        return this.getAutocompleteHandler()?.componentRef;
    }
#

but thanks for the insight, right now my patch solution works as i need so i dont feel like changing the implementation unless there is something I'm missing

quick ibex
#

Do you not block out normal typing in the input box after inserting a pasta?

vague laurel
#

no

#

because there are 2 ways to input the copy pasta

#

I can either press Enter or click on the copypasta in the widget

#

if i press Enter it will be sent automatically

#

but if i click it will only be insterted into the chat input

#

after enter

#

after clicking

quick ibex
#

nice

noble meteor
rancid tulip
#

what language is 7tv written with? c++?

#

java

#

html css

pseudo rivet
#

golang and typescript

misty olive
rancid tulip
#

gofur

patent wing
#

java WutFace

daring quail
#

wait, so there are documented endpoints that don't actually work, and undocumented ways to get that info?

paper plover
#

devs are working on a rework of the endpoint
as of right now, we uses gql for most of the query instead of the rest api documented in 7tv.io since it has limited usage
but after the rework, the gql endpoint will not be used anymore and the rest api will get more functionality

daring quail
#

right, but why even bother including them in the docs if they don't work and keep pointing people there? Took a bunch of testing on my end and then digging through random messages to find one that finally told me they don't work

pseudo rivet
#

as of right now only the website uses gql

#

which is why it will be going away once the website is rewritten

#

no other client, internal or third party uses gql

#

and it is not supported for third party use

#

generally

charred rover
#

Hi All ... am new here but would like to understand how you/7TV protect content to contain malware when uploaded? If I am not wrong even anonymous could participate uploading content, correct? Thank you

hasty kernel
#

Elaborate

#

You need an account to upload emotes we don't allow anonymous uploads

solemn widget
#

all emotes pass through transcoding at a point

#

anything not important gets stripped away

#

even if you could upload as anonymous you wouldn't be able to put anything in it

paper plover
#

What kind of malware you can put in images anyways

pseudo rivet
#

none

#

unless your on a computer from 1995

#

(which wouldnt support modern image formats anyways)

#

(back when literally all data was trusted and buffer overruns were acceptable and also data was allowed to be executed by the cpu)

#

all you had to do was make the image overflow the buffer

#

and add a jump opcode

#

and you could execute anything

#

but it has not been like this for a very long time

#

it would be incredibly rare

#

a catastrophic failure of modern standards

#

like complete incompetence

quick ibex
# pseudo rivet none

A major exploit in libwebp was discovered last week, so any browser not updated recently is currently vunerable

paper plover
pseudo rivet
#

Either way though what I said above is still true

#

It's not RCE so it's not 'malware'

#

It could probably do serous damage on the site though

#

it would be much much harder to simoultaniously leverage this into code execution

#

and then on top of that a sandbox escape

tidal current
#

Is there any ETA for the gql api docs to come out?

topaz crown
#

I'm pretty sure they dont intend to put out docs since its meant for internal use, not public.

I believe i heard they are moving towards REST endpoints which will take over the gql ones somewhat soon, and gql will be dropped.

tidal current
#

peepoSad

paper plover
#

soon COPIUM

tidal current
paper plover
pseudo rivet
#

No GQL API's are officially supported for third party usage

#

and as stated above they will be dropped sometime in the near future

#

potentially without notice

topaz crown
pseudo rivet
#

however currently it is the only way to do mutations for a ex a bot or service

#

these applications are still not supported though, as there is no current mechanism to obtain a token for usage

random venture
#

Hey, was there any attempt at fixing https://github.com/SevenTV/Extension/issues/635 ?

I tried looking into it, but I can't seem to find the issue

At the moment I am using stylus to get the default scrollbar, but it's not ideal, thank you

GitHub

Is there an existing issue for this? I have searched the existing issues This issue exists in the latest nightly version I am using the latest nightly version What browsers are you seeing the probl...

lethal jackal
#

I am trying to dm @rancid tendon

frosty bronze
#

how’s the development of the new site going?

orchid tide
#

there's no api route to add emotes to a set, right?

topaz crown
#

there is, but its not officially supported and will be changed soon

orchid tide
paper plover
# orchid tide ah, i guess through the graphql api?

yes
you can check the gql requests in the developer console
but as mentioned, gql will not be publicly available and will move on to use REST api instead

so you can just do gql now for the lols, but note that it will not work after the system is updated

brave token
#

we probably will keep the gql api as is for now, but will move over to REST, and just no longer update the gql api until it breaks

#

so if you decide to play around with it, you'll have some time to move over to the upcoming rest api before it's removed

short sand
#

pajaDank Can't install deps with npm for the website

paper plover
#

problem with fontawesome package?

short sand
#

Yea actually

#

I tried relogging in to npm and doing that config delete and still issues

paper plover
#
        "@fortawesome/free-brands-svg-icons": "^6.2.1",
        "@fortawesome/free-regular-svg-icons": "^6.2.1",
        "@fortawesome/free-solid-svg-icons": "^6.2.1"
    },```
gotta change the packages to free ones since some icons are paid
#

and have to change some icons in the site as well

short sand
#

Ah shit okay I'll take a look, thanks for the info

paper plover
#

a bit pain in the ass to do
but im not paying for it LULE

short sand
#

Yea KEKW

paper plover
short sand
#

LULE That's more than I expected, okay thank you

short sand
#

TE_Aware CORS

short sand
#

Messing about and I'm not seeing how avatar_url is undefined within UserCard depending on the parent component/page.

I'm successfully retrieving the user data and specifically avatar_url whenever I'm on EmoteRoot or /users/. avatar_url is defined on render.

I'm successfully retrieving the user data but avatar_url is returning undefined whjenever I'm on EmoteCard or /emotes/. To clarify, the network call is successfully returning and the value for avatar_url is there, but whenever I try accessing it on render it's undefined

pseudo rivet
short sand
#

Why?

pseudo rivet
#

its not worth trying to mess with

#

its being completely replaced

short sand
#

Oh...

#

Well shit

#

Any ETA?

pseudo rivet
#

not quite sure but probably sometime within the following months

short sand
#

or rather are you all even accepting PRs now?

pseudo rivet
#

its not currently in a workable state

#

but development is happening at SevenTV/WebsiteNext

#

and SevenTV/WebComponents

short sand
#

PagChomp next still vue TE_LULE

#

To clarify I meant PRs for the current site not the refactored

pseudo rivet
#

uh I mean if they're working I don't see why they wouldnt be accepted

short sand
pseudo rivet
#

but Its probably not worth putting effort into

#

something that's going to be replaced

#

the codebase for the current site as im sure you've noticed

#

is not the cleanest

short sand
#

Meh I'm just working on QoLs

pseudo rivet
#

or the nicest to work with

short sand
#

I can't comment on it much, my gripe is with not being familiar with Vue moreso than the codebase

paper token
#

speaking of QoLs that shouldn't have effort put into due to the website being replaced in 2025, I've been working on a doc that contains some outstanding bugs that I would personally like to see fixed

#

either because they affect me personally or it's annoying a lot of users

paper token
#

updated this doc

solemn widget
#

ApuArt @pseudo rivet are you currently implementing ssr for web components?

pseudo rivet
#

I don't think its really applicable here

#

ssr is mostly a hack for when you need compatibility with non js agents

#

there aren't any benifits for agents that do support js (since the hydration step is computationally equivalent to if you just started from scratch)

#

and I think the vast majority of the user base are using modern browsers

#

for an emote platform that relies on js to run in the first place

#

the website isnt really static content either, I dont think ssr makes a whole lot of sense here

#

the webcomponents packages are being built to be consumed explicitly by the extension and the website

#

neither of which will be using SSR

#

SSR isn't really something that would be viable for us anyways

#

its massively server intensive

#

for very little benifit in our case

pseudo rivet
#

only for the client to then do the exact same thing again

#

but for it to do this it does have to run an entire virtual dom and javascript vm that gets spun up for each and every request

#

its very much a hack

#

imo, it doesn't really make sense in the current state of the web for 90% of usecases

#

because almost all of the usecases where ssr would actually be benificial

#

for example in the case of static content, universal/at build time pre-rendering is a much preferred option

#

but in our case almost all of our content is dynamic

solemn widget
#

I was just wondering what the hydrate part was in the webcomponents repo

pseudo rivet
#

ah

#

its for the API wrapper

#

all values the wrapper will return are hydrated

#

meaning all their prototypes match and are checked

#

an emote set will always contain actual emote objects

#

that can be used in other parts of the wrapper

#

or have methods

#

directly on them

solemn widget
#

Hmm yeah but is hydration the right term for this

pseudo rivet
#

barely

#

but its close enough

#

its not a type checker

#

its scope is explicitly limited to "hydrating" objects

#

for example an input object's children cant be mapped to other keys

#

its direct

#

.x on the input value can only affect .x on the output hydrated type

solemn widget
pseudo rivet
#

ish

#

not really though

#

it can be used to validate

#

but by actual emote objects I mean in this case actual classes

#

from json input to fully typed class output

#

this also lets us do things for the wrapper like allowing subscribing directly from objects

#

and allowing in place mutability

#

because all types have a runtime stable schema

solemn widget
pseudo rivet
#

yeah there are definately equivalents

solemn widget
#

Fdm

#

Yeah makes sense though

pseudo rivet
#

this fits our use cases though

#

and is extremely small

#

like 80% of all that junk

#

is just for typescript

#

the original implementation was like 100 lines

solemn widget
#

Was just wondering because I've heard that web components are pretty limited

#

In what you can do with them

pseudo rivet
#

the webcomponents package is also a bad name

#

ignore my names

#

they're not actually webcomponents

#

they're just components for the web

#

horrible name

solemn widget
pseudo rivet
#

webcomponents is a standard

#

but we're not actually using webcomponents

#

most of the "components" are vue

solemn widget
#

Fdm

pseudo rivet
#

the packages in /webcomponents dont have to be used on the web either

#

they're just npm packages

#

they're named that because all of our uses of them will be on the web

#

in the webextension and website

paper token
#

internet pieces

solemn widget
paper token
#

first party Chatsen style app

#

with integrated twitch and kick viewing

#

tf with adblocker

solemn widget
pseudo rivet
#

anyways

#

@solemn widget hopefully something like this better illustrates why its more of a "hydrator"

#

than a validator

#

even though it also inherantly does validation

#

notice how each member becomes fully instantiated

#

(this is also just for illustrative purposes, that new() at the bottom would throw immediately and wouldn't actually produce a valid emoteset object)

solemn widget
#

Disgusting oop js

#

Do you actually need the typeofs for the generics?

pseudo rivet
#

no

#

that's the typescript part

#

without it the code is functionally identical at runtime

#

but you wont get intelisense

solemn widget
pseudo rivet
#

its weird js/ts dankness

#

typeof Class in typescript means that classes' constructor

#

which is also its static side

#

classes in typescript occupy the same symbol with two distinct values

#

the type sharing the name of the class refers to its instantiated type

#

saying "typeof" forces typescript to use the type of the VALUE under that symbol

#

which is itself the constructor function

solemn widget
#

Oh I see that makes sense yeah

pseudo rivet
#

which also contains the static side of the class

#

so by adding that <typeof ThisClass> you're telling typescript

#

that this is the final extension

#

and the values defined by this classes' static fields

#

is the one the constructor will ultimately read

#

saying as const allows the compiler to know for certain the values will never change

#

allowing the dank inference stuff in hydrator.d.ts to work

#

a schema like { type: "array", children: "boolean" } produces the typescript type boolean[]

#

but you can also do recursion

#

the children field of a schema can accept any other schema

#

you can also do conditional parsing

#

a schema like { type: "array", children: current => typeof current == "string" : "string" : "number" }

#

will be typed as Array<string | number>

#

and at runtime will run the transformer for the unparsed value

#

transformers run before hydration

#

so this value [1, "2", 3] would be accepted

solemn widget
#

What is this, fucking eventapi?

pseudo rivet
#

yes

#

this will also integrate with the eventapi wrapper

#

for example if you want to have live updates for an emote in a set

#

you can just say eventapi.subscribe(set.emotes[4])

#

and only that emote will receive updates

#

in place

#

if you dont want inplace updates

#

you can do .clone() first

solemn widget
#

In place as in mutating?

pseudo rivet
#

yeah

#

mutability is not implemented in what is pushed

#

but it will be a seperate base class

#

not all hydratorobjects are mutable ones

solemn widget
#

Ehhhhhhhhhhhhh fdm

pseudo rivet
#

it will likely be HydratorObject -> APIObject -> APIObjectMutable

#

mutable classes having their own methods for generating eventapi subscription conditions

solemn widget
#

I'd rather have the ability to just set a callback which would execute on update

pseudo rivet
#

well yeah thats also how it will work

#

you can just subscribe to a condition manually

#

this is just a helper

#

so places in the website can use composable's and never care about the actual implementation details

solemn widget
#

Yeah that makes sense

pseudo rivet
#

the emote set page doesn't care at all about how to subscribe to emotes

solemn widget
#

It would have "no logic"

pseudo rivet
#

or how to mutate their data

solemn widget
#

Would the emote set be the current active emote set? What if the user changes the emote set to an entirely different one?

pseudo rivet
#

it depends how you fetch the data

#

some of this makes sense only for the website side

solemn widget
#

Yeah the mutating part for example

pseudo rivet
#

in the case of that example

#

where the user changes emote sets

#

the emote set data would not change

#

because an emoteset class represents a specific object

#

but the UserConnection object

#

would reflect that change

#

its emote_set field would be replaced with a new EmoteSet object

#

this is already how the eventapi represents these changes iirc anyways

solemn widget
#

Yeah that makes sense I think

pseudo rivet
#

i also intend to allow passing a callback that receives the changemap

#

when subscribing to objects

#

this is where you'd gather application specific information

#

like figuring out what message to display to the user

#

after a mutation

#

the hydrator implementation doesnt care about this type of application specific usage

#

it just generalizes the mutation and subscription of certain types

#

to be more useful as a "wrapper"

solemn widget
#

Mhm yeag

vagrant marsh
plush sandal
#

would you guys want me to update 7tv.io ui it’s so bad rn

paper plover
#

Wait until the API update drops

plush sandal
#

will do

ashen smelt
#

can easily tell by the speed of the emote

topaz crown
#

ive had this happen and after restarting chatterino it was the right version, idk if its the same issue

ashen smelt
#

i see it in both chatterino and the browser chat

topaz crown
#

i just added it and the slow one shows in native chat, fast one in chatterino

ashen smelt
#

interesting

#

you're using the 7tv extension or do you have 7tv emotes enabled through ffz

topaz crown
#

7tv extension

ashen smelt
#

Hmm same for me, wonder why it's different

topaz crown
#

yeah its weird. they are technically seperate emotes too, since the emote ids are different

ashen smelt
#

yeah, it shows me the original emote ID too

topaz crown
#

my chatterino shows the fast one but the url for it is the slow one

ashen smelt
#

thanks for checking

topaz crown
#

classic seven televisions

real sorrel
#

not a chatterino bug last time i checked KKonaSmile we get the first version sent and optimistically add it; you don't need to restart chatterino - wait for a few minutes for 7tv's cache to expire and press F5

#

also please report issues on github - it's a bit more visible

polar gull
#

Did some poor googling, but couldn't find it on the 7tv site but is it possible to implement 7tv directly in my app instead of relying on users to have the extension installed?

rotund pivot
polar gull
west grail
#

Is there any way to replace Emotes in a string?

For example you have "Hey LULE FeelsOkayMan" and you get a HTML Element with the Emotes as Images replaced?

brazen marlin
#

Hey there everyone! Is 7tv open source? I would love to make some contributions to the codebase

paper plover
brazen marlin
#

Which team here works on the project?

#

I'd love to collab on some of the work

paper plover
#

Keep in mind that the devs are working on a big update to the website
so any pr under website would most likely wont be accepted since those wont be relevant after the big update

#

what do you want to work on specifically

brazen marlin
#

I'm happy to help wherever I can, I specialize in frontend, been doing it for about 7 years professionally

#

UI/UX

paper plover
paper plover
# brazen marlin I'm happy to help wherever I can, I specialize in frontend, been doing it for ab...
GitHub

Development repo for the ongoing 7TV.app website rewrite. - GitHub - SevenTV/WebsiteNext: Development repo for the ongoing 7TV.app website rewrite.

GitHub

This repo contains NPM packages for unified use across our web based clients, see README for third-party usage. - GitHub - SevenTV/WebComponents: This repo contains NPM packages for unified use acr...

paper token
#

also apparently these aren't real "WebComponents"

#

It's just coincidentally named

brazen marlin
#

sus, Also is the api down entirely?

paper plover
#

what do you mean by that

paper plover
brazen marlin
paper plover
#

recently event api outage happens more frequently at this time of day

paper plover
woeful basin
#

how can i get it for firefox brwoser

#

?

plush sandal
#

leaves

frosty bronze
#

Melonify Anatole - can I provide QA for new website? hmm

paper plover
#

new website: hello world LULE

pseudo rivet
#

^

paper token
#

The H in "hello world" should be a capitalized

frosty bronze
plush sandal
#

do you guys have issues with requests taking longer than normal

topaz crown
#

yeah most requests have been taking like 3 seconds recently

#

for me

pseudo rivet
#

infra is not doing well

#

for a little bit now

plush sandal
#

yeah if an emote doesn't load fast enough it just doesn't load at all ever

#

feel like it should retry after a little bit if it times out

plush sandal
paper token
#

that's what I want to know

#

I've always wondered if the "no cache" would have problems in the future

#

since cache usually exists for a reason

#

but I don't know much about networking stuff so I just trust the experts

plush sandal
#

wait no cache wdym?

#

if nothing for 7tv is being cached that could be the issue, but then it shouldn't take that long to load a website from scratch lol

#

takes 10seconds-1 minute everytime i've went to it in the past few months

paper token
#

in my mind, that sounds like a bad time

#

but IDK how it's set up

#

do I look like I know what the heck a CDN is?

plush sandal
#

lol yeah i don't know much about it either however i am curious

frosty bronze
keen elk
#

forsen

paper plover
#

Does the new api allows searching user by connections?

lethal jackal
#

Hello there,
Wondering if it is possible to get Emotes by name with the 7TV API ?
Tried going with "https://7tv.io/v3/emotes/reckH" or "https://7tv.io/v3/emotes?reckH" for example but it does not work. Only IDs seem to do it.
Getting "[{"id":"","name":"","owner":null,"visibility":0,"visibility_simple":null,"mime":"","status":0,"tags":null,"width":null,"height":null,"urls":null}]"

I'm currently trying to display 7TV emotes within a StreamElements chat widget. Does anyone know a way?
The default SE Chat widget doesn't currently show them, unfortunately 😦

Thank you!

paper plover
#

not all of the documented REST api works
the REST api will fully be usable in the future

you might try the GQL api, but it wont work in the future once the REST api is completed

hasty kernel
lethal jackal
#

Thank you for your responses,
Well, 7TV emotes are not being spotted by the StreamElements event listeners (unlike BTTV and FFZ). So I thought about checking for emote names in chat messages to get them via the API and display them if found. Or maybe there's a better solution?

hasty kernel
#

Uhh yea there is definitely a better solution lol that's a terrible idea

#

Simply get the appropriate emote sets and use the event api for live updates

lethal jackal
#

Oh right, wasn't aware of the EventAPI, thank you for this

paper plover
#

FDM how does the chat detect emote usage anyways
is it if chat message contains word from emote set, change text to corresponding emote image?

lethal jackal
pseudo rivet
#

if you know an emote is in the set, then you should also already have everything neccissary

#

including image urls etc

#

there is no need to query the api, you'll just get the same data you already have

lethal jackal
#

Yes, thank you, I got it working with the emote set query 🙂

inland whale
#

Where to find global tag for obtaining global smiles?

#

i found everything in the chat

ocean pelican
#

Hi guys, I just joined. Im going to the point. I was using the Zaytri chat bubbles you maybe know there is no support for 7tv on that extension, but was really easy to modify the code and add it, was almost prepared.

Now im trying to adapt it to the v3 api.

...
sevenTV: {
    api: 'https://7tv.io/v3/emote-sets/global',
    transformer: response => {
      const { emotes } = response
      return emotes.map(emote => emote.name)
    }
}
}```
```async function loadGlobalEmotes() {
  for (const [key, value] of Object.entries(GLOBAL_EMOTES)) {
    const { api, transformer } = value
    const response = await get(api)
    if (response != null) {
      Widget.globalEmotes[key] = transformer(response)
    }
  }
}```
```window.addEventListener('onWidgetLoad', async obj => {
  Widget.channel = obj.detail.channel
  loadFieldData(obj.detail.fieldData)
  loadGlobalEmotes()
  ...```
#

For some reason im not being able to draw the emotes. I like a lot this overlay chat, I would like to keep using it.
Sorry if this is a lot haha, im not sure what im doing. I can give more information if you think will be useful

paper plover
#

This is the most big dick idea i've seen

ocean pelican
paper plover
#

GIGACHAD HOOOOOLY

ocean pelican
#

I was using the v2 till some days ago

paper plover
ocean pelican
#

yeah but im not being able to render the emotes with v3, probably im missing something

ocean pelican
#

Thats what I did using v2, just changed that false to true and was working

#

hahaha

#

but now with v3 I suppose we also need to change the way to recover the emots from the api, and thats what I was trying to do here
#developers message

#

I also changed the 7tv to sevenTV

inland whale
#

is it possible to catch personal emoji from a message on twitch?

#

or will have to check each user for the presence of personal emoji with a subscription

pseudo rivet
#

so this is why they "care" so much

#

they implemented 7tv support in the beginning, but then decided after they didnt like it

#

but they felt like they needed to justify them implementing it

#

that'd be le epic troll though @ocean pelican

#

you'd need to change slightly the parser though

#

because the data formats are different between v2 and v3

#

but if you did and then made a pr for it that'd be tf

#

tf just fixing the support you never actually got rid of

ocean pelican
#

I agree that would be great trolling hahaha
but I dont want to cause any trouble, I just think that not having 7tv support in the chat extension is a ridiculous drama (and we can fix it)

solemn widget
#

if you pr'ed it that would make headlines for sure

frosty bronze
#

Huh interesting lore

paper token
#

smh

#

idk how 1 guy gets to determine which emotes people can use

#

that's never a good thing imo

ember crescent
#

We're also aware of an elevated amount of slow or error responses, we are investigating and hope to provide a full resolution shortly.

Does this refer to the requests that coming back with "*UnknownEmote" response with as 200 code? Not sure if I should create an issue for this or not.

CC: @hasty kernel

plush sandal
#

suggestion for the api - can you guys (or me) add some sort of example for each endpoint in the database so we can make the frontend easier for newcomers

#

was planning on updating the 7tvio frontend once the new update comes out

sturdy scroll
#

Is Melon roaming these halls atm?

rotund pivot
#

@pseudo rivet ayyybuBuh

sturdy scroll
#

bubu dares to ping him monkaS

rotund pivot
#

i bet youre gonna ask about the ffz addon

sturdy scroll
#

mabe PepeLaugh

rotund pivot
#

melon stopped updating it long time ago

#

lordmau5 fixed some things months ago

pseudo rivet
#

they're actively working on a patch

sturdy scroll
#

Ohh it was him who fixed it Ooh

pseudo rivet
#

as of today

rotund pivot
sturdy scroll
pseudo rivet
#

for v3 cosmetics

sturdy scroll
#

Thanks for update Melon

warm yacht
#

Yes, I am working on a patch with the help of Melonify HadToDoItToEm

#

Also hello gamers

#

I can't promise anything but so far I got basic namepaints and badges to work. Still need to do more testing, and also get proper emote sets + personal emotes working.
Maybe ready by the end of the week, but I can't promise anything WAYTOODANK

solemn widget
#

wtf pog

cursive saffron
rotund pivot
#

🐐

quick spear
azure cape
half fractal
#

Hi everyone! Hope you're having a wonderful monday!
I'm trying to integrate 7tv emotes in my custom chat but it doesn't work.

Can someone help me with the endpoint to get the emotes by name?

rotund pivot
half fractal
#

Thanks!

tough pasture
#

I want to get the emotes available on a Twitch channel. Previously I used the https://api.7tv.app/v2/users/<twitch id>/emotes endpoint and I'm having trouble translating that to v3.

#

https://7tv.io/v3/users/<twitch id> returns empty, as does https://7tv.io/v3/users?query=<twitch id>

#

Am I using it wrong?

solemn widget
#

if you have a twitch id you can use the

https://7tv.io/v3/users/twitch/<twitch id> endpoint

#

@tough pasture

tough pasture
#

Worked immediately, thanks!

solemn widget
#

👍

fallen sentinel
#

hello im trying to download it on opera gx and it doesnt work

#

this in poland means download failure

drifting timber
#

The 7TV docs and website needs some minor update I think. Like a bit more information and all. Would be cool, since it lacks some information and a nicer look to it.

Not "It" btw Kapp

fallen sentinel
#

only not on opera

drifting timber
#

@fallen sentinel I was not talking about your problem but about the 7tv dev docs and the poor state of the dev docs

#

Also if you are having issue with 7tv as a plugin, you are in the wrong channel as here it is for developers, working with the API of 7tv to build apps and shizz

paper plover
paper plover
drifting timber
hollow oyster
#

api extremely slow for anyone else?

fringe furnace
#

api extremely slow for anyone else?

patent wing
plush sandal
#

is 7tv.io needing a ui update now? i will get started if so

rancid tulip
#

F*ck 7tv, all my homies hate 7tv

rotund pivot
#

that’s the last thing that needs an update

plush sandal
rotund pivot
#

It’s gonna be updated when the whole website gets updated

#

the dev page is like the lowest priority atm

paper plover
#

Clueless we are getting the api update anytime soon right?

strange owl
static olive
#

How can I add emotes to a special emote set using the API?

topaz crown
#

you'd need to use the gql api which isn't documented but viewable from the f12 network tab

static olive
#

do you have a link for me?

topaz crown
#

7tv.app

#

press f12

#

navigate to the network tab

static olive
#

Are there any examples or is there nothing at all?

patent wing
topaz crown
#

yeah and theres that

static olive
#

okay

#

Are there examples for the REST API? I didn't really get any further with the docs

brave token
#

We're working on updating the REST API

#

Until then the gql api is kinda your only option, but it's a bad option

topaz crown
paper plover
# static olive Are there any examples or is there nothing at all?

no there's no example for it right now since it wasnt meant for public use in the first place
and it will be removed when the upgraded rest api is implemented

but if you want to implement it now
head over to the developer console -> network tab -> filter with gql
simply do an action, e.g.: im am adding the emote https://7tv.app/emotes/638767f24cc489ef45239272 into my set https://7tv.app/emote-sets/60ae3cb1b2ecb0150521fa1f
and check the gql request payload to see how to request the change

then just request that gql packet in whatever program you want to use:

brave token
#

I'll say it again, I really don't recommend using the GQL API. It'll probably be completely disabled in a matter of months

paper plover
#

but there's no other way to do it now kek

topaz crown
#

is there expected to be any buffer period between the updated REST and the GQL being disabled

brave token
#

Yes, but not much, since it's not meant for public use

#

About as long as it takes us to move the website & extension over to REST once it's ready

static olive
#

but an exact date for the update is not yet known?

brave token
#

Nope

topaz crown
#

is there going to be like an announcement when the api is released, prior to the website/extension migrating to the new requests? So we have time to migrate as well?

paper plover
#

there was a grace period from v2 api to v3 api migration
surely they will do the same by that time Clueless

topaz crown
#

well he just mentioned they likely wont

pearl ore
#

Is the EventAPI working as usual? My requests are kinda being denied because of CORS

#

Pretty sure it's the 503 but CORS bad weestDies

patent wing
#

event api is down for event stream but is working fine on websocket. I'm having the same issue I think. Status code 524 for my kick chat overlay.

plush sandal
#

dis happens a lot for me no idea why

#

every time i visit the site

#

on desktop

humble rose
#

having a problem with the websocket version - if i send a twitch entitlement request, such as {"op":35,"d":{"type":"entitlement.*","condition":{"ctx":"channel","platform":"TWITCH","id":"548015560"}}}, i get the expected {"op":5,"t":1701552613625,"d":{"command":"SUBSCRIBE","data":{"id":2368589574,"type":"entitlement.*","condition":{"ctx":"channel","id":"548015560","platform":"TWITCH"}}}} back, but if i try the same for kick, such as {"op":35,"d":{"type":"entitlement.*","condition":{"ctx":"channel","platform":"KICK","id":9508143}}}, the connection drops on me. no idea what youtube does

#

do kick IDs need to be strings?

#

looks like that is the case - which is kind of anoying since the https://kick.com/api/v2/channels/[CHANNEL_NAME] request returns integers

brave token
humble rose
#

twitch IDs, despite always being numeric, are still strings everywhere. kick ids are actual integers

#

but since youtube ids are also strings, i get why that was kind of the expected data type

brave token
humble rose
#

good to know

brave token
#

At least in our database, surely that carries over to the API & event API

jade sundial
#

is there a figma for the sites design somewhere? i kinda wnna experiment a little

brave token
jade sundial
#

rip

humble rose
#

i'm not receiving any subscribe ACKs from the SSE server. yes to heartbeats, though

#

example requesting url: https://events.7tv.io/v3@user.*%3Cobject_id%3D61cb91e40bf63003719445cb%3E%2Cemote.*%3Cobject_id%3D61cb91e40bf63003719445cb%3E%2Cemote_set.*%3Cobject_id%3D61cb91e40bf63003719445cb%3E

patent wing
#

yep its broken, just tried it.
https://events.7tv.io/v3@entitlement.*%3Cctx=channel;platform=KICK;id=676%3E,cosmetic.*%3Cctx=channel;platform=KICK;id=676%3E,emote_set.*%3Cobject_id=612bbd809d60d44d5240b3dc%3E
no subscribe

humble rose
#

also tried with a single emote.* request for simplicity

patent wing
humble rose
#

ayooooo

#

👍

pearl ore
#

EventAPI works, finally Okay

somber tendon
#

Sup, quick question about the V3 endpoints that take query params, can't wrap my head around to how the they look like, V2 example would be https://api.7tv.app/v2/users/{channelID}/emotes
V3 says that the channel Id is a query param, but I have not figured out the name of the param to be passed yet
https://7tv.io/v3/users?query=XXXXXX
https://7tv.io/v3/users?channelId=XXXXXX

no clue

#

nvm, seen a comment on this channel, so it should include the platform, but yeah, couldnt figure it out solely from the docs

brave token
#

the docs are bad atm, it's on my todo list

somber tendon
#

all good, i got it to work again with the new url and a couple of model changes

#

ah, and a curiosity .. this time i managed to find the global emotes URL in the debug logs that 7tv does https://7tv.io/v3/emote-sets/global, but not on the actual Network tab .. i might be extremely tired, but i'm not sure

paper plover
#

anyone doing advent of code heCrazy

topaz crown
#

ive only done like half so far tho

strange owl
#

ofc!!

patent wing
#

fucking css

#

fucking chrome

paper token
paper plover
#

MegaLuL BWAHAHAHAHAHA

short sand
#

For the new site please make it so if an emote upload fails, allow users to retry the submission if they change any setting

#

pepeW I don't know why we force users to refresh and resubmit everything to begin with

formal siren
#

Is there any plan for YouTube now?

#

Currently I made a userscript as a workaround, it just requests a specific emote set JSON and replaces emote names with images according to the JSON

#

Just want to check things to notice if i want to rewrite and contribute to the extension

patent wing
#

you currently cant even link youtube to your 7tv account, so it is kinda pointless for now

strange owl
lethal jackal
#

Yoo, any other ways to fetch user's following channels?

#

The main API is deprecated as you know.

#

(twitch)

hasty kernel
#

Not possible afaik twitch has retired that possibility altogether

lethal jackal
strange owl
#

If anyone is available, pls review this pr https://github.com/SevenTV/Extension/pull/978 Apu

Also; if anyone is having issues (the one where it stops you from scrolling, similar to the issue that occurred on the Twitch recap page) with the "new" layout (the experiment) you can try out the branch to see if that fixes it. I'd love some feedback

GitHub

Scrolling through the streams inside of a specific category can lock up after initial page load / while scrolling down.
This issue seems to happen because the AvatarsModule patches and re-renders t...

GitHub

The Web Extension for 7TV, bringing new features, emotes, vanity and performance to Twitch, Kick & YouTube - GitHub - pimothyxd/seventv-extension at fix/experiment-category-scroll

strange owl
exotic sigil
#

no but I could reproduce it

strange owl
#

Oh okay, then I'll take a look at it :)

#

thanks for letting me know

paper token
#

Yes it's very easy to reproduce

#

lol

strange owl
#

oh yeah I know lol

frosty bronze
strange owl
frosty bronze
#

oh just the video stats bug lol

strange owl
#

oh yeah, it's quite weird.

#

if you look at it as is, you'd assume it would work as expected

frosty bronze
#

yeah.... I haven't looked at things in a while

strange owl
#

yeah I get it

#

idk if you want to look into it, I did a little bit so I can give you some direction if you'd like

frosty bronze
#

I'm not going to be able to look into it now

#

maybe next year...

strange owl
#

that's fine FeelsOkayMan

strange owl
strange owl
#

although I must say it's not too great so I'll probably have to figure out something else

patent wing
solemn widget
#

why did you create discord twitch

#

lol

patent wing
#

cause why not :)

paper token
#

I’m exited to try it out

#

Imagine a way to combine the rooms so you could have xqc’s twitch and kick chats merged

#

Could be kinda cool

#

Send your messages to both

patent wing
#

would be pretty easy with how I have structured the code

#

it kinda combines twitch and kicks different message types into one

paper token
#

PagMan no tech debt

solemn widget
#

niiiiice

paper token
#

That way I can be an offline chatter and an online chatter at the same time

patent wing
solemn widget
#

wouldn't it be based

#

if it sent messages in both chats too

#

(no, no it would not be)

paper token
#

It would be based

#

Because of the way people use xqc’s twitch chat when he’s on kick

#

My messages wouldn’t be out of place there, personally

#

But yeah its usefulness is limited.

rotund pivot
paper token
misty olive
paper token
#

Looks so good though

#

Is the performance on par with chatterino?

misty olive
#

i say so yeah

#

theres still a lot of shit thats missed 😭

paper token
#

To be expected

#

BUT NOT TO BE TOLERATED

misty olive
#

its clean mhm

paper token
#

I like how it shows the users

#

Like discord

misty olive
#

yeah its cool

paper token
#

But unlike chatterino

misty olive
#

its based on whoever chats

paper token
#

Oh

#

Can’t that info be scraped from the web UI somehow?

misty olive
#

Shrug no clue

#

that might be a matin answer tbf

paper token
#

Yes

#

I didn’t actually think you could answer it

#

lol

misty olive
paper token
#

But who knows. Maybe you did hear something about that

misty olive
#

i wish chatterino had some way to get chatlist

paper token
#

It would also be a Melon answer

misty olive
#

so fucking annoying

#

docnotL LIKE GIVE ME SOMETHING FFS

paper token
#

Yeah

#

If you can see it on the website , it’s obviously still available

#

Just gotta get it somehow

misty olive
#

it might be based on 3rd parties

topaz crown
#

get ivr to host an endpoint for it

misty olive
#

ryan get on it

#

NOW

topaz crown
#

i mean theres already public endpoints for it

misty olive
#

angREEEE PRRRRRRRRRRRRRRRRRRR

#

SOMETHING

#

like bro

#

if you cant see chatters, why have this?

paper token
#

Hi Ryan

misty olive
topaz crown
#

yo

misty olive
#

i get mods can see it but bro

paper token
misty olive
#

AINTNOWAY these buttons should be in the same category

#

so annoying

paper token
#

Someone is riding a dirt bike or some kind of motorcycle around out there and it’s 2 am. I hate it so much because I wish that was me.

#

I’m JELLY

misty olive
#

mods?

#

get that guy??

solemn widget
#

obviously

#

you can use a token from the twitch website itself and make a request for the viewer list

placid galleon
paper token
topaz crown
#

because ThreeLetterAPI

placid galleon
#

its TOS i was told

paper token
#

But I don’t care about breaking tos

pseudo rivet
paper token
#

Yes

#

Lame

placid galleon
#

would they sue you or just ban

wild bramble
#

hey any thoughts on how to get 7tv working in a twitch chat embed?

#

ffz works, and i tried using the ffz addon for 7tv

#

but since ffz is absolutely trash it still doesn't work

patent wing
lyric walrus
fierce idol
strange torrent
#

hello, why i cant search for emotes? is the requerst wrong?

paper plover
strange torrent
topaz crown
paper plover
#

try with https://7tv.io/v3/gql first perhaps

#

my query for reference:

query SearchEmotes($query: String!, $page: Int, $sort: Sort, $limit: Int, $filter: EmoteSearchFilter) {
  emotes(query: $query, page: $page, sort: $sort, limit: $limit, filter: $filter) {
    count
    items {
      id
      name
      state
      trending
      owner {
        id
        username
        display_name
        style {
          color
          paint_id
          __typename
        }
        __typename
      }
      flags
      host {
        url
        files {
          name
          format
          width
          height
          __typename
        }
        __typename
      }
      __typename
    }
    __typename
  }
}

variable:

{
  "query": "forsen",
  "limit": 40,
  "page": 1,
  "sort": {
    "value": "popularity",
    "order": "DESCENDING"
  },
  "filter": {
    "category": "TOP",
    "exact_match": false,
    "case_sensitive": false,
    "ignore_tags": false,
    "zero_width": false,
    "animated": false,
    "aspect_ratio": ""
  }
}
formal siren
#

The "must include input" mode of the colon-completion looks weird

#

It seems not listing emotes including the input when an emote starting with input is found

#

not always 🤔

paper plover
deep dagger
karmic mantle
#

Hmmm, how do I activate the Twitch Emote showcase? It doesn't show anything rn...

low yoke
#

hello, any chance of the developers to add an PNG emoji option to the api? Unity doesnt support neither AVIF or WEBP LULE

paper plover
low yoke
paper token
#

yes

#

but why are you using the 7tv api in a unity program?

#

and why don’t you just implement an avif library ;)

low yoke
#

its a dumb twitch chat integration game

#

and those cost money lol

paper token
#

i see

paper token
#

avif is supposed to be free and stuff 😭

paper plover
paper token
#

cringe that it costs money

#

well

#

I guess it’s a shortcut

#

you could implement it yourself

#

but that takes skill and time

low yoke
paper token
#

I have neither skill nor time

#

so I would pirate it

low yoke
#

its too much of a hussle, theres too many steps to make a moving image work efficiently in Unity

#

not worth the effort LULE

low yoke
#

i did it FeelsStrongMan i did solve the weird json formating 7tv has to give me the names and the id of each emote a channel has

#

took me a while LULE

#

now im allowed to go Bedge

strange owl
#

I am once again asking for your reviews... peepoOkayDank

If anyone noticed some issues related to suspicious users not being highlighted and clips not being embedded, please try out the branch and let me know if it fixes it.

https://github.com/SevenTV/Extension/pull/986

GitHub

If a channel moderator received a "suspicious user" message, the message would not get highlighted. A message containing a clip also seemed to not get embedded. The issue causing this see...

low yoke
#

the only one that is shared among all channels?

patent wing
low yoke
#

gotchaty

patent wing
#

and this the api

low yoke
#

does that combines both?

patent wing
#

no the first emote set you sent is not the global emotes

#

that was the channel emotes for the 7tv twitch account

low yoke
#

oooohhhh i understand

#

this emoji breaks my regex completely LULE

low yoke
#

nvm ill just skip the :))))) type emojis

#

LULE cant be bother

paper plover
topaz crown
#

mods crush his skull

mortal fossilBOT
#

ryanpotat should have used $nap instead: (automated: afk for over 30 minutes) 💤 (45m, 7s ago)

topaz crown
#

$rafk

mortal fossilBOT
#

ryanpotat, Your AFK status has been resumed.

topaz crown
#

@misty olive mods crush his skull!!

misty olive
green gate
#

What is the max uri length for the event api? I'm getting an error about it being too long, but I can't find any info about the max length pajaThink

frosty bronze
#

if you're running into max uri length, I suspect you're not using the api right

green gate
#

pajaThink It says to use inline event subs in the docs "The endpoint for managing subscriptions is currently unavailable. You may use Inline Event Subscriptions in the meantime."

#

And I assume I'm not supposed to have an eventsource for each thing I want to subscribe to

frosty bronze
#

I think gql is the way to go here

#

someone that's actually used it can answer it better than I can

patent wing
#

max uri length?

#

I think that is a browser limitation

paper token
#

2^11

green gate
warm yacht
#

What are you trying to achieve with the event API?

#

If the URI is too long, maybe using a websocket connection is smarter (I know that was the way to go for the FFZ addon)

#

Dynamic un-/subscription from topics etc.

patent wing
#

monkaStop im doing this contract job and they asked how they can embed react into a wix website

#
#

jquery + react baby

#

Clueless surely they change their mind

frosty bronze
#

that seems cursed

strange owl
#

I agree, it definitely looks cursed

patent wing
#

Okay they decided not to go with wix

plush sandal
#

at least it wasn't wordpress

high scarab
#

hi

frosty bronze
#

hi

solemn widget
#

hi

solemn bluff
#

hi

paper token
#

hi

fierce idol
#

hi

rotund aspen
#

hi

quick spear
#

hi

paper token
#

noo it was supposed to be an Interest: Stage role after regress

#

for perfect mirrored colors

blazing pivot
quick spear
zinc aspen
#

Trying to probe into a specific issue in the API, cloned and opened in GoLand and I'm getting errors (i have no idea how Go works) but its saying i need GOROOT or something and need to download an SDK

#

anyone mind letting me know what SDK i need modCheck

solemn widget
zinc aspen
solemn widget
#

ah alright