marukot-chの日記

弱小SEの雑記です

自作したdiscord用のリマインダーBotの使い方について説明します(定期実行可能なやつ)

先日公開したリマインダーBotの使い方的なものを説明します(ちょっと簡素すぎてよく分からなかったかもしれない、と後に思いました)。なお、最新はGitHubです。

 

marukot-ch.hatenablog.com

 

 

 

 

reminder-botのコマンド一覧

  • /remind-list: リマインドを確認する
  • /remind-list-all: リマインドをすべて確認する(BotオーナーがDMでのみ使用可能)
  • /remind-list-guild-all: ギルドのすべてのリマインドを確認する(ギルドの管理者のみ)
  • /remind-make: リマインドを作成する
  • /remind-cancel: リマインドをキャンセルする(キャンセルできるのは本人orギルド管理者orオーナー)
  • /remind-skip: リマインドをスキップする(スキップできるのは本人のみ)
  • /remind-is-user-delete: リマインド対象のユーザーをBANする(Botオーナーのみ使用可能)
  • /remind-id-user-delete: BANする(Botオーナーのみ使用可能)
  • /remind-id-user-recover: BANを解除する(Botオーナーのみ使用可能)
  • /remind-id-user-guild-delete: ギルド内BANする(ギルドの管理者のみ)
  • /remind-id-user-guild-recover: ギルド内BANを解除する(ギルドの管理者のみ)

f:id:marukot-ch:20210816123952p:plain

reminder-botのコマンド(2021/08現在)

/remind-make: リマインド作成

f:id:marukot-ch:20210816124059p:plain

/remind-make date:
/remind-makeの必須パラメータ

date: リマインドする日付を指定(以下のいずれかの形式)

- 何日後の日付かの数字1桁(0-9): たとえば、「0」(当日)。「1」(明日)など

- mm/dd形式の日付: たとえば、「08/17」

- mm-dd形式の日付: たとえば、「08-17」

 *年を入力することも可能(2021/08/17や2021-08-17等)。上記のスクリーンショット、説明文の日本語怪しいことに今気づいた


time: リマインドする時間を指定

- hh24:mi形式の時間: たとえば、「20:50」

- xxh(xx時間後という意味): たとえば、「10h」(hoursの省略でh)
- xxmi(xx分後という意味0: たとえば、「10mi」(minutesの省略でmi)

message: リマインドするメッセージ

- メンションしたい場合はここに通常と同様に@つけること

  - たとえば、「@marukot-ch 21:00からゲームするぞ!」みたいな

- 改行したい場合は<br><改行>【改行】@@@のどれかを入力してください
  - 例→改行テスト<br>改行したよ!

- こっそり送りたい場合は通常と同様に@silentつけること(v1.0.1)

  - たとえば、「@silent 深夜帯に失礼します。4時です」みたいな

  - メッセージに記載せずとも、silentオプションでも指定可能

- スタンプ(Sticker)を付与したい場合、:スタンプ名: をメッセージに書いてください(v1.0.3 or develop)

関連記事

marukot-ch.hatenablog.com

/remind-makeのオプション

repeat_interval: 繰り返し間隔

- 1分単位(mi): たとえば「1mi」(1分間隔でリマインドされます)  

- 1時間単位(h): たとえば「1h」(1時間間隔でリマインドされます) 

- 1日単位(d): たとえば「1d」(1日間隔でリマインドされます) 

- 1週間単位(w): たとえば「1w」(1週間間隔でリマインドされます)  

- 1月単位(m): たとえば「1m」(1ヶ月間隔でリマインドされます)  

- 1年単位(y): たとえば「1y」(1年間隔でリマインドされます)  
- 特殊な間隔も設定できます(漢字で入力します/上記の形式と併用はできません(テストしてません!))

- 平日: 平日の同じ時間にリマインドされます(祝日は考慮しません)
- 休日: 土曜日、日曜日の同じ時間にリマインドされます(祝日判定はしてないので、土曜日、日曜日だけです!)

- 月〜日: 記載した曜日ごとの同じ時間にリマインドされます(月日と書くと、月曜日、日曜日の同じ時間にリマインドされます)

- 現在、制限はないですが、無限に1miを続けたりしていると、気づいたタイミングでBANしようと思います(reminder-botの処理効率が落ちるため)

関連記事: 

認証されたdiscord-reminderbotのみ、試験的にBAN機能を導入しました - marukot-chの日記


  

repeat_max_count: 繰り返し最大数

- 数字: たとえば「2」(上記で設定した繰り返し間隔ごとリマインドし、2回実行すると終わりです)

- 未指定の場合、キャンセルされるまで永遠に繰り返します

 

channel: リマインドを送信する対象のチャンネル

- #形式: たとえば「#general」(#generalへリマインドします)

- チャンネル名: たとえば「general」(#generalへリマインドします/利点はないです)

- dm: BotからのDMという形でリマインドします(DMも可)

 

silent: こっそり送る(v1.0.1)

  - ふつう: 通常のメッセージ(デフォルト)

  - こっそり: discord曰く、「メッセージをそっと静かに送信」。受信者に通知の点は表示されますが、アラートはありません、とのこと(プッシュ通知やデスクトップ通知されないです)

 

reply_is_hidden: Botからの返信を隠すかどうか(デフォルトは隠す)

- 自分のみ: コマンド実行者にしか返信は見えません(リマインド自体は普通です。繰り返しの追加の際のメッセージは消えないです)

- 全員に見せる: チャンネルを見られる全員が見える形で返信されます。他の人にBotの使い方を見せたい時などに最適です

 

参考: 全オプション指定した場合の表示

f:id:marukot-ch:20210816124301p:plain

/remind-make 全オプション指定

コマンドを実行したときの表示(reply_is_hiddenで隠したりできる部分)

f:id:marukot-ch:20210817211741p:plain

/remind-make(コマンド実行後(自分のみ))

f:id:marukot-ch:20210817212031p:plain

/remind-make(コマンド実行後(全員に見せる))



/remind-list: リマインド表示

/remind-listのオプション(必須パラメータなし)

status: ステータスでフィルタ
- 実行予定のリマインドリスト
  - 今後リマインドされるリストを表示します
- キャンセルしたリマインドリスト
  - キャンセルされたリマインドリストを表示します
- 終了したリマインドリスト
  - リマインドしたリストを表示します
- エラーになったリマインドリスト
  - エラーになってしまったリストを表示します
filter: リマインドリストを検索(v1.0.0で追加)
- No, 日付, メッセージ, 繰り返し設定,ギルドID(v1.0.3で追加),メンバーID(v1.0.3で追加),チャンネルID(v1.0.3で追加)を検索します。また、フィルターの場合のみ検索件数を増やしましたので、以前よりも使い物になるはずです

reply_is_hidden: Botからの返信を隠すかどうか(デフォルトは隠す)

f:id:marukot-ch:20210817211416p:plain

/remind-list

ギルドで実行するとこんな感じで、ギルド、かつ、自分の今後のリマインドを一覧で表示します

f:id:marukot-ch:20210817212142p:plain

/remind-list

BotとのDMで実行することも可能で、その場合は自分の今後のリマインド(ギルドを跨ぐ)を一覧で表示します


/remind-list-guild-all: ギルドのリマインド表示

/remind-list-guild-allのオプション(必須パラメータなし)

status, filterオプションは前述と同じ

reply_is_hidden: Botからの返信を隠すかどうか(デフォルトは隠す)

 

ギルドでのみ実行可能(DMでは実行できません)です。

ギルドで登録されたリマインドがすべて表示されます。いまのところ、実行予定・実行済・キャンセルすべて表示されます(2千文字まで?、かつ、100件以内(短いほうの制限が適用されるとおもいます。たぶん))

/remind-list-allも同様のノリなので説明しません(こちらのコマンドは、Botの管理者(Botを動かしている人≠ギルドの管理者)しか実行不可)。

f:id:marukot-ch:20210817212501p:plain

/remind-guild-all(コマンド実行後)

 

/remind-cancel: リマインドキャンセル

/remind-cancelの必須パラメータ

cancel_no: キャンセルNo

- 数字: キャンセルするリマインドのNo。たとえば「8」

- あなたが登録したリマインドのNoである必要があります(他人のリマインドはキャンセルできません)
- ただし、ギルド管理者の場合、ギルド内のリマインドもキャンセル可能(v1.0.3で変更)
- ただし、Botオーナーの場合、すべてのリマインドもキャンセル可能(v1.0.3で変更)

 

/remind-cancelのオプション

reply_is_hidden: Botからの返信を隠すかどうか(デフォルトは隠す)

f:id:marukot-ch:20210817212916p:plain

/remind-cancel


注意:現状ではリマインドは本人しか消せません。

今後、管理者のみ、ギルドのリマインドを消せるようにするかもしれませんが...。キャンセルしようとしても、以下の2つ目の例のように、キャンセルできませんのように言われます。(2023/10まで)

v1.0.3からは、管理者はギルド内のリマインドキャンセルが可能です。また、Botオーナーはすべてのリマインドをキャンセルできます。

f:id:marukot-ch:20210817213236p:plain

/remind-cancel(コマンド実行後)

/remind-skip: リマインドスキップ

リマインドスキップします(v1.0.2で追加)。「これやったんだけど、1時間後にリマインドされちゃうのよね」みたいな時に使ってください。
オプションのリマインド再開日付と時間が両方とも未指定の場合は、1回スキップされます(リマインド再開時間に1miが指定されたものとしてスキップ)
関連記事

marukot-ch.hatenablog.com

/remind-skipの必須パラメータ(1つ)

skip_no: スキップNo

- 数字: スキップするリマインドのNo。たとえば「8」
- あなたが登録したリマインドのNoである必要があります(他人のリマインドはスキップできません)

/remind-skipのオプション

next_date: リマインド再開日付
- mm/dd形式: 日数でも登録できる(0で当日、1で1日後)
- yyyy/mm/dd形式で年も含めて登録
- mm-dd形式もOK(yyyy-mm-dd形式もOK)
- mmdd形式もOK
- 1-3桁の場合、現在日時+その日数後として登録
  - 0→当日
  - 1→1日後
  - 100→100日後
next_time: リマインド再開時間
- 0(現在時間)
- hh:mi形式(例→23:12)
- xxh(xx時間後という意味。例→10h)
- xxmi(xx分後という意味。例→10mi)
- ここの指定で時間が繰り上がる場合、おかしな挙動になるため注意してください(v1.0.2)
  - 例: 4/10 23:00が次回リマインドの時、2hを指定すると4/10 1:00となってしまう
reply_is_hidden: Botからの返信を隠すかどうか(デフォルトは隠す)

/remind-id-user-guild-delete: ギルド内BAN

- ギルド内のみ、かつ、ギルドの管理者権限保持者のみ使用可能(v1.0.4 or develop)
- 指定したNoのリマインド登録者をギルドからBANします
  - 現在登録されているリマインドをすべて削除した上、今後ギルド内でリマインドできなくさせます
- 必須のオプション(1つ)
  - delete_no(BANするリマインドのNo)
    - 数字
    - BANする対象は登録者ですが、登録者を探すのは面倒なのでリマインドのNoを使います
- オプション: reply_is_hidden(いつもの) 

 

/remind-id-user-guild-recovery: ギルド内BAN解除

- ギルド内のみ、かつ、ギルドの管理者権限保持者のみ使用可能(v1.0.4 or develop)
- 指定したNoのリマインド登録者のBANを解除します
  - ただし、BANされたときに削除されたリマインドはそのままの状態となります
- 必須のオプション(1つ)
  - recovery_no(BAN解除するリマインドのNo)
    - 数字
    - BAN解除されるのは登録者ですが、登録者を探すのは面倒なのでリマインドのNoを使います
- オプション: reply_is_hidden(いつもの) 

このBotの注意点

Replitというサービスで動かしていますが、データの保管はDiscordの添付ファイルで実装しています。

つまり、ギルドへ勝手に「#remind_control_channel」を作成しそこにデータを保管しています(管理者とBotのみ閲覧可能なチャンネルです)。

適当に暗号化されているので、中身を見ることはできません。

 

2022年のどこかのタイミングで、自宅サーバに変えました。あまりにも止まるので。。。。

 

リマインドが更新されるたびにファイルが更新されてうざったいという問題がありますので、チャンネルをミュートにしておくといいと思います。

 

f:id:marukot-ch:20210817214220p:plain

remind_control_channelチャンネル(Botが勝手に作成します)

 

使ってみたい方向け情報

以下の招待リンクから試すことができます。↓は承認されたので使えると思います。

https://discord.com/api/oauth2/authorize?client_id=873515660674756639&permissions=2147723280&scope=bot%20applications.commands

2022/02/06追記。discordから承認おりたので、100サーバーを超えて追加できそうです。

2023/02/26追記(今までの記載削除)

ずっと逆に書いてたようです。すみません...。上記招待リンクが正しそうです。

marukot-ch.hatenablog.com

2023/03/22追記。listのfilterオプションや、makeの@silentについて追加。

2023/04/15追記。/remind-skipについて追加(v1.0.2)。
2023/04/27追記。/remind-makeのメッセージにスタンプ対応(v1.0.3)。
2023/07/23追記。/remind-makeのメッセージの改行方法について(v1.0.0からできてたが記載を忘れてた)。その他表現を修正など
2023/10/02追記。

 

追加したほうが良い機能や修正したい挙動があれば、GitHubIssueDiscussionsに書き込んでください。