o76923, to random
@o76923@kitty.social avatar

I wish was documented somewhere. The play stuff would be a lot easier to work with if I had any idea what functions, syntax, and parameters were without having to look at other plays and guess.

linuxenjoyer, to random
@linuxenjoyer@blahaj.zone avatar

Presenting: Quick send, a Misskey (and forks) plugin! (Tested in Sharkey)

This plugin lets you quickly send notes to select users! ​:blobcat_spin:​

It works by adding users to a send list. Simply click the 3 dots on their profile (either on their profile page, or in the on hover preview), and at the very bottom you'll see an option to add them (or remove them).

Then, on any note, click on the 3 dots, and at the bottom you'll have a button for each user you've added. ​:neocat_bongo_down:​

There are also options for clearing the list, and in the plugin's settings you can tell it to ask for confirmation, or to show a success dialog box.

To install go to settings > plugins > install and paste the source code:

/// @0.18.0
// This is licensed under MIT
### {
    name: "Quick send"
    version: "1.0.1"
    author: "@linuxenjoyer@blahaj.zone"
    description: "Send a note to your besties quickly"
    permissions: [ "write:notes" ]
    config: {
     show_success: {
            type: "boolean"
            label: "Show success dialog"
            description: "Makes a dialog pop up saying that it was sent. I'm not exactly sure how to do error handling, this is more to make sure the plugin didn't randomly crash."
            default: false
        }

     ask_confirmation: {
            type: "boolean"
            label: "Ask for confirmation"
            description: "Asks you if your really want to send the post."
            default: false
        }
    }
}

@save(obj) {
    Mk:save("user_send_list", obj)
}


@load() {
    var ls = Mk:load("user_send_list")
    if (ls == null) {
        save({})
        ls = {}
    }

    ls
}

// Simple function to format a username
@formatUsername(user) {
    var username = `@{user.username}`

    if (user.host != null) {
        username = `{username}@{user.host}`
    }

    username
}

@sendNote(note, userId) {
    // This is based on blahaj.zone's api-doc (sharkey)
    let res = Mk:api("notes/create" {
        visibility: "specified"
        renoteId: note.id
        visibleUserIds: [ userId ]
    })

    // TODO: Figure out error handling
    true
}

@getAction(username, userId) {
    @(note) {
        var should_send = !Plugin:config.ask_confirmation
        if (!should_send) {
            should_send = Mk:confirm(`Send post to {user}?` "" "question")
        }

        if (should_send) {
            let ok = sendNote(note, userId)

            // This is a little ugly but idrk how to tidy it up
            if (ok) {
                if (Plugin:config.show_success) {
                    Mk:dialog(`Sent note to {username}`, "", "success")
                }
            } else {
                Mk:dialog(`There was an error sending the note to {username}`, "", "error")
            }
        }
    }
}

// Underscores bc it's in global scope
let __ls = load()
each (let usr, Obj:keys(__ls)) {
    Plugin:register_note_action(`Send to {usr}`, getAction(usr, __ls[usr]))
}

Plugin:register_user_action("Add user to send list", @(user) {
    let username = formatUsername(user)

    let ls = load()

    if (ls[username] != null) {
        Mk:dialog(`{username} is already on the send list`, "", "error")
    } else {
        ls[username] = user.id
        save(ls)
        Mk:dialog(`Added {username} to the send list!`, "You might have to refresh to see the changes", "success")
    }
})

Plugin:register_user_action("Remove user from send list" @(user) {
    let username = formatUsername(user)

    let ls = load()
    if (ls[username] == null) {
        Mk:dialog(`{username} is not on the send list`, "", "error")
    } else {
        ls[username] = null
        save(ls)
        Mk:dialog(`Removed {username} from the send list!`, "You might have to refresh to see the changes", "success")
    }
})

Plugin:register_note_action("Clear user send list" @(note){
    if (Mk:confirm("Are you sure you want to clear the list?", "There's no way to undo this", "warning")) {
        save({})
        Mk:dialog("List cleared", "You might have to refresh to see the changes", "success")
    }
})

Plugin:register_user_action("Clear user send list" @(user){
    if (Mk:confirm("Are you sure you want to clear the list?", "There's no way to undo this", "warning")) {
        save({})
        Mk:dialog("List cleared", "You might have to refresh to see the changes", "success")
    }
})

It'll ask for permissions to create notes (it needs this to be able to send stuff) ​:blobcat_code:​

If you found it useful or have feature ideas/patches let me know ​:neocat_melt_reach:​

salano_ym, to random

urlのエスケープ欲しい

murasa, to fediverse

Does anyone writing / Plays (coded in ) know how to set the privacy/visibility setting of the form in Ui:C:postFormButton? I know I can set a content warning with cw, but I have no idea about setting the default visibility of the note generated by the Play. ​:Blobhaj_Thinking:​

I plan to crudely recreate the "poking" function back in the good 'ol days of . What I have in mind is, the user inputs the handle of the user, and then generates a note with Direct visibility to the target handle, a CW containing I poked you! Click to see how to poke back, and then of course the text containing whatever instructions I would write. Shouldn't be too complicated I think.

box464, to random

I've collected all my work on and into one place! It should be useful to anyone using and (for now) as well.

If anyone has questions about AiScript or any of the features I've examined in blogs, happy to share what I've learned.

https://catodon.social/@box464/pages/forkey_docs

salano_ym, to random
minybolito, to random
@minybolito@peculiar.florist avatar

quelqu'un a une idée de comment écrire un script aiscript pour ouvrir un lien dans un nouvel onglet (c'est possible même ?)

j'ai regardé un peu la doc mais vraiment je trouve rien :((

c'est pour me faire un bouton en widget

brome,

@minybolito C'est frustrant, on sent qu'il y aurait plein de trucs à faire en AiScript, mais la doc est pour ainsi dire inexistante. 😓

ShittyKopper, to random

extremely meh workaround if your / timeline keeps jumping around every time you click on a post:

  • switch to deck layout
  • set default navigation method to "open in new window"

now every time you click on a post it'll open up as a psuedo-popup that you can then maximize. and that popup doesn't touch your timeline at all, meaning it'll stay where it is in the background

i wish there was a way to automatically maximize windows. maybe can take care of that? no idea

ShittyKopper,

here is a barely helpful image guide on how to do this.

deck is really cool btw you should play around with it

ShittyKopper, to fediverse

exploring (? ? no idea what features come from where) rn, so far:

  • the birthday input uses mm/dd/yyyy, 0/10 absolutely unplayable
  • the no notifications bird is judging me and I Do Not Like It (/s)
  • THERE'S AN RSS READER HERE?!
  • DRIVE????
  • tbf after seeing this has file uploads pages seems like no big deal. yeah sure why not
  • the follow requests menu wants my attention despite being empty (i think this is the only bug i've seen so far)
  • i have no idea if i'm supposed to be allowed to see the server metrics widget
  • i have no idea what is but it seems vaguely threatening (in an "i will accidentally mess something up" kinda way)
  • rose pine is such a comfy color scheme

i am so lost and i kinda like it

box464, to random

Happy 20th Birthday to Calckey's own @kainoa
If you can, celebrate the day by showing your appreciation with a $20 contribution to Calckey.

​:ablobbonetada:​ 🎂 ​:ablobbonetada:​

kainoa,

@box464 aaaaa thank you so much!!! 🥺

liaizon,
@liaizon@wake.st avatar

@kainoa @box464 oh dang happy birthday @kainoa!

box464, to random

Sooo I'm sitting in a hotel room kind of bored, decided to poke around with Calckey Pages and AiScript.

I'm not 100% sure this is going to work for y'all...but...try this out. It SHOULD list your own pages that you've created. Right now, there's a bug in Calckey where the pages kind of disappear 👻 after you save.

Would love to know what forgotten trash or treasures you find if it does work! I need some entertainment. 🗑️ 💎

https://calckey.social/@box464/pages/yourpages

box464, to random
@box464@mastodon.social avatar

Finishing up my Calckey Plugins week with a fun one. MFM (Misskey Flavoured Markdown) is quite an expressive art form and a great entry to coding, math, and styling (but having fun and not realizing your'e learning something) 🤫

Here I've created a plugin generator, which writes the AiScript code based on a few pieces of information provided by a user in a form.

https://box464.com/posts/calckey-snippets/

box464,
@box464@mastodon.social avatar

And here's the code. I hope to see this branched, forked and stolen extensively. Have fun with the idea, expand on it, and let's see what we can do.

https://codeberg.org/box464/calckey-plugin-generator

jovikowi,

@box464

Bwahahah I generated a snippet plugin with the snippet plugin generator's URL in it!

https://snips.box464.com/
Snippet by: @box464

box464, to random

I'm happy to announce my final Calckey Plugin for this series. It's actually more than a plugin. It's a plugin generator!

Create a plugin that stores your favorite MFM art, a signature, your favorite emoji chain, or common replies (great for admins, I think!)

I appreciate the input I received from the MFM creator community and I'm already seeing some great stuff being built based on this code.

Keep creating and keep having fun. 💗

https://box464.com/posts/calckey-snippets/

box464, to random

Are Calckey Pages and Misskey Pages the same thing? Or has Misskey gone in a different direction since the fork. Hard to follow what's happening here because it's mostly Japanese. Looks interesting tho! @kainoa @freeplay

https://misskey.io/play/9dy97kg3k0

box464, to random
@box464@mastodon.social avatar

Continuing my discovery of AiScript and Calckey Plugins with a new entry - “Lister”, which adds post actions in your timelines for adding accounts to your lists in a few clicks.

Check out the end of my blog post for some insights into the development process.

https://box464.com/posts/calckey-plugins-addtolist/

  • All
  • Subscribed
  • Moderated
  • Favorites
  • Leos
  • Durango
  • ngwrru68w68
  • thenastyranch
  • magazineikmin
  • hgfsjryuu7
  • DreamBathrooms
  • Youngstown
  • slotface
  • vwfavf
  • PowerRangers
  • everett
  • kavyap
  • rosin
  • anitta
  • khanakhh
  • tacticalgear
  • InstantRegret
  • modclub
  • mdbf
  • ethstaker
  • osvaldo12
  • GTA5RPClips
  • cubers
  • tester
  • normalnudes
  • cisconetworking
  • provamag3
  • All magazines