-
-
Notifications
You must be signed in to change notification settings - Fork 35
プラグイン
AiScriptで書きます。
以下のドキュメントは一部v23向けのAiScript構文でのみ有効な内容を含んいます。v24で採用しているAiScirptは根幹の構文が違うため、詳しくはAiScript の書き方を読んでください。
### {
manifest: 1
name: "マイ・ファースト・プラグイン"
version: 1
event: "buttonOnPostbox"
author: "Cutls P"
apiGet: no
}
これを冒頭に入れます。
- manifest
1 を指定してください。無ければ 1 とみなします。 - version
数字でも文字列でも好きに使ってください。TheDesk 側では全く参照しません。 - dangerHtml: boolean
TheDesk:changeText
にアクセスするために必要です。 - apiGet: boolean
TheDesk:api
またはTheDesk:getRequest
に GET メソッドでアクセスするときに必要です。 - apiPost: boolean
TheDesk:api
に POST/PUT/DELETE メソッドでアクセスするときや、postExec
を実行するときに必要です。 - shortcut: number
Alt+{number の keycode}で発火できるようにします。キーコード一覧
event
がinit
,buttonOnBottom
,buttonOnPostbox
,none
のときにのみ有効です。 - interval: number
event
がtips
のとき、更新間隔をミリ秒で指定します。
event に設定できるもの
-
buttonOnPostbox
投稿フォームの…(90° 回転)で出てくるメニュー内に表示されます -
buttonOnToot
トゥートの詳細メニューに表示されます -
init
起動時(なるべく早い段階で) -
buttonOnBottom
メニューボタン(画面下部)の右に追加されます。 -
tips
TheDesk Tipsに追加します。 -
none
明示しません。ショートカットでのみ発火します。
追加予定…
- DATA
{
id: "トゥートのID文字列",
acct_id: "アカウントのTheDesk内部ID"
}
- TOOT
トゥートの API を叩いた時と同じオブジェクトが返ります。なお、プラグインが実行されてから取得します。 プラグインの実行ボタン押下から実行までの時間差はこれによるものです。
- POST
投稿するときのオブジェクトがそのまま入りますが、TheDeskAcctId
という TheDesk が内部で扱うアカウントの ID(string)が入ったプロパティが追加されます。 - ACCT_ID
TheDesk が内部で扱うアカウントの ID(string)
type のデフォルトは'info'で、他に'error','question','success'などがある
type のデフォルトは'info'で、他に'error','question','success'などがある
返り値は boolean(true|false)
jQuery の$(query).css(attr, val)
に相当
リンクを無確認で開きます。
TheDesk:api(method: 'GET'|'POST'|'PUT'|'DELETE', endpoint: string, body: string | null, acct_id: string)
endpoint はv1
から書いてください。(v1/accounts...
)
返り値は json のオブジェクト。
endpoint はhttps://
を省いて書いてください。(HTTPSにリクエストを限定するため)
返り値はjson
がtrueなら json のオブジェクト。falseならstring(テキストとして処理)
buttonOnToot
で使用可能
該当トゥート(や他タイムラインの同一トゥート)のテキストを書き換えます。
dangerHtml
を true にしてください。
HTML を引数にすることに留意してください。
p, span, br, a タグを利用できます。また、a タグには'href', 'class', 'rel', 'target'属性以外を入れることはできず、 href の最初が javascript:で始まるものも利用できません。
tips
で使用可能
Tipsのコンテンツを書き換えます。
dangerHtml
を true にしてください。
HTML を引数にすることに留意してください。
p, span, br, a, img タグを利用できます。また、a タグには'href', 'class', 'rel', 'target', 'style'属性以外を入れることはできず、 href の最初が javascript:で始まるものも利用できません。また、p, span, imgにはstyleを使用できます(imgは当然srcも可)
buttonOnPostbox
で使用可能
トゥートボックスの中身を書き換えます。
buttonOnPostbox
で使用可能
CW を切り替えます。force はデフォルトで false で、true にするとオンに、false にするとトグルになります。
text には警告文を入れます。
buttonOnPostbox
で使用可能
NSFW を切り替えます。force はデフォルトで false で、true にするとオンに、false にするとトグルになります。
buttonOnPostbox
で使用可能
公開範囲を変更します。
buttonOnPostbox
で使用可能
投稿ボックスをクリアします。
buttonOnPostbox
で使用可能
apiPost
を true にしてください。
トゥートボタンを押したのと同じ挙動をします。
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 の投稿ボックスに結果を挿入しています。
Cat にするやつ(ユーザーがいちいち押さないと変換されないし、タグごと変わってしまうのであまりよくない)
### {
name: "nyaize"
version: 1
event: "buttonOnToot"
author: "Cutls P"
dangerHtml: yes
}
#toot = TOOT.content
#nyaized = Str:replace(toot, "な", "にゃ")
TheDesk:changeText(nyaized)
BitFlyerのAPIを利用してTips部に3秒ごとにビットコインの価格を表示するやつ https://1m.cutls.com/@Cutls/105525654999148930
### {
name: "Bitcoinの値段を3秒ごとにTipsに表示するやつ"
version: 1
event: "tips"
author: "Cutls P"
dangerHtml: yes
apiGet: yes
interval: 3000
}
#json = TheDesk:getRequest("bitflyer.com/api/echo/price", yes)
#ask = json.ask
#mid = json.mid
#bid = json.bid
#text = `ASK: {ask} / MID: {mid} / BID: {bid}`
TheDesk:refreshTipsView(text)