artemis

art "semaphore" everfree

serotonergic daydream

prismatic swarm

fractal multitudes

evershifting

theta delta ampersand

bi/pan/poly

this user is a furry


Do you talk to the computer as if it could hear you? Does it ever talk back?


posts from @artemis tagged #discord

also:

scientists say: idk, anyone on the inside know?

on one paw: PK avatars are just a link to a URL i am pretty sure?? since u can give it a URL directly when u pk;member avatar instead of do an upload. and if you pk;member avatar with an upload image in the post it tells u that if u delete the post the avatar will break. so it is using the hotlink behavior i am pretty sure

HOWEVERE, on other paw, PK avatars are loaded by the discord client. and maybe discord will say "oh this is me asking me for my own pictures i guess this is fine" and either add the extra URL params or just allow it idk

shrugemoji

edit: i was also thinkin also if PK was changed to hold onto a link to the original post where the avatar change happened, maybe PK could requery when the attachment expires to get an updated link. but idk if that could be done retroactively. hopefuly they dont gota do that tho



I'm using cadence's fork of Half-Shot's bridge; they've added a lot of features to it compared to upstream. so initial impressions:

setup is kind of annoying. I already set up the appservice cause i bridge some other discords on my matrix server too, but yeah, to do this you either need to run your own matrix server, or know someone else willing to set up the bridge on their matrix server. That said, once they install the bridge and you invite it to your discord, they don't need to be involved anymore, unless you want to add it to another discord server later.

you need to join each channel one by one on the matrix side, then create a space for them, then add them all to the space manually (and adjust your channel notif settings for each). This sucks but was plenty doable. Consequently you also need to do this whenever you make a new channel (annoying) and clear out old ones manually (annoying but potentially good).

pluralkit replicates to matrix correctly! However, by default most matrix clients show "tombstones", stand-in indicators of a deleted message. this sucks with pluralkit. you can disable this in element, cant do it in all clients, but you really want this to make pk conversations look readable. Compare:

With deletes (default):

deletions spam in the chat

Without deletes (in Element: Settings > Preferences > Timeline > Show a placeholder for removed messages > Click to disable it):

no more

since matrix -> discord messages are just a webhook, there's no pluralkit integration proxying for messages we send in matrix. This is a feature I could technically add to the bridge. Since it's using webhooks just like pluralkit, it could also scan matrix messages for pluralkit proxy tags, and then implement proxying both on the discord and matrix side. On the matrix side it'd need to handle deleting/resending but that's probably fine. I'd need to add a way for a matrix user to send it a PK token to import the system from though. And I guess if, after building that, I extracted that bit out into its own thing I'd have a rudimentary pluralkit-for-matrix appservice.........

On the topic of adding features, I could also probably make it stop prefixing that [BOT] tag from discord to matrix.

Threads aren't implemented in the bridge right now. If you make a thread then only the title of the thread gets replicated to matrix.

You don't get backfill of history from messages before the bridge, naturally.

Kinda wish we'd set it up earlier, but glad we did it now. This should be enough to reconstruct most any conversation we'd want from data that's now in matrix as a backup. Or not even reconstruct, its right there, we can just look at it. So yeah, mission success!

Security Considerations Addendum

Security is mostly thru obscurity- anyone can join a channel but they need both your matrix server, your guild ID, and the channel ID, so its basically one-factor auth in that way (something you know). I guess you know our matrix server so if you manage to deduce our server ID and a channel ID then you can get in to a channel. I think the IDs have some component which is tied to time (dont quote me on that, its been awhile) which means through Math and Deduction based on Us Posting When We First Set It Up you can probably narrow down the number space quite a bit for the server ID, and the general channel ID. Enough to reasonably brute-force the possibility space? I dunno, maybe, guess it depends how fast my matrix server is...

Additionally I think that by default the appservice advertises the rooms publicly in your homeserver's room directory. It looks like we disabled that; i think the setting was

room:
  # Set the default visibility of alias rooms, defaults to "public".
  # One of: "public", "private"
  defaultVisibility: "private"

which we have in matrix-appservice-discord/config.yaml

Maybe there's a way to set these channels invite-only, but idk. Also if you were doing this on a matrix server you set up just for this and nothing else, you could disable federation entirely and just be done with it.



This was originally published in March 2021 on my website at https://artemis.sh/2021/03/21/your-antibot-is-not-accessible.html. I'm reposting it here in chost format.

While I did not explore it in the original post, I suggest considering this in synthesis with Discord Holds the Keys to Your Heart; Discord's staunch stance against client modifications has been a constant source of accessibility struggles for huge swathes of people, in the same way that game anti-cheat is. Thanks to @sapphicfettucine for pointing out this parallel to me. VRChat's move to using anticheat also falls into this problem space.

Abstract: Input sequencing and automation tools such as autohotkey scripts, hardware macros, auto-clickers, and turbo buttons are important accessibility tools that allow people with disabilities to play games they’d otherwise be unable to play. These tools are often banned in multiplayer titles, particularly MMORPGs, in the name of fairness and bot prevention. I argue that these tools should be allowed, or even implemented within the game itself. With the recognition that a line has to be drawn somewhere, I suggest that a tool should be classified as a bot only if it automatically makes meaningful decisions in response to stimuli provided directly by the game, creating a feedback loop that does not involve the player. Further, I suggest that in the games that can’t allow external tools fairly, first-party accessibility features can still make the game playable for more people.

1. Who needs these tools?