セパレート機能設定例

機能概要

セパレート機能は サマリ生成 などで集計するデータを チャンネル識別子 で区別する設定となる。

データに記録されるゲーム結果には「 成績記録キーワード 」が発行されたチャンネル固有の チャンネル識別子 が保存され、「どこから入力されたデータか」を区別できるようになっている。

チャンネル識別子のフォーマット

チャンネル識別子 のデフォルトフォーマットは、連携先サービス名のプレフィックスを持ち、そのサービス内で用いられる channel_id などのチャンネルを識別するためのIDが続く形をとる。

<サービス名>_<サービス内で使われるチャンネルID>

チャンネル識別子settingセクション などで channel_id を定義することで自由に変更できる。
チャンネル単位でのグループ分けを行ったり、Slackワークスペースの変更対応などで利用できる。

集計データ抽出ルール

基本となるデータ抽出条件は ルールセット 単位となり、「 ルール識別子 」が抽出条件として指定されている。
成績記録キーワード 」で保存される成績は keyword_mappingセクション によってどの ルールセット を使うかが定義されている。
異なるサービスや異なるチャンネルでも同じマッピングの定義であれば、同じ「 ルール識別子 」が使用される。
同じ ルールセット を使用していれば、Discordで入力された成績データをSlackで参照できる。

セパレート機能を有効にした場合、データの抽出条件に チャンネル識別子 が追加され、集計コマンドを発行したチャンネルの チャンネル識別子 を持つデータだけが集計対象となる。

付与される チャンネル識別子 は「 ヘルプ出力 」機能で内容を確認できる。

セパレート機能設定箇所

separate キーを True にセットすれば有効になる。
設定できるセクションは以下になる(メイン設定内限定)。
  • settingセクション

  • 各サービスのセクション

  • チャンネル個別設定

設定箇所による有効範囲は以下のようになる。

メイン設定
[setting]
separate = True

メイン設定のセパレート機能有効化は、全サービス、全チャンネルのデータを分けて集計するようになる。

  • Slack / Discord で入力されたデータを区別

  • 各サービス内の各チャンネルで入力されたデータを区別

サービス設定
[slack]
separate = True

[discord]
separate = True
サービス設定のセパレート機能有効化は、Slack / Discord のデータを分ける。
同じ ルールセット の記録でもSlackで実行した集計コマンドの結果にDiscordから登録されたデータは含まれない。

該当サービスのすべてチャンネルでセパレート機能が有効になる。

Note

1つのアプリケーションから複数のサービスは利用できない。
アプリケーション単体ではsettingセクションで定義したときと同じ動きになる。

利用シーンとしては以下のようなものが考えられる。

  • アプリケーションを複数立ち上げ、同じDBを参照させている - Slack + Web など

  • チャンネル単位で channel_id を設定してグループを作っており、チャンネル個別設定でセパレートせずにサービス設定でまとめてセパレートしている

  • など

チャンネル個別設定
[slack_Cxxxxxxxxxx]
separate = True

[discord_xxxxxxxxxxxxxxxxxxx]
separate = True

チャンネル個別設定で使用するセクション名は「<サービス名>_<サービス内で使われるチャンネルID> 」となる(変更不可)。

チャンネルAで有効、チャンネルBは無効とし、同じ ルールセット の記録を集計する場合は以下のように集計される。

チャンネルA
  • 集計コマンドの抽出条件に チャンネル識別子 が追加される

    • チャンネルAで入力されたデータ:集計対象

    • チャンネルBで入力されたデータ:集計対象外

チャンネルB
  • 集計コマンドの抽出条件は ルール識別子 のみ

    • チャンネルAで入力されたデータ:集計対象

    • チャンネルBで入力されたデータ:集計対象

チャンネル設定情報

ヘルプ出力 」コマンドにチャンネルの設定情報が表示される。
セパレート機能が有効になっているか、使用される チャンネル識別子 の確認ができる。
Slack
【チャンネル設定情報】
チャンネル識別子:slack_Cxxxxxxxxxx
チャンネル個別設定:---
セパレート:有効
データベースファイル:mahjong.db
Discord
【チャンネル設定情報】
チャンネル識別子:discord_xxxxxxxxxxxxxxxxxxx
チャンネル個別設定:---
セパレート:有効
データベースファイル:mahjong.db

設定例

グループ化設定例

共通する チャンネル識別子 設定することで集計範囲をコントロールできる。

サービス単位でグループ化

連携先のサービスからの成績登録はそのサービスの全チャンネルで利用するが、サービスを跨いで集計しない。

メイン設定
[setting]
separate = True

[slack]
channel_id = slack_data

[discord]
channel_id = discord_data
Slackで扱う チャンネル識別子 が全チャンネルで「slack_data」となる。Discordも同様。
セパレート機能が有効なので各サービスの記録は分けて集計される。
チャンネル単位でグループ化

3つのチャンネルのうち、1つのチャンネルだけ別集計にする。

メイン設定
[slack]
separate = True

[slack_Cxxxxxxxxx1] # チャンネルAの設定
channel_id = slack_data1

[slack_Cxxxxxxxxx2] # チャンネルBの設定
channel_id = slack_data1

[slack_Cxxxxxxxxx3] # チャンネルCの設定
channel_id = slack_data2
チャンネルAとチャンネルBの集計結果にはチャンネルCの記録は含まれない。
チャンネルCの集計結果はチャンネルCだけの記録で集計される。

その他の設定例

Slackワークスペースの変更

旧ワークスペースで記録された チャンネル識別子 を新ワークスペースに引き継ぐ。

メイン設定
[slack_CxxxxxxxNEW] # 新ワークスペースのチャンネルID
# 旧ワークスペースで使用していた *チャンネル識別子* を設定する
channel_id = slack_CxxxxxxxOLD
セパレート機能を使わない場合は チャンネル識別子 の変更の必要性はない。
後にセパレート機能を有効にする可能性を考慮し、新旧で チャンネル識別子 を合わせておくとよい。

Warning

チャンネル識別子 の変更を行わない場合、セパレート機能を有効にすると旧ワークスペースのデータが集計の対象から外れることになる。