KQ_Expressions_Values_And_Variables - karno/StarryEyes GitHub Wiki
フィルタは演算子と変数と値で構成されます。
演算子はExpressions - Operatorsにあるような、値や変数同士を比較するものです。
変数と値の違いはちょっと紛らわしいですが、こう考えてみてください。
値 は、どのようなツイートに対しても同じ値となります。
変数 は、そのフィルタを使ってツイートを評価する際に実際の値が代入されます。
たとえば、(rts > 5)
というクエリにおいて、rtsは変数、5は値です。
rts は対象ツイートのリツイート数によって変化しますが、5はどんなツイートにおいても5です。
値と変数は実際はそれほど区別する必要はありません、気軽にご利用ください。
ノート: 値は多相性を持ちませんが、変数は多相性があるものがあります。
戻り値の型別に記載しています。複数の型がある変数については、末尾の「多相型」にまとめて記載しています。
値については「値です」と表記してあります。この表記が無いものに関しては変数です。
Boolean 型の値を常に返すような変数です。
Boolean型には変数のみが存在します。
dm, isdm, is_dm, message, ismessage, is_message, directmessage, direct_message, isdirectmessage, is_direct_message
そのツイートがダイレクトメッセージであるかを判別します。
そのツイートがリツイートされたツイートであるかを判別します。
** rts
, rted
とは異なります。 **
Numeric 型の値を常に返すような値・変数です。
ノート: 返信先のないツイートにおける inreplyto の数値などはすべて -1 になります。
値です。数字をそのまま書くと、数値として扱われます。(例: 1234
, 15147941
)
そのツイートのIDを表現します。
返信先ツイートIDを示します。toとは異なります(toはユーザーIDを示します)。
String 型の値を常に返すような値・変数です。
値です。文字列は、二重引用符("
)で囲んだ文字のことです。(例: "文字列"
)
文字列中に二重引用符を含める場合は、\(バックスラッシュ)を置きます。(例: "二重引用符は\"このように置きます"
)
そのツイートの本文を返します。
note: リツイートでも、 RT @~ は本文には含まれません。
そのツイートの送信元クライアントを返します。
リツイートに対してはそのリツイートがどのクライアントから行われたか、になります。
要望が多ければ、リツイートに対してもそのツイートの元ツイートがどのクライアントから行われたか、に対する変数を作成します。 が、この通りものすごくまどろっこしい表現になってしまうのでビミョウな感じです。
Expressions - User Objectにあるようなユーザーオブジェクトを常に返すような変数です。
そのツイートを行ったユーザーを表します。リツイートされたツイートの場合、元ツイートのユーザを表します。
そのツイートをリツイートしたユーザーを表します。リツイートされたツイートでない場合は、この項を含む式の評価は偽になります。
値です。Krileで一度でもそのユーザーのツイートを受信したことがあるユーザーについては、以下の記述が利用可能です。
- @screen_name
- #user_id
このうち、あなたがKrileに登録しているアカウントに関してはExpressions - Account Objectにあるようなアカウントオブジェクトとして扱うこともできます。
Set 型の値を常に返すような値です。
現在のところ、Set型のみを返すものは値しか存在しません。(演算子との組み合わせによってはSetを返すこともできる多相型の変数は存在します。)
値です。前述の数値及びユーザー/アカウント表現をまとめて、Set型とする記述が利用可能です。
たとえば、以下のように記述します:
[#15147941, @kriletan]
この記述を用いることで、以下のような表記が行えます:
from local where user in [@alice, @bob, @charlie, #12345678]
値です。特定のリストに登録されているユーザーを表します。ピリオドに続けて、リストオーナー名・リスト名を指定します。
たとえば、以下のように記述します:
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"
複数の型を持つ変数です。どの型に決定されるかは演算子に依存します。
多層型には変数のみが存在します。
返信先を示します。
型 | この型の時に表される内容 |
---|---|
Numeric | 返信先ユーザーID |
String | 返信先スクリーン名(@ID) |
Set | 言及しているすべてのユーザーID |
@karno @kazoo04 @haru067 進捗どうですか
というツイートに対して、Numeric型やString型の値を取得したときに含まれるのは@karnoの情報だけとなります。
しかし、Set型の値を取得すると、3人のIDがすべて含まれます。
お気に入り登録数やお気に入り登録したユーザーを示します。
型 | この型の時に表される内容 |
---|---|
Numeric | お気に入り登録したユーザー数 |
Set | お気に入り登録したすべてのユーザーID |
被リツイート数やリツイートしたユーザーを示します。
型 | この型の時に表される内容 |
---|---|
Numeric | リツイートしたユーザー数 |
Set | リツイートしたすべてのユーザーID |