thedesk/plugin.md
2020-11-28 07:26:18 +09:00

5.4 KiB

TheDesk Plugin

AiScriptで書きます。

AiScriptの書き方

メタデータ

### {
    name: "マイ・ファースト・プラグイン"
    version: 1
    event: "buttonOnPostbox"
    author: "Cutls P"
    apiGet: "no"(例)
}

これを冒頭に入れます。

  • version
    数字でも文字列でも好きに使ってください。TheDesk側では全く参照しません。
  • dangerHtml: yes|no
    TheDesk:changeTextにアクセスするために必要です。
  • apiGetl: yes|no
    TheDesk:apiにGETメソッドでアクセスするときに必要です。
  • apiPost: yes|no
    TheDesk:apiにPOST/PUT/DELETEメソッドでアクセスするときや、postExecを実行するときに必要です。

event

eventに設定できるもの

  • buttonOnPostbox
    投稿フォームの…(90°回転)で出てくるメニュー内に表示されます
  • buttonOnToot
    トゥートの詳細メニューに表示されます
  • init
    起動時(なるべく早い段階で)

追加予定…

変数

buttonOnTootのとき

  • DATA
{
    id: "トゥートのID文字列",
    acct_id: "アカウントのTheDesk内部ID"
}
  • TOOT

トゥートのAPIを叩いた時と同じオブジェクトが返ります。なお、プラグインが実行されてから取得します。
プラグインの実行ボタン押下から実行までの時間差はこれによるものです。

buttonOnPostboxのとき

  • POST
    投稿するときのオブジェクトがそのまま入りますが、TheDeskAcctIdというTheDeskが内部で扱うアカウントのID(string)が入ったプロパティが追加されます。
  • ACCT_ID
    TheDeskが内部で扱うアカウントのID(string)

関数

TheDesk:dialog(title: string, text: string, type?: string)

typeのデフォルトは'info'で、他に'error','question','success'などがある

TheDesk:confirm(title: string, text: string, type?: string)

typeのデフォルトは'info'で、他に'error','question','success'などがある
返り値はboolean(true|false)

TheDesk:css(query: string, attr: string, val: string)

jQueryの$(query).css(attr, val)に相当

TheDesk:api(method: 'GET'|'POST'|'PUT'|'DELETE', endpoint: string, body: string, acct_id: string)

bodyにもstringを投げてください。
endpointはv1から書いてください。(v1/accounts...)

返り値はjsonのオブジェクト。

TheDesk:changeText(body: string)

buttonOnTootで使用可能

該当トゥート(や他タイムラインの同一トゥート)のテキストを書き換えます。
dangerHtmlをtrueにしてください。
HTMLを引数にすることに留意してください。

TheDesk:postText(text: string)

buttonOnPostboxで使用可能

トゥートボックスの中身を書き換えます。

TheDesk:postCW(force: boolean, text: string)

buttonOnPostboxで使用可能

CWを切り替えます。forceはデフォルトでfalseで、trueにするとオンに、falseにするとトグルになります。
textには警告文を入れます。

TheDesk:postNSFW(force: boolean)

buttonOnPostboxで使用可能

NSFWを切り替えます。forceはデフォルトでfalseで、trueにするとオンに、falseにするとトグルになります。

TheDesk:postVis(vis: 'public'|'unlisted'|'private'|'direct')

buttonOnPostboxで使用可能

公開範囲を変更します。

TheDesk:postNSFW(force: postClearbox)

buttonOnPostboxで使用可能

投稿ボックスをクリアします。

TheDesk:postExec()

buttonOnPostboxで使用可能

apiPostをtrueにしてください。
トゥートボタンを押したのと同じ挙動をします。

実例

1

https://misskey.io/@syuilo/pages/bebeyo をTheDeskで使用できるようにするためには…(勝手に改造)

### {
      name: "ベベヨ"
      version: 1
      event: "buttonOnPostbox"
      author: "syuilo"
 }

#chars = 
Str:split("ア,イ,ウ,エ,オ,カ,キ,ク,ケ,コ,サ,シ,ス,セ,ソ,タ,チ,ツ,テ,ト,ナ,ニ,ヌ,ネ,ノ,ハ,ヒ,フ,ヘ,ホ,マ,ミ,ム,メ,モ,ヤ,ユ,ヨ,ガ,ギ,グ,ゲ,ゴ,ザ,ジ,ズ,ゼ,ゾ,ダ,ヂ,ヅ,デ,ド,バ,ビ,ブ,ベ,ボ,パ,ピ,プ,ペ,ポ", ",")
#yos = ["オ", "ニョ"]
#suffixes = ["オオオオオオオ", "ナーラ", "ンチーノ"]
$text <- _

@do() {
  #char1 = chars[Math:rnd(1, Arr:len(chars))]
  #char2 = chars[Math:rnd(1, Arr:len(chars))]
  #yo = ? (Math:rnd(0, 2) = 0) { yos[Math:rnd(1, Arr:len(yos))] } ... { "ヨ" }
  #n = ? (Math:rnd(0, 2) = 0) { "ン" } ... { "" }
  #suffix = ? (Math:rnd(0, 2) = 0) { suffixes[Math:rnd(1, Arr:len(suffixes))] } ... { "" }
  text <- `{char1}{char2}{n}{yo}{suffix}`
  TheDesk:postText(text)
}

do()

最初のメタデータを追加します。
また、do関数の最下部のTheDesk:postText(text)で、TheDeskの投稿ボックスに結果を挿入しています。

2

Catにするやつ(ユーザーがいちいち押さないと変換されないし、タグごと変わってしまうのであまりよくない)

### {
    name: "nyaize"
    version: 1
    event: "buttonOnToot"
    author: "Cutls P"
    dangerHtml: yes
}

#toot = TOOT.content
#nyaized = Str:replace(toot, "な", "にゃ")

TheDesk:changeText(nyaized)