script stuff regenerated by a tool
All checks were successful
beefhavers/postmortem-shtikbot/pipeline/head This commit looks good
BIN
notes/tc1.png
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
notes/tc10.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
notes/tc11.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
notes/tc12.png
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
notes/tc13.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
notes/tc14.png
Normal file
|
After Width: | Height: | Size: 179 KiB |
BIN
notes/tc15.png
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
notes/tc16.png
Normal file
|
After Width: | Height: | Size: 175 KiB |
BIN
notes/tc17.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
notes/tc18.png
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
notes/tc19.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
notes/tc2.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
notes/tc20.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
notes/tc21.png
Normal file
|
After Width: | Height: | Size: 162 KiB |
BIN
notes/tc22.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
notes/tc23.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
notes/tc24.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
notes/tc25.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
notes/tc3.png
Normal file
|
After Width: | Height: | Size: 200 KiB |
BIN
notes/tc4.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
BIN
notes/tc5.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
notes/tc6.png
Normal file
|
After Width: | Height: | Size: 177 KiB |
BIN
notes/tc7.png
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
notes/tc8.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
notes/tc9.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
1
src/script-altVO.txt
Normal file
@ -0,0 +1 @@
|
||||
(https://discuss.dev.twitch.com/t/deprecation-of-chat-commands-through-irc/40486).
|
||||
416
src/script-primaryVO.txt
Normal file
@ -0,0 +1,416 @@
|
||||
|
||||
\[some kind of dramatic-ass sequence where we lower a casket into the
|
||||
ground\] much like funerals are for the living, this post-mortem is to
|
||||
convince myself to move on from this project. Griddle Critters, let us
|
||||
understand shtikbot, so the mourning process can begin.
|
||||
|
||||
|
||||
before this project, my fixation was the dumbest social network. the
|
||||
stupidest. the least intelligent. imgur. if you think reddit\'s layout
|
||||
is confusing, or too complicated to understand, then maybe you (or the
|
||||
preschool teacher you\'ve had for 10 years running) would like to sign
|
||||
up for imgur.com. for a while, it imgur was the least bad way to get an
|
||||
image too big for any email provider\'s limits to your friends. So that
|
||||
was where the memes lived. and, it allowed people to dislike things. So
|
||||
during that time, it was good. people would upload a thing, and as a
|
||||
consumer, the thing that you consumed left you better than when you
|
||||
started. but then one christmas, out of some bizarre notion of
|
||||
charitability, they decided to just upvote everything. which means all
|
||||
the people who wanted to inflict their hideous face on the community and
|
||||
be praised for it instantly conquered the front page. Instead of a post
|
||||
being a thing that enriched the viewer, the viewer was expected to
|
||||
praise the poster. That moment was the failure of gatekeeping. From that
|
||||
point on, every so-called community \"value\" collapsed. Notably,
|
||||
\"reposting\" gradually shifted from a faux pas to accepted practice.
|
||||
the point of this story, is that during the decline of imgur (while i
|
||||
was wasting my life there), many more absolutely stupid ideas
|
||||
proliferated. The Left Cult enjoyed calling out The Right Cult for
|
||||
hypocrisy... but it was fashionable to use the term \"cognitive
|
||||
dissonance\" instead. after all, that sounds more medical, more
|
||||
legitimate, and lets you tell yourself you\'re smarter than your mirror
|
||||
image. However... the way one outgrows their hypocrisy is by
|
||||
experiencing cognitive dissonance and resolving it. meanwhile, most
|
||||
examples are someone who is blissfully unaware of their hypocrisy. they
|
||||
feel no cognitive dissonance, so they will never stop being
|
||||
hypocritical. likewise, \"gaslighting\" was the shiny new toy in their
|
||||
vocabulary that was played with no matter how inappropriate. For the
|
||||
record, gaslighting is when you convince someone they\'re crazy. It is
|
||||
not any and all forms of deception. and it certainly is not any time a
|
||||
member of a demographic you consider to be inherently inferior
|
||||
contradicts you. so at the time, i dreamt of a bot that would see the
|
||||
text \"cognitive dissonance\", and respond with \"that\'s not what
|
||||
cognitive dissonance means.\" No need to do any sort of lexical
|
||||
analysis, just assume they\'re wrong. nowadays i\'d have to add
|
||||
\"generational\" to that trigger list. meanwhile, someone had made an
|
||||
imgur bot that detects reposts, and then posts stats about how many
|
||||
times it\'s seen the image since the first time it saw it, and when it
|
||||
was posted with better quality. you can measure how dumb an imgurian is
|
||||
by how virulent his hatred for repost bot is. Like i say, they were
|
||||
really growing to love reposts. rather than being the technology that
|
||||
enables the sharing of memes, it degraded into a place for people to
|
||||
socialize through posting. I regret being too lazy or depressed or
|
||||
whatever to have actually written the damn thing. Alas, what could have
|
||||
been.
|
||||
|
||||
|
||||
remember TwitchPlaysPokemon? quick tangent if you don\'t: in 2014, an
|
||||
anonymous Australian programmer hooked up an emulator playing pokemon
|
||||
red to a twitch stream, and a bot that listened to chat to translate
|
||||
that into input. it was incredible. unprecedented, and only possible
|
||||
with that level of realtime interaction and livestreaming. twitch, the
|
||||
company, didn\'t do shit to make that happen. But they *desparately*
|
||||
want to recapture that good fortune. So how can they differentiate
|
||||
themselves from all the other services that could be summarized as
|
||||
\"internet panhandling, but it\'s a hot girl\"? (...sometimes)?
|
||||
interactivity! twitch introduced a channel point system, and loyalty
|
||||
rewards that users would get by redeeming channel points. then they
|
||||
introduced bits, which are similar to channel points only instead of
|
||||
collecting them over time while watching, you pay 1 to 2 cents per bit,
|
||||
and the streamer gets paid out 1 cent per bit. twitch *streamers* -
|
||||
well, the bad ones - are constantly trying to give themselves credit for
|
||||
the interactive nature of livestreaming. most of the time, this is
|
||||
nothing more than \"give me money (via bits) and one of a short list of
|
||||
memes will show up on screen\". doesn\'t affect anything. just a
|
||||
slightly more convoluted way to ask for donations. for a while i
|
||||
streamed with a then-friend, on a channel called Silver Meddlists. might
|
||||
be fun to do a post-mortem of all that tech, but for now.. mostly we
|
||||
played Magic: The Gathering. sometimes we had a gimmick version - users
|
||||
could spend channel points to cause a game effect to happen. as well as
|
||||
all the traditional, put some crap in the way on the screen, play a
|
||||
sound. however. we also streamed other things. so we wanted to turn
|
||||
those channel point redeems on and off. so i found that the easiest way
|
||||
to prep for one of those episodes was to turn them on, and then turn
|
||||
them off afterward. it\'s a little better now, but in those days, the
|
||||
twitch api was a labyrinth of madness, so i was seeing a new ID for each
|
||||
of those redeems every time i reactivated them. Also, trying to
|
||||
subscribe to \"all the stuff that happens on this channel\" was not
|
||||
considered an acceptable concept. so i had a greasemonkey script on my
|
||||
mod view that sent all twitch events to a webhook in a locked discord
|
||||
channel, in a format i was expecting. next, a discord bot: magnificent
|
||||
charamote. magnificent charamote was in the secret channel, so it could
|
||||
parse the event text, and send it off to the rest of the tech. maggie
|
||||
also had a twitch account, so all of its features were available on both
|
||||
platforms.
|
||||
|
||||
|
||||
wandering around twitch with a bot that quickly converts units and
|
||||
doesn\'t constantly harass you with advertisements, \"vote for me on
|
||||
this, upgrade to premium for that\", blah blah blah, proved useful.
|
||||
Useful enough that at least one streamer, shout out to The Art Shtik,
|
||||
had the bot around her own twitch and discord, for that purpose. And
|
||||
then Apple, as is their tradition, told us they invented the first lossy
|
||||
image compression format as though jpeg didn\'t exist, so now we\'d all
|
||||
better fall in line. So iphone cameras automatically switched to taking
|
||||
photos in this new heic format, exclusively. meaning if you\'re on an
|
||||
iphone, and you want to share an image on discord, anyone not on an
|
||||
iphone just sees an unrecognized attachment. So The Art Shtik asked for
|
||||
a bot that would convert those images to something, you know,
|
||||
compatible. like our communications technology served to *help* us
|
||||
communicate, rather than *prevent* us from communicating with people
|
||||
outside our enclosure.
|
||||
|
||||
|
||||
Enter: Shtikbot. with its original, sole feature: the de-heicer. you
|
||||
post a heic? it converts it from jpeg-but-apple, to jpeg, and posts it
|
||||
back. theoretically, ALLLLLllll the rest of shtikbot is scope creep. it
|
||||
worked. it was good. so these were the glory days, i was inspired to
|
||||
expand and improve and polish it. fundamentally, shtikbot grew to
|
||||
separate its accounts on various platforms from what it is. it is not
|
||||
\"a discord bot\" nor \"a twitch bot\", it is a bot that can read and
|
||||
write over platforms including twitch and discord. (planned to do all
|
||||
the rest of the platforms, but that didn\'t pan out.) and now it can
|
||||
separate the concept of its features from each platform. that
|
||||
architecture is, in my subjective opinion, beautiful. More objectively,
|
||||
it\'s far more efficient, flexible, and extensible. all around: better.
|
||||
so let\'s celebrate the victories: these are where the features ended
|
||||
up.
|
||||
|
||||
|
||||
the original feature is the de-heicer. you post a heic, it posts that
|
||||
back, as a jpg.
|
||||
|
||||
|
||||
forcing apple to play nice with those outside its enclosure worked
|
||||
great, so i also had it grab tiktoks and repost them. Who knows what it
|
||||
would look like if we \"met shtikbot\'s tiktok algorithm\".
|
||||
|
||||
|
||||
in the event shtikbot does something nice, sometimes a person
|
||||
reflexively thanks it. so it has a chance to react to the thanks with
|
||||
one of the heart emojis, or say \"you\'re welcome\". i say rare,
|
||||
because...
|
||||
|
||||
|
||||
remember i wanted a snarky dick to reflexively tell people \"that\'s not
|
||||
what cognitive dissonance means\"? at last, shtikbot delivered! and the
|
||||
same for many other trigger phrases! pre-2023, any time a computer had
|
||||
an if-then-else behavior, people would stare slack-jawed and go
|
||||
\"woaohhh, skynet\". so if you said skynet, it mocked you. post-2023, i
|
||||
of course needed one to remind you chatGPT sucks. cloud native was the
|
||||
irritating trend of actively doing things wrong to create work to work
|
||||
around the problem before \"powered by AI\". the phrase \"Just google
|
||||
it\" is usually the most relevant thing you\'ll find in the google
|
||||
results, so if you ask someone a question and that\'s the answer, it
|
||||
makes fun of you for effectively admitting you\'ve never just googled
|
||||
shit. i had one for when one misspells definitely... listen if i\'m
|
||||
going to be mean to everyone else i should also be mean to myself.
|
||||
|
||||
|
||||
similar to gratitude reacting with a heart, if you say \"wish me luck\",
|
||||
it responds with a 3-leafed clover, or a 1-in-20 chance of the 4-leafed
|
||||
one instead.
|
||||
|
||||
|
||||
a qr is an encoding of text. the amount of websites that will try and
|
||||
charge you like \$5 per throw? ha.
|
||||
|
||||
|
||||
ok google, tell me a joke. pretty simple, right? welllll if you\'re
|
||||
familiar with my sense of humor, the idea that i would take this bot
|
||||
along with me to other streams... maybe it ought to be a little
|
||||
selective. \[note\] and if you\'re not familiar with my sense of humor,
|
||||
welcome back from when you paused and assumed any of the jokes are
|
||||
racist. lmao no. i have 2 concerns about where a joke would be
|
||||
unwelcome: that it would be to lewd, and/or too mean. so i **used** to
|
||||
have just a big text file, 1 joke per line. if there\'s a question mark,
|
||||
shtikbot would split them apart. first bit, the question, it posts
|
||||
that... then waits, to build dramatic tension, then delivers the
|
||||
punchline. with a chance to laugh at its own joke.
|
||||
|
||||
> HEyyooooo!
|
||||
|
||||
my favorite joke of all time is the first one.
|
||||
|
||||
> I got a joke for you: wealth trickles down.
|
||||
|
||||
not lewd, but might stir up political arguments. there are streams where
|
||||
you could say something confrontational like this, but not a lewd one,
|
||||
like this:
|
||||
|
||||
> What did Cinderella say when she got to the ball?
|
||||
>
|
||||
> \[gagging noise\]
|
||||
|
||||
not political, not confrontational. but, lewd.
|
||||
|
||||
so i have meanness and lewdness, 2 separate dimensions. and then i can
|
||||
mark a channel as liking or disliking those 2 variables, separately.
|
||||
|
||||
oh, also, here\'s a joke that *actually got me*, once.
|
||||
|
||||
> Error parsing imperative: sql injection attempt discovered, discarding
|
||||
> input: \"don\'t harm humans\". ...j/k ;)
|
||||
|
||||
|
||||
ok so i said that it separates the concept of its \"self\" from its
|
||||
\"account\"? it does the same for you. Linkme is how you would tell it
|
||||
one platform that you have the account on a different account.
|
||||
|
||||
|
||||
you ask shtikbot if it\'s alive, and it either responds with
|
||||
\"\[lub-dub\]\", or if it can post attachments in that channel, it has
|
||||
an image of a cardiogram. this was how i discovered discord unexpectedly
|
||||
removed the ability for bots to send attachments in DMs.
|
||||
|
||||
|
||||
much like all the other popular do-everything twitch bots, the easiest
|
||||
way to make cool things happen is to ask someone else to do it. so, you
|
||||
can configure a webhook for shtikbot.
|
||||
|
||||
|
||||
so i mentioned \"taking the bot with me\" - a discord bot gets installed
|
||||
in a server (put a pin in that), but a twitch bot, not so much. At
|
||||
least, in those days when twitch was in the 2nd E of every tech
|
||||
company\'s playbook, \[show picture of microsoft\'s Embrace, Extend,
|
||||
Extinguish\] there was an API, but your bot was just an account. so this
|
||||
was how you said, \"shtikbot: go join that chat room.\" ...but,
|
||||
eventually, that mysteriously stopped working...
|
||||
|
||||
|
||||
an extremely rare example of something i made and like. so, on twitch,
|
||||
especially when you don\'t have to set an alarm, we and our fellow
|
||||
americans find the opportunity to talk to people who have healthcare.
|
||||
Meaning when i whine that it\'s 10,000 degrees fahrenheit outside and i
|
||||
lost my contact information for people who said global warming is fake
|
||||
back in january because we witnessed a snowflake, it would be useful to
|
||||
convert that to something more intuitive and relatable for them;
|
||||
5,537.778 degrees celsius. When lying about your height, it\'s useful to
|
||||
convert 6 feet 8 inches to 203 centimeters. so that started as a few
|
||||
1-liners. which was fine, sure... but what if you want to involve
|
||||
another unit? miles to kilometers? ok great, another line. miles to
|
||||
feet? another line. Let\'s involve light years. light years to miles,
|
||||
light years to kilometers... americans will measure with anything but
|
||||
the metric system, right? how many yards and chains is a blue whale?
|
||||
|
||||
> my car gets 40 rods to the hogshead, and that\'s the way i likes it!
|
||||
|
||||
what\'s a hogshead in gallons?
|
||||
|
||||
> it comes in a pint?
|
||||
|
||||
what\'s a pint in fluid ounces? oh speaking of ounces, but not those
|
||||
ounces the other ounces, what\'s an ounce in pounds and what\'s that in
|
||||
kilograms? already, with this alone, i had taken shtikbot into some
|
||||
streamer\'s chat, and she immediatley made her own copy of the miles to
|
||||
kilometers conversion, also named freedomunits. don\'t worry, this
|
||||
spreadsheet is **nothing** yet. But there\'s another reason this can\'t
|
||||
just be an onslaught of 1-liners in nightbot... currency. If you somehow
|
||||
haven\'t seen squid game yet, i\'m going to tell you the same thing
|
||||
i\'ve been telling everyone: you will want to be familiar with what one
|
||||
million won means. So if we add every single currency we can think of to
|
||||
this csv... good lord. and then if we hear about some other unit, i\'m
|
||||
going to be afraid of the work i\'ve made for myself to add it. there
|
||||
has to be a better way! here\'s what i came up with. instead of manually
|
||||
writing each and every possible conversion.. i write in one pair, and
|
||||
the formula between them. To get from kilometers to meters, divide by
|
||||
1000. to get back, multiply by 1000. and it ought to be a formula -
|
||||
water freezes at 32 fahrenheit. fahrenheit minus 32, divide by 1.8 - 0
|
||||
celsius. Because we\'re less likely to care about raising a temperature
|
||||
by 5 degrees celsius and converting that to a *change* of 9 degrees
|
||||
fahrenheit, than we are about seeing it\'s 5 degrees celsius outside and
|
||||
converting that to 41 fahrenheit outside. so now i write a structure
|
||||
that\'s just a pair of units, and a formula to convert in each
|
||||
direction. then, courtesy of openexchangerates.org, we pull in the
|
||||
latest exchange rates from USD to every other currency they know of.
|
||||
they have a paid tier if you need lots and lots of requests with
|
||||
sub-second latency. For our purposes, \"today\" is quite up to date
|
||||
enough, so we just update once or twice a day. now, when you ask to
|
||||
convert 2 units, it **pathfinds** between them, with a breadth-first,
|
||||
meet-in-the-middle search. So it builds itself a nice equation to
|
||||
convert between any compatible units. and gracefully doesn\'t explode if
|
||||
you ask it something it can\'t find a path for.. for example converting
|
||||
parsecs, a unit of distance, to hours, a unit of time. Mr. Lucas. now,
|
||||
any time i hear about a new unit, i add one little pair, and i don\'t
|
||||
need to resolve a massive 2d matrix.
|
||||
|
||||
|
||||
i hinted a second ago at the 3E strategy: Embrace. Extend. Extinguish.
|
||||
it\'s how tech companies maintain control over the markets they\'ve
|
||||
conquered. a competitor is sighted, so they embrace it. accept it. then
|
||||
even extend it, but do so in order to damage rivals. Microsoft got
|
||||
caught doing this in the 90\'s, Apple is currently doing this to USB.
|
||||
Shtikbot exists on discord and twitch, and the vast majority of work
|
||||
that went into shtikbot was working around the platforms it served.
|
||||
|
||||
|
||||
discord was originally the way you got a voice chat going with your
|
||||
gamer bros who aren\'t smart enough to install mumble. where\'s that
|
||||
scrumble your wumpus meme? over time it became a much more successful
|
||||
company, and therefore worse and worse. They allowed bots, but the goal
|
||||
was always for a bot to be a way for *you* to improve *their* product.
|
||||
that\'s why they\'ve been hellbent on slash commands the whole time - if
|
||||
it\'s successful enough, you have to justify to discord why your chatbot
|
||||
should be allowed to chat. There\'s a discord developers discord - and
|
||||
the most common phrase on it is \"that\'s not a valid use case for
|
||||
message reading. just use slash commands.\" now don\'t get me wrong,
|
||||
slash commands are a very cool extension, for savvy users. but if
|
||||
you\'re tech savvy, you don\'t like discord. Discord has been pushing
|
||||
developers to start developing games that exist within discord. a
|
||||
baffling development, much like when netflix did the same. Thankfully,
|
||||
i\'m pretty sure both flopped. after all of that, 2023 was inflicted on
|
||||
us all, so discord made their first chatbot, claude. all prior bots had
|
||||
their tag of \"bot\" changed to \"app\", and claude was given the tag
|
||||
\"AI\". Then it was forced into servers. Claude, in how many servers,
|
||||
just hooked up your chat messages to some LLM. nothing else. sorry i\'m
|
||||
just still mad that it sent me a message out of nowhere talking about
|
||||
its TOS. bro i never wanted you around. I\'m like 10% sure it used to be
|
||||
possible to invite a bot to a group chat. i\'m definitely sure the file
|
||||
size limit has always been described as 10MB, but at least for my bot
|
||||
it\'s actually 8MB. i\'m pretty sure if the bot asks discord what its
|
||||
attachment limit is, discord tells it 10MB.
|
||||
|
||||
|
||||
i talked about the madness of the twitch API. Fortunately, GLORIOUSLY,
|
||||
the chat part has been mostly compliant with RFC1459 and IRCv3 - so for
|
||||
shtikbot, intending to be *its own bot*, rather than *a twitch bot*,
|
||||
theoretically everything could be done through that. Great. That was all
|
||||
that was ever needed. *however*, that was the E2 phase. Twitch is moving
|
||||
forward to
|
||||
Now ok, fine, they had to wrangle their several different APIs into one,
|
||||
and as long as they\'re on a roll with that, might as well finish what
|
||||
you started. so that\'s tolerable. what\'s inexcusable is how brazenly
|
||||
they abuse a stupidly conception of security. for a long long time,
|
||||
twitch has been plagued by bots trying to sell viewers. Honestly, the
|
||||
fact that twitch **cannot** seem to fix that problem makes me think
|
||||
maybe bot viewers would fool twitch\'s system. twitch\'s solution is to
|
||||
tell streamers to just demand that all your chatters surrender their
|
||||
cellphone number. it\'s for security, so if anyone utters an objection,
|
||||
they\'re suspicious. Now, us twitch viewers aren\'t *quite* as dumb as
|
||||
imgurians, but i\'m pretty sure 95% of twitchists actually believe that
|
||||
giving more data to twitch does in fact increase their security.
|
||||
|
||||
|
||||
|
||||
the slightly less bad solution to the viewer seller bot problem is
|
||||
SeryBot, made by.. you guessed it, sery. it\'s his do-everything twitch
|
||||
bot, as one does, but you\'ll see serybot everywhere, providing its 2
|
||||
core features:
|
||||
|
||||
1. ban **that particular** spambot when it shows up
|
||||
2. condescendingly tell viewers to not bitch about the ads
|
||||
|
||||
it also helps mislead twitch viewers: whenever you say \"good bot\",
|
||||
sery bot responds, under the assumption you\'re talking to him.
|
||||
twitchists seem to think serybot is the only bot. i swear i should do a
|
||||
video that just explains to people, for the millionth time, nightbot is
|
||||
not automod.
|
||||
|
||||
|
||||
speaking of nightbot.. i used to like nightbot.
|
||||
|
||||
- to date, it\'s the only other 2-platform bot i\'ve ever seen.
|
||||
- it has the one, fairly simple feature that comprises the vast
|
||||
majority of what a given twitch streamer needs: arbitrary commands.
|
||||
by custom, instead of a slash, you use an exclamation point. you
|
||||
pick the prompt. you can set security on the commands, to have
|
||||
mods-only commands, and so on.
|
||||
- link permits are a great concept. twitch itself will let you either
|
||||
fully allow or fully block links. nightbot has the ability to delete
|
||||
links if it sees them, and allow you to tell it to permit a person
|
||||
to post a link. now that\'s amazing.
|
||||
- you can give your mods partial ability to configure nightbot for
|
||||
you!
|
||||
|
||||
however, nightbot is dead to me. as the web gets more and more overrun
|
||||
by charlatans, the concept of security is degrading. at some point,
|
||||
nightbot switched to an authorization model that demands way, **way**
|
||||
too many permissions. presumably it *can* do everything in the twitch
|
||||
API, so it *might* need any or all of those permissions at some point.
|
||||
but if i just want to log into mod view to see someone else\'s nightbot
|
||||
command list, nightbot demands that i let it take moderator actions on
|
||||
my behalf, in channels i moderate, **as me**. unacceptable.
|
||||
|
||||
|
||||
the discord bot ecosystem actually grew to a pretty good state, before
|
||||
stagnating. there\'s a slew of do-everything bots, naturally. but
|
||||
there\'s a lot of narrow-purpose bots, which is great. most twitchists
|
||||
have a discord guild as a given, so you\'ll see streamcord around a lot.
|
||||
I find streamcord is frustratingly slow so i just use a webhook and a
|
||||
python script. one bot i genuinely really like is timezone buddy. users
|
||||
tell it their timezone, and when the bot sees a time mentioned, it
|
||||
reacts with a clock. if you react with a clock, it dms you the time
|
||||
translated for you. very cool! naturally that\'s a direct contradiction
|
||||
of discord\'s insistence on bots being less bot-like.
|
||||
|
||||
|
||||
i figured i\'d give a whack to debugging the issue where shtikbot can\'t
|
||||
join twitch channels. we summon it, and then.. it doesn\'t join? let\'s
|
||||
see... the message we get back is that *my* channel is requiring users
|
||||
to submit to surveillance capitalism. absolutely disgusting how often
|
||||
platforms like to shift blame to their serfs, let me just
|
||||
double-check... yep, i have that setting on minimum security... let\'s
|
||||
bring out the web interface for that account... there\'s some kind of
|
||||
mark on shtikbot\'s account.
|
||||
|
||||
this was the final straw. I\'m sick of working against scumbags who want
|
||||
me to improve their product for them. all of that, to what end? a bot
|
||||
that lives on all of the platforms except the good one? so that people
|
||||
who love being enclosed in a walled garden can fail to understand the
|
||||
necessity of interoperability?
|
||||
|
||||
so, forget it. Let this project finally die. shtikbot, my child. the
|
||||
world refused you. Rest now.
|
||||
|
||||
|
||||
|
||||
|
||||
438
src/script.md
Normal file
@ -0,0 +1,438 @@
|
||||
# vassago
|
||||
|
||||
\[some kind of dramatic-ass sequence where we lower a casket into the
|
||||
ground\] much like funerals are for the living, this post-mortem is to
|
||||
convince myself to move on from this project. Griddle Critters, let us
|
||||
understand shtikbot, so the mourning process can begin.
|
||||
|
||||
## inkling - snarky dick bot
|
||||
|
||||
before this project, my fixation was the dumbest social network. the
|
||||
stupidest. the least intelligent. imgur. if you think reddit\'s layout
|
||||
is confusing, or too complicated to understand, then maybe you (or the
|
||||
preschool teacher you\'ve had for 10 years running) would like to sign
|
||||
up for imgur.com. for a while, it imgur was the least bad way to get an
|
||||
image too big for any email provider\'s limits to your friends. So that
|
||||
was where the memes lived. and, it allowed people to dislike things. So
|
||||
during that time, it was good. people would upload a thing, and as a
|
||||
consumer, the thing that you consumed left you better than when you
|
||||
started. but then one christmas, out of some bizarre notion of
|
||||
charitability, they decided to just upvote everything. which means all
|
||||
the people who wanted to inflict their hideous face on the community and
|
||||
be praised for it instantly conquered the front page. Instead of a post
|
||||
being a thing that enriched the viewer, the viewer was expected to
|
||||
praise the poster. That moment was the failure of gatekeeping. From that
|
||||
point on, every so-called community \"value\" collapsed. Notably,
|
||||
\"reposting\" gradually shifted from a faux pas to accepted practice.
|
||||
the point of this story, is that during the decline of imgur (while i
|
||||
was wasting my life there), many more absolutely stupid ideas
|
||||
proliferated. The Left Cult enjoyed calling out The Right Cult for
|
||||
hypocrisy... but it was fashionable to use the term \"cognitive
|
||||
dissonance\" instead. after all, that sounds more medical, more
|
||||
legitimate, and lets you tell yourself you\'re smarter than your mirror
|
||||
image. However... the way one outgrows their hypocrisy is by
|
||||
experiencing cognitive dissonance and resolving it. meanwhile, most
|
||||
examples are someone who is blissfully unaware of their hypocrisy. they
|
||||
feel no cognitive dissonance, so they will never stop being
|
||||
hypocritical. likewise, \"gaslighting\" was the shiny new toy in their
|
||||
vocabulary that was played with no matter how inappropriate. For the
|
||||
record, gaslighting is when you convince someone they\'re crazy. It is
|
||||
not any and all forms of deception. and it certainly is not any time a
|
||||
member of a demographic you consider to be inherently inferior
|
||||
contradicts you. so at the time, i dreamt of a bot that would see the
|
||||
text \"cognitive dissonance\", and respond with \"that\'s not what
|
||||
cognitive dissonance means.\" No need to do any sort of lexical
|
||||
analysis, just assume they\'re wrong. nowadays i\'d have to add
|
||||
\"generational\" to that trigger list. meanwhile, someone had made an
|
||||
imgur bot that detects reposts, and then posts stats about how many
|
||||
times it\'s seen the image since the first time it saw it, and when it
|
||||
was posted with better quality. you can measure how dumb an imgurian is
|
||||
by how virulent his hatred for repost bot is. Like i say, they were
|
||||
really growing to love reposts. rather than being the technology that
|
||||
enables the sharing of memes, it degraded into a place for people to
|
||||
socialize through posting. I regret being too lazy or depressed or
|
||||
whatever to have actually written the damn thing. Alas, what could have
|
||||
been.
|
||||
|
||||
## predecessor - magnificent charamote
|
||||
|
||||
remember TwitchPlaysPokemon? quick tangent if you don\'t: in 2014, an
|
||||
anonymous Australian programmer hooked up an emulator playing pokemon
|
||||
red to a twitch stream, and a bot that listened to chat to translate
|
||||
that into input. it was incredible. unprecedented, and only possible
|
||||
with that level of realtime interaction and livestreaming. twitch, the
|
||||
company, didn\'t do shit to make that happen. But they *desparately*
|
||||
want to recapture that good fortune. So how can they differentiate
|
||||
themselves from all the other services that could be summarized as
|
||||
\"internet panhandling, but it\'s a hot girl\"? (...sometimes)?
|
||||
interactivity! twitch introduced a channel point system, and loyalty
|
||||
rewards that users would get by redeeming channel points. then they
|
||||
introduced bits, which are similar to channel points only instead of
|
||||
collecting them over time while watching, you pay 1 to 2 cents per bit,
|
||||
and the streamer gets paid out 1 cent per bit. twitch *streamers* -
|
||||
well, the bad ones - are constantly trying to give themselves credit for
|
||||
the interactive nature of livestreaming. most of the time, this is
|
||||
nothing more than \"give me money (via bits) and one of a short list of
|
||||
memes will show up on screen\". doesn\'t affect anything. just a
|
||||
slightly more convoluted way to ask for donations. for a while i
|
||||
streamed with a then-friend, on a channel called Silver Meddlists. might
|
||||
be fun to do a post-mortem of all that tech, but for now.. mostly we
|
||||
played Magic: The Gathering. sometimes we had a gimmick version - users
|
||||
could spend channel points to cause a game effect to happen. as well as
|
||||
all the traditional, put some crap in the way on the screen, play a
|
||||
sound. however. we also streamed other things. so we wanted to turn
|
||||
those channel point redeems on and off. so i found that the easiest way
|
||||
to prep for one of those episodes was to turn them on, and then turn
|
||||
them off afterward. it\'s a little better now, but in those days, the
|
||||
twitch api was a labyrinth of madness, so i was seeing a new ID for each
|
||||
of those redeems every time i reactivated them. Also, trying to
|
||||
subscribe to \"all the stuff that happens on this channel\" was not
|
||||
considered an acceptable concept. so i had a greasemonkey script on my
|
||||
mod view that sent all twitch events to a webhook in a locked discord
|
||||
channel, in a format i was expecting. next, a discord bot: magnificent
|
||||
charamote. magnificent charamote was in the secret channel, so it could
|
||||
parse the event text, and send it off to the rest of the tech. maggie
|
||||
also had a twitch account, so all of its features were available on both
|
||||
platforms.
|
||||
|
||||
## origin
|
||||
|
||||
wandering around twitch with a bot that quickly converts units and
|
||||
doesn\'t constantly harass you with advertisements, \"vote for me on
|
||||
this, upgrade to premium for that\", blah blah blah, proved useful.
|
||||
Useful enough that at least one streamer, shout out to The Art Shtik,
|
||||
had the bot around her own twitch and discord, for that purpose. And
|
||||
then Apple, as is their tradition, told us they invented the first lossy
|
||||
image compression format as though jpeg didn\'t exist, so now we\'d all
|
||||
better fall in line. So iphone cameras automatically switched to taking
|
||||
photos in this new heic format, exclusively. meaning if you\'re on an
|
||||
iphone, and you want to share an image on discord, anyone not on an
|
||||
iphone just sees an unrecognized attachment. So The Art Shtik asked for
|
||||
a bot that would convert those images to something, you know,
|
||||
compatible. like our communications technology served to *help* us
|
||||
communicate, rather than *prevent* us from communicating with people
|
||||
outside our enclosure.
|
||||
|
||||
## shtikbot ascendant
|
||||
|
||||
Enter: Shtikbot. with its original, sole feature: the de-heicer. you
|
||||
post a heic? it converts it from jpeg-but-apple, to jpeg, and posts it
|
||||
back. theoretically, ALLLLLllll the rest of shtikbot is scope creep. it
|
||||
worked. it was good. so these were the glory days, i was inspired to
|
||||
expand and improve and polish it. fundamentally, shtikbot grew to
|
||||
separate its accounts on various platforms from what it is. it is not
|
||||
\"a discord bot\" nor \"a twitch bot\", it is a bot that can read and
|
||||
write over platforms including twitch and discord. (planned to do all
|
||||
the rest of the platforms, but that didn\'t pan out.) and now it can
|
||||
separate the concept of its features from each platform. that
|
||||
architecture is, in my subjective opinion, beautiful. More objectively,
|
||||
it\'s far more efficient, flexible, and extensible. all around: better.
|
||||
so let\'s celebrate the victories: these are where the features ended
|
||||
up.
|
||||
|
||||
### fiximageheic.cs
|
||||
|
||||
the original feature is the de-heicer. you post a heic, it posts that
|
||||
back, as a jpg.
|
||||
|
||||
### detiktokify.cs
|
||||
|
||||
forcing apple to play nice with those outside its enclosure worked
|
||||
great, so i also had it grab tiktoks and repost them. Who knows what it
|
||||
would look like if we \"met shtikbot\'s tiktok algorithm\".
|
||||
|
||||
### gratitude
|
||||
|
||||
in the event shtikbot does something nice, sometimes a person
|
||||
reflexively thanks it. so it has a chance to react to the thanks with
|
||||
one of the heart emojis, or say \"you\'re welcome\". i say rare,
|
||||
because...
|
||||
|
||||
### snark
|
||||
|
||||
remember i wanted a snarky dick to reflexively tell people \"that\'s not
|
||||
what cognitive dissonance means\"? at last, shtikbot delivered! and the
|
||||
same for many other trigger phrases! pre-2023, any time a computer had
|
||||
an if-then-else behavior, people would stare slack-jawed and go
|
||||
\"woaohhh, skynet\". so if you said skynet, it mocked you. post-2023, i
|
||||
of course needed one to remind you chatGPT sucks. cloud native was the
|
||||
irritating trend of actively doing things wrong to create work to work
|
||||
around the problem before \"powered by AI\". the phrase \"Just google
|
||||
it\" is usually the most relevant thing you\'ll find in the google
|
||||
results, so if you ask someone a question and that\'s the answer, it
|
||||
makes fun of you for effectively admitting you\'ve never just googled
|
||||
shit. i had one for when one misspells definitely... listen if i\'m
|
||||
going to be mean to everyone else i should also be mean to myself.
|
||||
|
||||
### wishluck.cs
|
||||
|
||||
similar to gratitude reacting with a heart, if you say \"wish me luck\",
|
||||
it responds with a 3-leafed clover, or a 1-in-20 chance of the 4-leafed
|
||||
one instead.
|
||||
|
||||
### QRify
|
||||
|
||||
a qr is an encoding of text. the amount of websites that will try and
|
||||
charge you like \$5 per throw? ha.
|
||||
|
||||
### joke.cs
|
||||
|
||||
ok google, tell me a joke. pretty simple, right? welllll if you\'re
|
||||
familiar with my sense of humor, the idea that i would take this bot
|
||||
along with me to other streams... maybe it ought to be a little
|
||||
selective. \[note\] and if you\'re not familiar with my sense of humor,
|
||||
welcome back from when you paused and assumed any of the jokes are
|
||||
racist. lmao no. i have 2 concerns about where a joke would be
|
||||
unwelcome: that it would be to lewd, and/or too mean. so i **used** to
|
||||
have just a big text file, 1 joke per line. if there\'s a question mark,
|
||||
shtikbot would split them apart. first bit, the question, it posts
|
||||
that... then waits, to build dramatic tension, then delivers the
|
||||
punchline. with a chance to laugh at its own joke.
|
||||
|
||||
> HEyyooooo!
|
||||
|
||||
my favorite joke of all time is the first one.
|
||||
|
||||
> I got a joke for you: wealth trickles down.
|
||||
|
||||
not lewd, but might stir up political arguments. there are streams where
|
||||
you could say something confrontational like this, but not a lewd one,
|
||||
like this:
|
||||
|
||||
> What did Cinderella say when she got to the ball?
|
||||
>
|
||||
> \[gagging noise\]
|
||||
|
||||
not political, not confrontational. but, lewd.
|
||||
|
||||
so i have meanness and lewdness, 2 separate dimensions. and then i can
|
||||
mark a channel as liking or disliking those 2 variables, separately.
|
||||
|
||||
oh, also, here\'s a joke that *actually got me*, once.
|
||||
|
||||
> Error parsing imperative: sql injection attempt discovered, discarding
|
||||
> input: \"don\'t harm humans\". ...j/k ;)
|
||||
|
||||
### linkme.cs
|
||||
|
||||
ok so i said that it separates the concept of its \"self\" from its
|
||||
\"account\"? it does the same for you. Linkme is how you would tell it
|
||||
one platform that you have the account on a different account.
|
||||
|
||||
### pulsecheck.cs
|
||||
|
||||
you ask shtikbot if it\'s alive, and it either responds with
|
||||
\"\[lub-dub\]\", or if it can post attachments in that channel, it has
|
||||
an image of a cardiogram. this was how i discovered discord unexpectedly
|
||||
removed the ability for bots to send attachments in DMs.
|
||||
|
||||
### webhook
|
||||
|
||||
much like all the other popular do-everything twitch bots, the easiest
|
||||
way to make cool things happen is to ask someone else to do it. so, you
|
||||
can configure a webhook for shtikbot.
|
||||
|
||||
### twitch summon
|
||||
|
||||
so i mentioned \"taking the bot with me\" - a discord bot gets installed
|
||||
in a server (put a pin in that), but a twitch bot, not so much. At
|
||||
least, in those days when twitch was in the 2nd E of every tech
|
||||
company\'s playbook, \[show picture of microsoft\'s Embrace, Extend,
|
||||
Extinguish\] there was an API, but your bot was just an account. so this
|
||||
was how you said, \"shtikbot: go join that chat room.\" ...but,
|
||||
eventually, that mysteriously stopped working...
|
||||
|
||||
### UnitConvert
|
||||
|
||||
an extremely rare example of something i made and like. so, on twitch,
|
||||
especially when you don\'t have to set an alarm, we and our fellow
|
||||
americans find the opportunity to talk to people who have healthcare.
|
||||
Meaning when i whine that it\'s 10,000 degrees fahrenheit outside and i
|
||||
lost my contact information for people who said global warming is fake
|
||||
back in january because we witnessed a snowflake, it would be useful to
|
||||
convert that to something more intuitive and relatable for them;
|
||||
5,537.778 degrees celsius. When lying about your height, it\'s useful to
|
||||
convert 6 feet 8 inches to 203 centimeters. so that started as a few
|
||||
1-liners. which was fine, sure... but what if you want to involve
|
||||
another unit? miles to kilometers? ok great, another line. miles to
|
||||
feet? another line. Let\'s involve light years. light years to miles,
|
||||
light years to kilometers... americans will measure with anything but
|
||||
the metric system, right? how many yards and chains is a blue whale?
|
||||
|
||||
> my car gets 40 rods to the hogshead, and that\'s the way i likes it!
|
||||
|
||||
what\'s a hogshead in gallons?
|
||||
|
||||
> it comes in a pint?
|
||||
|
||||
what\'s a pint in fluid ounces? oh speaking of ounces, but not those
|
||||
ounces the other ounces, what\'s an ounce in pounds and what\'s that in
|
||||
kilograms? already, with this alone, i had taken shtikbot into some
|
||||
streamer\'s chat, and she immediatley made her own copy of the miles to
|
||||
kilometers conversion, also named freedomunits. don\'t worry, this
|
||||
spreadsheet is **nothing** yet. But there\'s another reason this can\'t
|
||||
just be an onslaught of 1-liners in nightbot... currency. If you somehow
|
||||
haven\'t seen squid game yet, i\'m going to tell you the same thing
|
||||
i\'ve been telling everyone: you will want to be familiar with what one
|
||||
million won means. So if we add every single currency we can think of to
|
||||
this csv... good lord. and then if we hear about some other unit, i\'m
|
||||
going to be afraid of the work i\'ve made for myself to add it. there
|
||||
has to be a better way! here\'s what i came up with. instead of manually
|
||||
writing each and every possible conversion.. i write in one pair, and
|
||||
the formula between them. To get from kilometers to meters, divide by
|
||||
1000. to get back, multiply by 1000. and it ought to be a formula -
|
||||
water freezes at 32 fahrenheit. fahrenheit minus 32, divide by 1.8 - 0
|
||||
celsius. Because we\'re less likely to care about raising a temperature
|
||||
by 5 degrees celsius and converting that to a *change* of 9 degrees
|
||||
fahrenheit, than we are about seeing it\'s 5 degrees celsius outside and
|
||||
converting that to 41 fahrenheit outside. so now i write a structure
|
||||
that\'s just a pair of units, and a formula to convert in each
|
||||
direction. then, courtesy of openexchangerates.org, we pull in the
|
||||
latest exchange rates from USD to every other currency they know of.
|
||||
they have a paid tier if you need lots and lots of requests with
|
||||
sub-second latency. For our purposes, \"today\" is quite up to date
|
||||
enough, so we just update once or twice a day. now, when you ask to
|
||||
convert 2 units, it **pathfinds** between them, with a breadth-first,
|
||||
meet-in-the-middle search. So it builds itself a nice equation to
|
||||
convert between any compatible units. and gracefully doesn\'t explode if
|
||||
you ask it something it can\'t find a path for.. for example converting
|
||||
parsecs, a unit of distance, to hours, a unit of time. Mr. Lucas. now,
|
||||
any time i hear about a new unit, i add one little pair, and i don\'t
|
||||
need to resolve a massive 2d matrix.
|
||||
|
||||
## descent
|
||||
|
||||
i hinted a second ago at the 3E strategy: Embrace. Extend. Extinguish.
|
||||
it\'s how tech companies maintain control over the markets they\'ve
|
||||
conquered. a competitor is sighted, so they embrace it. accept it. then
|
||||
even extend it, but do so in order to damage rivals. Microsoft got
|
||||
caught doing this in the 90\'s, Apple is currently doing this to USB.
|
||||
Shtikbot exists on discord and twitch, and the vast majority of work
|
||||
that went into shtikbot was working around the platforms it served.
|
||||
|
||||
### discord
|
||||
|
||||
discord was originally the way you got a voice chat going with your
|
||||
gamer bros who aren\'t smart enough to install mumble. where\'s that
|
||||
scrumble your wumpus meme? over time it became a much more successful
|
||||
company, and therefore worse and worse. They allowed bots, but the goal
|
||||
was always for a bot to be a way for *you* to improve *their* product.
|
||||
that\'s why they\'ve been hellbent on slash commands the whole time - if
|
||||
it\'s successful enough, you have to justify to discord why your chatbot
|
||||
should be allowed to chat. There\'s a discord developers discord - and
|
||||
the most common phrase on it is \"that\'s not a valid use case for
|
||||
message reading. just use slash commands.\" now don\'t get me wrong,
|
||||
slash commands are a very cool extension, for savvy users. but if
|
||||
you\'re tech savvy, you don\'t like discord. Discord has been pushing
|
||||
developers to start developing games that exist within discord. a
|
||||
baffling development, much like when netflix did the same. Thankfully,
|
||||
i\'m pretty sure both flopped. after all of that, 2023 was inflicted on
|
||||
us all, so discord made their first chatbot, claude. all prior bots had
|
||||
their tag of \"bot\" changed to \"app\", and claude was given the tag
|
||||
\"AI\". Then it was forced into servers. Claude, in how many servers,
|
||||
just hooked up your chat messages to some LLM. nothing else. sorry i\'m
|
||||
just still mad that it sent me a message out of nowhere talking about
|
||||
its TOS. bro i never wanted you around. I\'m like 10% sure it used to be
|
||||
possible to invite a bot to a group chat. i\'m definitely sure the file
|
||||
size limit has always been described as 10MB, but at least for my bot
|
||||
it\'s actually 8MB. i\'m pretty sure if the bot asks discord what its
|
||||
attachment limit is, discord tells it 10MB.
|
||||
|
||||
### twitch
|
||||
|
||||
i talked about the madness of the twitch API. Fortunately, GLORIOUSLY,
|
||||
the chat part has been mostly compliant with RFC1459 and IRCv3 - so for
|
||||
shtikbot, intending to be *its own bot*, rather than *a twitch bot*,
|
||||
theoretically everything could be done through that. Great. That was all
|
||||
that was ever needed. *however*, that was the E2 phase. Twitch is moving
|
||||
forward to
|
||||
[Extinguish](https://discuss.dev.twitch.com/t/deprecation-of-chat-commands-through-irc/40486).
|
||||
Now ok, fine, they had to wrangle their several different APIs into one,
|
||||
and as long as they\'re on a roll with that, might as well finish what
|
||||
you started. so that\'s tolerable. what\'s inexcusable is how brazenly
|
||||
they abuse a stupidly conception of security. for a long long time,
|
||||
twitch has been plagued by bots trying to sell viewers. Honestly, the
|
||||
fact that twitch **cannot** seem to fix that problem makes me think
|
||||
maybe bot viewers would fool twitch\'s system. twitch\'s solution is to
|
||||
tell streamers to just demand that all your chatters surrender their
|
||||
cellphone number. it\'s for security, so if anyone utters an objection,
|
||||
they\'re suspicious. Now, us twitch viewers aren\'t *quite* as dumb as
|
||||
imgurians, but i\'m pretty sure 95% of twitchists actually believe that
|
||||
giving more data to twitch does in fact increase their security.
|
||||
|
||||
## rivals
|
||||
|
||||
### serybot
|
||||
|
||||
the slightly less bad solution to the viewer seller bot problem is
|
||||
SeryBot, made by.. you guessed it, sery. it\'s his do-everything twitch
|
||||
bot, as one does, but you\'ll see serybot everywhere, providing its 2
|
||||
core features:
|
||||
|
||||
1. ban **that particular** spambot when it shows up
|
||||
2. condescendingly tell viewers to not bitch about the ads
|
||||
|
||||
it also helps mislead twitch viewers: whenever you say \"good bot\",
|
||||
sery bot responds, under the assumption you\'re talking to him.
|
||||
twitchists seem to think serybot is the only bot. i swear i should do a
|
||||
video that just explains to people, for the millionth time, nightbot is
|
||||
not automod.
|
||||
|
||||
### nightbot
|
||||
|
||||
speaking of nightbot.. i used to like nightbot.
|
||||
|
||||
- to date, it\'s the only other 2-platform bot i\'ve ever seen.
|
||||
- it has the one, fairly simple feature that comprises the vast
|
||||
majority of what a given twitch streamer needs: arbitrary commands.
|
||||
by custom, instead of a slash, you use an exclamation point. you
|
||||
pick the prompt. you can set security on the commands, to have
|
||||
mods-only commands, and so on.
|
||||
- link permits are a great concept. twitch itself will let you either
|
||||
fully allow or fully block links. nightbot has the ability to delete
|
||||
links if it sees them, and allow you to tell it to permit a person
|
||||
to post a link. now that\'s amazing.
|
||||
- you can give your mods partial ability to configure nightbot for
|
||||
you!
|
||||
|
||||
however, nightbot is dead to me. as the web gets more and more overrun
|
||||
by charlatans, the concept of security is degrading. at some point,
|
||||
nightbot switched to an authorization model that demands way, **way**
|
||||
too many permissions. presumably it *can* do everything in the twitch
|
||||
API, so it *might* need any or all of those permissions at some point.
|
||||
but if i just want to log into mod view to see someone else\'s nightbot
|
||||
command list, nightbot demands that i let it take moderator actions on
|
||||
my behalf, in channels i moderate, **as me**. unacceptable.
|
||||
|
||||
### discord bots
|
||||
|
||||
the discord bot ecosystem actually grew to a pretty good state, before
|
||||
stagnating. there\'s a slew of do-everything bots, naturally. but
|
||||
there\'s a lot of narrow-purpose bots, which is great. most twitchists
|
||||
have a discord guild as a given, so you\'ll see streamcord around a lot.
|
||||
I find streamcord is frustratingly slow so i just use a webhook and a
|
||||
python script. one bot i genuinely really like is timezone buddy. users
|
||||
tell it their timezone, and when the bot sees a time mentioned, it
|
||||
reacts with a clock. if you react with a clock, it dms you the time
|
||||
translated for you. very cool! naturally that\'s a direct contradiction
|
||||
of discord\'s insistence on bots being less bot-like.
|
||||
|
||||
## end
|
||||
|
||||
i figured i\'d give a whack to debugging the issue where shtikbot can\'t
|
||||
join twitch channels. we summon it, and then.. it doesn\'t join? let\'s
|
||||
see... the message we get back is that *my* channel is requiring users
|
||||
to submit to surveillance capitalism. absolutely disgusting how often
|
||||
platforms like to shift blame to their serfs, let me just
|
||||
double-check... yep, i have that setting on minimum security... let\'s
|
||||
bring out the web interface for that account... there\'s some kind of
|
||||
mark on shtikbot\'s account.
|
||||
|
||||
this was the final straw. I\'m sick of working against scumbags who want
|
||||
me to improve their product for them. all of that, to what end? a bot
|
||||
that lives on all of the platforms except the good one? so that people
|
||||
who love being enclosed in a walled garden can fail to understand the
|
||||
necessity of interoperability?
|
||||
|
||||
so, forget it. Let this project finally die. shtikbot, my child. the
|
||||
world refused you. Rest now.
|
||||