hilf mit beim Übersetzen

Dieses Dokument wurde von der Community übersetzt. Dokumentation hier übersetzen: Crowdin Vielen Dank für die Mitarbeit🙏

AiScript Misskey-Erweiterung API Referenz

In diesem Abschnitt wird die erweiterte AiScript-API in Misskey vorgestellt.

Hinweis

Die Standard-AiScript-API finden gibt es hier (https://aiscript-dev.github.io/guides/get-started.html).

Gemeinsame Konstanten für alle Felder

USER_ID

ID des aktuellen Benutzers

USER_NAME

Name des aktuellen Benutzers.

USER_USERNAME

Das Handle des aktuellen Benutzers (der Teil nach dem @. (z. B. @[email protected]ai)

CUSTOM_EMOJIS

Liste der benutzerdefinierten EmojiDie folgenden Objekte werden in Arrays gespeichert

type EmojiSimple = {
  aliases: string[];
  name: string;
  category: string | null;
  url: string;
  localOnly?: boolean;
  isSensitive?: boolean;
  roleIdsThatCanBeUsedThisEmojiAsReaction?: string[];
}

LOCALE

Aktuelle Misskey Web Einrichtungssprache. Darstellung in einem RFC4646-kompatiblen Format (z. B. ja-JP)

SERVER_URL

Aktuelle Server-URLRepräsentiert durch z. B. https://www.example.com.

Gemeinsame Funktionen in allen Bereichen

Mk:dialog(title, text, type)

Zeigt ein Dialogfenster an. Die folgenden Werte können für ype eingestellt werden.
info success warning error question
Standard ist info¸ wenn kein anderes Attribut erstellt wurde.

Mk:confirm(title, text, type)

Zeigt ein Dialogfenster an. Für type können die folgenden Werte eingestellt werden.
info success warning error question
Standard ist question¸ wenn kein anderes Attribut erstellt wurde.
Gibt true zurück, wenn der Benutzer „OK“ wählt oder false, wenn der Benutzer „Cancel“ wählt.

let response = Mk:confirm(
  'Bist du sicher?'
  'Dieser Vorgang kann nicht rückgängig gemacht werden.'
  'warning'
)

if (response) {
  // OK, bestätigen
} else {
  // Abbruch
}

Mk:api(endpoint, params, token?)

Sendet eine Misskey API-Anfrage. Der erste Parameter gibt den API-Endpunkt an, der zweite die Anfrageparameter als Objekt.

Als drittes Argument kann auch ein token angegeben werden. Bei der Arbeit mit Plugins wird, wenn im Metadatenblock „Berechtigungen“ angegeben sind, das Token mit der Berechtigung verwendet, wenn das dritte Argument nicht angegeben ist.

Hinweis

Eine Liste der Berechtigungen gibt es hier.

### {
  name: "プラグイン名",
  version: "4.2.1",
  author: "作者名",
  description: "説明文",
  permissions: ['write:notes'],
}

@onClick() {
  let res = Mk:api('notes/create', {
    text: 'Hello from plugin!'
  })
}

Mk:save(key, value)

Speichert einen beliebigen Wert dauerhaft unter einem beliebigen Namen. Der gespeicherte Wert bleibt auch nach Verlassen des AiScript-Kontexts erhalten und kann mit Mk:load ausgelesen werden.

Mk:load(key)

Läd den Wert des gegebenen Schlüssels, der zuvor mit Mk:save gespeichert wurde

Mk:remove(key)

*Verfügbar ab v2025.1.0 (vorläufig).

Läd den Wert des gegebenen Schlüssels, der zuvor mit Mk:save gespeichert wurdeWenn der Wert mit dem angegebenen Namen nicht existiert, wird nichts unternommen.

Mk:url()

Ermittelt die URL der aktuell geöffneten Seite (die URL, die in der Adressleiste des Browsers angezeigt wird).

Mk:nyaize(text)

Verkleinert den angegebenen Text. MFM-Syntax etc. werden nicht berücksichtigt.

Plug-in Beispiele

Plugin:register_post_form_action(title, fn)

Fügt dem Beitragsfenster eine Aktion hinzu. Das erste Argument ist der Name der Aktion und das zweite Argument ist die Callback-Funktion, wenn die Aktion ausgewählt wird.
Die Callback-Funktion erhält als erstes Argument den Text und cw der übermittelten Formularobjekte und als zweites Argument die Funktion, die sie umschreiben soll.

Plugin:register_post_form_action('メニューに表示される項目名', @(note, rewrite) {

  // ノートに何らかの変更を加える
  rewrite('text', `{note.text}{Str:lf}#ハッシュタグ`)
})

Plugin:register_note_action(title, fn)

Fügt dem Notiz-Menü ein Listenelement hinzu. Das erste Argument ist der Name des Elements und das zweite Argument ist die Callback-Funktion, wenn das Element ausgewählt ist.
Der Callback-Funktion wird als erstes Argument ein Ziel-notizen-Objekt übergeben.

Plugin:register_note_action('メニューに表示される項目名', @(note) {

  // ノートを使って何かする
  Mk:api('notes/create', {
    text: '引用'
    renoteId: note.id
  })

Plugin:register_user_action(title, fn)

Fügt dem Benutzer-Menü ein Listenelement hinzu. Das erste Argument ist der Name des Elements und das zweite Argument ist die Callback-Funktion, wenn das Element ausgewählt ist.
Der Callback-Funktion wird ein Zielbenutzerobjekt als erstes Argument übergeben.

Plugin:register_note_action('メニューに表示される項目名', @(note) {

  // ノートを使って何かする
  Mk:api('notes/create', {
    text: '引用'
    renoteId: note.id
  })

Plugin:register_note_view_interruptor(fn)

Schreibt die in der Benutzeroberfläche angezeigten Notizinformationen um.
Der Callback-Funktion wird als erstes Argument ein Ziel-notizen-Objekt übergeben.
Die Notiz wird in den Rückgabewert der Callback-Funktion umgeschrieben.
Die Rückgabe von null blendet die Notiz aus.

Plugin:register_note_view_interruptor(@(note) {
  
  // ノートの中身を書き換える
  note.text = note.text.replace('リンゴ', 'バナナ')

  // nullを返すと非表示
  if (note.text.incl('納豆')) {
    return null
  }

  return note
})

Plugin:register_note_post_interruptor(fn)

Die Informationen zur Notiz werden beim Einreichen der Notiz neu geschrieben.
Der Callback-Funktion wird als erstes Argument ein Ziel-notizen-Objekt übergeben.
Die Notiz wird in den Rückgabewert der Callback-Funktion umgeschrieben.

Plugin:register_note_post_interruptor(@(note) {
  
  // ノートの中身を書き換える
  note.text = note.text.replace('リンゴ', 'バナナ')

  return note
})

Plugin:register_page_view_interruptor(fn)

Die Seiteninformationen werden neu geschrieben, wenn die Seite angezeigt wird.
Der Callback-Funktion wird ein Ziel-Seitenobjekt als erstes Argument übergeben.
Die Seite wird mit dem Rückgabewert der Callback-Funktion neu geschrieben.

Plugin:register_note_post_interruptor(@(page) {
  
  // ページの中身を書き換える(省略)

  return page
})

Plugin:open_url(url)

Die als erstes Argument übergebene URL wird in einer neuen Registerkarte des Browsers geöffnet.

Plugin:config

Ein Objekt, dass die Plugin-Einstellungen enthält. Die in den Plugin-Einstellung eingetragenen Werte sind hier unter den Einstellungsnamen gespeichert.

Play Attribute

THIS_ID

Play erstellen

THIS_URL

Play URL

UI-Steuerungsfunktionen (verfügbar für Play- und AiScript-App-Widgets)

Ui:root

Stammelement der Benutzeroberfläche.

Ui:render([ ...components ])

Syntaktischer Zucker für Ui:root.update({ children: [ ...components ] }). Das UI-Root-Element wird überschrieben.

Ui:render([
  Ui:C:text({text: "A"})
  Ui:C:button({text: "B", onClick: @(){}})
])

Ui:get(id)

ID-zugewiesene Komponenten abrufen und Aktionen durchführen.

Ui:C:text({text: "A"}, "text1")
Ui:get("text1").update({text: "B"})

Komponentenfunktionen (verwendbar mit Play und AiScript App-Widgets)

In den folgenden Elementen kann beim Initialisieren die ID der Komponente als zweites Argument wie Ui:C:xxx(props id) angegeben werden (in den folgenden Referenzen wird dies überall weggelassen). Die angegebene ID kann mit der Funktion Ui:get(id) abgerufen und mit der update-Funktion direkt geändert werden (weitere Informationen findest du in der Referenz zu Ui:get(id)).

Listenmodus

Ui:C:container

Ein Rahmen (Container), der Formatierungen wie Einrücken und Farbgebung ermöglicht.

Ui:C:container({
  children: [
    // コンテナの中に入れたいコンポーネントの配列
    Ui:C:text({text: "A"})
  ]
  align: 'center' // 幅寄せ left,center,right
  bgColor: '#000' // 背景色
  fgColor: '#00f' // 文字色
  font: 'serif' // フォント serif,sans-serif,monospace
  borderWidth: 1 // 枠幅
  borderColor: '#f00' // 枠の色
  borderStyle: 'solid' // 枠の柄
  padding: 1 // 余白幅
  rounded: false // 角を丸く
  borderRadius: 1 // 角を丸く(丸みの度合いを数値指定)
  hidden: false // 隠す
})

Ui:C:folder

Ein Akkordeon-Element (ein Container, den Benutzer öffnen und schließen können)

Ui:C:folder({
  children: [
    // コンテナの中に入れたいコンポーネントの配列
    Ui:C:text({text: "A"})
  ]
  title: "タイトル" // フォルダの開閉部分に記載するタイトル
  opened: true // はじめから開いているか
})

Text

Ui:C:text

Unformatierter Text

Ui:C:text({
  text: "Inhalt" // Anzuzeigender Text
  size: 1 // Schriftgröße
  bold: false // Fettgedruckt
  color: '#000' // Farbe
  font: 'monospace' // Schriftart serif, sans-serif, monospace
})

Ui:C:mfm

MFM-Text

Ui:C:mfm({
  text: "Inhalt" // Anzuzeigender Text
  size: 1 // Schriftgröße
  bold: false // Fettgedruckt
  color: '#000' // Farbe
  font: 'monospace' // Schriftart serif, sans-serif, monospace
  onClickEv: @(id) {
    // MFM-Syntax-Handler für $[clickable.ev=eventId TEXT]
    <: `{id} angeklickt`
  }
})

Formulare

Ui:C:button

Schaltflächen

Ui:C:button({
  text: "Button" // Anzuzeigender Text auf dem Button
  onClick: @() {
    // Event beim Drücken des Buttons
  }
  primary: false // Soll eine Farbe hinzugefügt werden?
  rounded: false // Sollen die Ecken abgerundet sein?
  disabled: false // Soll der Button deaktiviert sein?
})

Ui:C:buttons

Schaltflächen (nebeneinander)

Ui:C:buttons({
  buttons: [ // Array von Button-Definitionen. Die Angabe der Props erfolgt wie bei Ui:C:button
    {text: "a", onClick: @(){...}}
    {text: "b", onClick: @(){...}}
  ]
})

Ui:C:switch

Ui:C:switch({
  onChange: @(enabled) { 
    // Event, wenn der Zustand geändert wird. Das erste Argument ist der neue Zustand (Boolean)
  }
  default: false // Standardwert
  label: "Label" // Text neben dem Schalter
  caption: "Caption" // Hilfetext, der unter dem Schalter angezeigt wird
})

Ui:C:textInput

Einzeilige Texteingabe

Ui:C:textInput({
  onInput: @(text) {
    // Event, wenn Text eingegeben wird. Das erste Argument ist der neue Wert
  }
  default: "Standard" // Standardwert
  label: "Label" // Text über dem Eingabefeld
  caption: "Caption" // Hilfetext, der unter dem Eingabefeld angezeigt wird
})

Ui:C:numberInput

Einzeilige Texteingabe

Ui:C:numberInput({
  onInput: @(number) {
    // Event, wenn eine Zahl eingegeben wird. Das erste Argument ist der neue Wert
  }
  default: "Standard" // Standardwert
  label: "Label" // Text über dem Eingabefeld
  caption: "Caption" // Hilfetext, der unter dem Eingabefeld angezeigt wird
})

Ui:C:textarea

Mehrzeiliges Texteingabefeld

Ui:C:textarea({
  onInput: @(text) {
    // Event, wenn Text eingegeben wird. Das erste Argument ist der neue Wert
  }
  default: "Standard" // Standardwert
  label: "Label" // Text über dem Eingabefeld
  caption: "Caption" // Hilfetext, der unter dem Eingabefeld angezeigt wird
})

Ui:C:select

Ein Format, bei dem aus mehreren Werten einer ausgewählt wird.

Ui:C:select({
  items: [ // Array von Auswahlmöglichkeiten. Für text den anzuzeigenden Text und für value den Wert, der beim Ereignis übergeben wird
    {text: "A", value: "v1"}
    {text: "B", value: "v2"}
  ]
  onChange: @(value){
    // Event bei Änderung. Das erste Argument ist der neue value
  }
  default: "v1" // Standardwert für value
  label: "Label" // Text über dem Eingabefeld
  caption: "Caption" // Hilfetext unter dem Eingabefeld
})

Verwandt mit dem Veröffentlichen von Notizen

Ui:C:postForm

Ein Einreichungsformular direkt in Play einbetten.

Ui:C:postForm({
  form: {
    cw: "CW-Anmerkung" // Text für die "Zusammenfassung", wenn CW angegeben wird
    text: "Inhalt des Beitrags" // Standardtext des Eingabeformulars

    // Folgendes kann ab Misskey v2024.5.0 angegeben werden
    visibility: "home" // Standard-Sichtbarkeit des Beitrags (wenn nicht angegeben, öffentlich)
    localOnly: false // Standardmäßig keine Föderation (wenn nicht angegeben, false)
  }
})

Ui:C:postFormButton

Ein spezieller Button, der ein Einreichungsformular aufruft.

Ui:C:postFormButton({
  text: "Post!" // Anzuzeigender Text auf dem Button
  primary: false // Soll eine Farbe hinzugefügt werden?
  rounded: false // Sollen die Ecken abgerundet sein?
  form: {
    cw: "CW-Anmerkung" // Text für die "Zusammenfassung", wenn CW angegeben wird
    text: "Inhalt des Beitrags" // Standardtext des Eingabeformulars

    // Folgendes kann ab Misskey v2024.5.0 angegeben werden
    visibility: "home" // Standard-Sichtbarkeit des Beitrags (wenn nicht angegeben, öffentlich)
    localOnly: false // Standardmäßig keine Föderation (wenn nicht angegeben, false)
  }
})