答えの読み方と、拒否の読み方
どの呼び出しも答えます。答えの二つの形を理解することが、信頼できるスクリプトのほとんどです。
結果はデータです
ほとんどの操作は辞書か、その一覧を返します。中身を知るために一度表示し、そのあとで必要な項目だけを読みます。
拒否は例外です
拒否された操作は「いいえ」を返しません。PermissionError を送出し、受け止めなければスクリプトはそこで止まります。
try:
avatar.pay_linden_dollars("00000000-0000-0000-0000-000000000000", "Someone Resident", 10)
except PermissionError as refusal:
print("refused:", refusal)- try が危ない行を実行し、except が拒否を受け止めます。
- メッセージがどの操作か、なぜかを伝えます。
- Action Permissions で無効にされた場合も、ライセンスで拒否された場合も同じ例外です。
思った通りにならない三つの理由
- 拒否: PermissionError が出て、メッセージが操作名を示します。
- 答えるものがない: 呼び出しは成功しても結果が空です。アバターがオフラインか、リージョンがまだ情報を送っていません。
- 何も起きず、エラーもない: すでに求めた状態でした。実行履歴には「変更なし」と出ます。
あとで見る場所
Automation の実行履歴に、呼び出し元、結果、時刻が並びます。エラータブには、うまくいかなかったことが 1 件 1 行で分かりやすくまとまります。同じ一覧はスクリプトからも読めます。
report = avatar.get_errors(limit=20)
for problem in report["errors"]:
print(problem["area"], problem["operation"], problem["occurrences"])