KQ_Expressions_Values_And_Variables - karno/StarryEyes GitHub Wiki

変数と値

フィルタは演算子と変数と値で構成されます。
演算子はExpressions - Operatorsにあるような、値や変数同士を比較するものです。

変数と値の違いはちょっと紛らわしいですが、こう考えてみてください。 値 は、どのようなツイートに対しても同じ値となります。
変数 は、そのフィルタを使ってツイートを評価する際に実際の値が代入されます。

たとえば、(rts > 5) というクエリにおいて、rtsは変数、5は値です。
rts は対象ツイートのリツイート数によって変化しますが、5はどんなツイートにおいても5です。

値と変数は実際はそれほど区別する必要はありません、気軽にご利用ください。

ノート: 値は多相性を持ちませんが、変数は多相性があるものがあります。

変数・値一覧

戻り値の型別に記載しています。複数の型がある変数については、末尾の「多相型」にまとめて記載しています。
値については「値です」と表記してあります。この表記が無いものに関しては変数です。

Boolean

Boolean 型の値を常に返すような変数です。
Boolean型には変数のみが存在します。

dm, isdm, is_dm, message, ismessage, is_message, directmessage, direct_message, isdirectmessage, is_direct_message

そのツイートがダイレクトメッセージであるかを判別します。

rt, retweet, isretweet, is_retweet

そのツイートがリツイートされたツイートであるかを判別します。
** rts, rted とは異なります。 **

Numeric

Numeric 型の値を常に返すような値・変数です。

ノート: 返信先のないツイートにおける inreplyto の数値などはすべて -1 になります。

数値

値です。数字をそのまま書くと、数値として扱われます。(例: 1234, 15147941)

id

そのツイートのIDを表現します。

replyto, reply_to, inreplyto, in_reply_to

返信先ツイートIDを示します。toとは異なります(toはユーザーIDを示します)。

String

String 型の値を常に返すような値・変数です。

文字列

値です。文字列は、二重引用符(")で囲んだ文字のことです。(例: "文字列")

文字列中に二重引用符を含める場合は、\(バックスラッシュ)を置きます。(例: "二重引用符は\"このように置きます")

text, body

そのツイートの本文を返します。

note: リツイートでも、 RT @~ は本文には含まれません。

via, from, source, client

そのツイートの送信元クライアントを返します。
リツイートに対してはそのリツイートがどのクライアントから行われたか、になります。

要望が多ければ、リツイートに対してもそのツイートの元ツイートがどのクライアントから行われたか、に対する変数を作成します。 が、この通りものすごくまどろっこしい表現になってしまうのでビミョウな感じです。

ユーザーオブジェクト

Expressions - User Objectにあるようなユーザーオブジェクトを常に返すような変数です。

user

そのツイートを行ったユーザーを表します。リツイートされたツイートの場合、元ツイートのユーザを表します。

retweeter

そのツイートをリツイートしたユーザーを表します。リツイートされたツイートでない場合は、この項を含む式の評価は偽になります。

@screen_name, #user_id

値です。Krileで一度でもそのユーザーのツイートを受信したことがあるユーザーについては、以下の記述が利用可能です。

  • @screen_name
  • #user_id

このうち、あなたがKrileに登録しているアカウントに関してはExpressions - Account Objectにあるようなアカウントオブジェクトとして扱うこともできます。

Set

Set 型の値を常に返すような値です。
現在のところ、Set型のみを返すものは値しか存在しません。(演算子との組み合わせによってはSetを返すこともできる多相型の変数は存在します。)

ユーザー列挙

値です。前述の数値及びユーザー/アカウント表現をまとめて、Set型とする記述が利用可能です。
たとえば、以下のように記述します: [#15147941, @kriletan]

この記述を用いることで、以下のような表記が行えます: from local where user in [@alice, @bob, @charlie, #12345678]

list

値です。特定のリストに登録されているユーザーを表します。ピリオドに続けて、リストオーナー名・リスト名を指定します。
たとえば、以下のように記述します:
list.karno.mafia, list.karno."後で殺す"
リスト名は、そのまま記述してもダブルクオート(")で括っても動作します。

この記述を用いることで、以下のような表記が行えます:
from local where user in list.karno.aliens, from local where !(user in list.karno.aliens)

重要: このフィルタでは、「リストに含まれるがフォローしていない」人のツイートは受信できません。
ソースクエリの list:"user/list" 表記をご利用ください。

NG例: from local where user in list.karno.notfollowedyet
OK例: from list:"karno/notfollowedyet"

多相型

複数の型を持つ変数です。どの型に決定されるかは演算子に依存します。
多層型には変数のみが存在します。

to, mention

返信先を示します。

この型の時に表される内容
Numeric 返信先ユーザーID
String 返信先スクリーン名(@ID)
Set 言及しているすべてのユーザーID
このフィルタにおいては、たとえば、@karnoへの返信

@karno @kazoo04 @haru067 進捗どうですか

というツイートに対して、Numeric型やString型の値を取得したときに含まれるのは@karnoの情報だけとなります。
しかし、Set型の値を取得すると、3人のIDがすべて含まれます。

favs, favorites, favorer, favorers

お気に入り登録数やお気に入り登録したユーザーを示します。

この型の時に表される内容
Numeric お気に入り登録したユーザー数
Set お気に入り登録したすべてのユーザーID

rts, retweets, retweeters

被リツイート数やリツイートしたユーザーを示します。

この型の時に表される内容
Numeric リツイートしたユーザー数
Set リツイートしたすべてのユーザーID
⚠️ **GitHub.com Fallback** ⚠️