起動時にメールステータスチェック、終了時に送信予約を行なうサンプルスクリプト。 無保証です。
- MailBox: v1.0.0
- 里々: phase Mc169-3
license: CC0
satori_conf.txtに追記
#送信するメールのId。`:`区切り。
#「MailBoxメール本体」と数値を一致させること。
#ここで設定した数値と同じ「MailBoxメール本体」が送信予約時チェックされる。
$MailBoxメールIdリスト=1:2:3
#MailBoxフラグが1だとMailBox関連の処理をする。0だとしない。
$MailBoxフラグ 1
#また、フラグが1だと、MailBoxメールステータス+メールId(半角数値)、
#という変数が更新されるので、分岐に使用したりしてみてください。
#変数例: メールIdが10、ステータスが3(届いていて既読)の場合
#(MailBoxメールステータス10)==3
*OnBoot
\b[-1]\![embed,On_MailBox_CheckMailStatuses]\![embed,On_MailBox_DeleteBookedMails]\![embed,OnBootEx,(call,joinReferences関数,7)]
#起動時スクリプトをここに記入する
*OnBootEx
:起動
:起動
#終了時時スクリプトをここに記入する
#p[1]側にスクリプトの出力が残っているので、\cで消してから話しはじめてください。
*OnClose
(On_MailBox_SendNewMails)
:終了
:\c終了
*OnGhostChanged
(when,(文「(R0)から変更」の存在),
\b[-1]\![embed,On_MailBox_CheckMailStatuses]\![embed,On_MailBox_DeleteBookedMails]
)\![embed,OnGhostChangedEx,(call,joinReferences関数,7)]
*OnGhostChangedEx
>(R0)から変更
>OnBoot
#○○というゴーストから変更されたときのスクリプトを記入
*○○から変更
:○○さんから切り替え。
:ありがとうございました。
*OnGhostChanging
(
when,(文「(R0)へ変更」の存在),(On_MailBox_SendNewMails)\c
)\![embed,OnGhostChangingEx,(call,joinReferences関数,3)]
*OnGhostChangingEx
>(R0)へ変更
>OnClose
#○○というゴーストへ変更するときのスクリプトを記入
*○○へ変更
:○○さんへ切り替え。
:よろしくお願いします。
#メール本体
#メール本体
#「MailBoxメール本体」+「半角数値(送信するメールのId)」という規則で命名すること
#送信予約時にチェックされる。
#実際に送信するかはスクリプトの中身による。
*MailBoxメール本体1
\![notifyplugin,MailBox,OnSendMailNotArrive,1,(現在年),(現在月),(現在日),testsender1,testtitle1,testcontent1]
*MailBoxメール本体2
\![notifyplugin,MailBox,OnSendMailNotArrive,2,(現在年),(現在月),(現在日),testsender2,testtitle2,testcontent2]
*MailBoxメール本体3
\![notifyplugin,MailBox,OnSendMailNotArrive,3,(現在年),(現在月),(現在日),testsender3,testtitle3,testcontent3]
ここから下はコピー&ペースト推奨
*OnMailsStatus
$今回は喋らない 有効
(nop,(call,splitArray関数,(R0),:,MailBoxステータスId))
(nop,(call,splitArray関数,(R1),:,MailBoxステータスStatus))
(nop,(while,(変数「MailBoxステータスId(C0)」の存在),(call、MailBoxステータスset関数、(MailBoxステータスId(C0))、(MailBoxステータスStatus(C0)))))
#メール配信を停止したいときに呼んでください。
@On_MailBox_メール配信停止
(
set,MailBoxフラグ,0
)(
nop,(call,splitArray関数,(MailBoxメールIdリスト),:,MailBoxメールIdリスト配列)
)(
while,(変数「MailBoxメールIdリスト配列(C0)」の存在),(
call、MailBoxステータスset関数、(MailBoxメールIdリスト配列(C0))、0)\![notifyplugin,MailBox,OnDeleteMail,(zen2han、(MailBoxメールIdリスト配列(C0)))]
)
#メール配信を開始したいときに呼んでください。
@On_MailBox_メール配信開始
(set,MailBoxフラグ,1)
@On_MailBox_CheckMailStatuses
\![raiseplugin,MailBox,OnStatusMails,(zen2han、(MailBoxメールIdリスト))]
@On_MailBox_DeleteBookedMails
(
nop,(call,splitArray関数,(MailBoxメールIdリスト),:,MailBoxメールIdリスト配列)
)(
while,(変数「MailBoxメールIdリスト配列(C0)」の存在),(
call、MailBoxメール予約停止関数、(MailBoxメールIdリスト配列(C0)))
)
@On_MailBox_SendNewMails
(
when(バイト値,1)(MailBoxフラグ)==1(バイト値,1)(
nop,(call,splitArray関数,(MailBoxメールIdリスト),:,MailBoxメールIdリスト配列)
)(
while,(変数「MailBoxメールIdリスト配列(C0)」の存在),(
call、MailBoxメール送信関数、(MailBoxメールIdリスト配列(C0))))
)
#一時変数を大量に作るので、セーブデータが気になるひとは、このイベントを`OnSatoriUnload`で呼んでください。
@On_MailBox_EraseTempVariables
(
nop,(while,(変数「MailBoxステータスId(C0)」の存在),(
set、MailBoxステータスId(C0)、)(
set、MailBoxステータスStatus(C0)、))
)(
nop,(while,(変数「MailBoxメールIdリスト配列(C0)」の存在),(set、MailBoxメールIdリスト配列(C0)、))
)
@MailBoxメール確認関数
\![notifyplugin,MailBox,OnStatusMail,(zen2han,(A0))]
@MailBoxメール送信関数
(MailBoxメール本体(A0))
@MailBoxメール予約停止関数
\![notifyplugin,MailBox,OnDeleteMailNotArrive,(zen2han、(A0))]
#A0: メールId
#A1: ステータス
@MailBoxステータスset関数
(set,MailBoxメールステータス(zen2han,(A0)),(A1))
#A0: 分割する文字列
#A1: 区切り文字列
#A2: 配列として扱う変数名
@splitArray関数
(
set,SAORI引数の計算,無効
)(
nop,(vncall,split,A0,A1)
)(
set,splitArray関数S,(Sの数)
)(
nop,(times,(splitArray関数S),(set,(A2)(C0),(S(C0))))
)(
set,splitArray関数S,
)(
set,SAORI引数の計算,自動
)
#A0: Referenceが確実にどこまであるか
@joinReferences関数
(
set,SAORI引数の計算,無効
)(
set,joinReferencesTemp,(call、joinReferences関数body、(A0))
)(
call,erase_first,(joinReferencesTemp),φ,
)(
set,joinReferencesTemp,
)(
set,SAORI引数の計算,自動
)
@joinReferences関数body
(
times,(A0),(vncall,joinReferences関数Element,R(C0))
)(
while,(変数「R(C0)」の存在),(A0),(
vncall,joinReferences関数Element,R(C0))
)
@joinReferences関数Element
,(バイト値,34)(replace,(A0),(バイト値,34),(バイト値,39))(バイト値,34)