Skip to content

Use DataStore

皐月なふ (Nafu Satsuki) edited this page Jun 20, 2022 · 1 revision

DataStoreを使用することで恒久的にデータを保存する事ができます。
保存されたデータは設定ファイル内で指定されたデータベースに保存されます。
この機能を使用することで難しいSQL構文を覚えることなく簡易的にデータベースを使用することができます。

DataStoreを作成する

DataStoreを使用するには最初にデータソースを作成する必要があります。
データソースの名前、データソース内のデータ構造を登録します。
一度作成したデータソースは後で構造を変更できない事に注意してください。

// create datastore
try {
    var builder = getLauncher().getDataStoreManager().createDataStoreBuilder();
    builder.storeName("SettingsStore");
    builder.addIndex(String.class, "lang");
    builder.addIndex(Boolean.class, "sendWelcomeMessage"); // Camel case
    builder.addIndex(String.class, "welcome_message"); // Snake case
    DataStore settingsStore = builder.build();
    getLauncher().getDataStoreManager().registerDataStore(settingsStore);
} catch (DataStoreGenerateException e) {
    getModuleLogger().error("Failed to create datastore.", e);
}

DataStoreのデータ型は以下のようにSQLのデータ型と対応しています。

Java class SQL Type
String.class TEXT
Integer.class INTEGER
Long.class BIGINT
Double.class DOUBLE
Boolean.class BOOLEAN

DataStoreの名前と項目名は必ずCamel CaseかSnake Caseに従ってください。
Camel Caseを使用した場合は内部的にSnake Caseに変換されます。

データを保存する

DataStoreはギルドIDごとにデータを管理しています。
DataStoreにデータを保存するときは1度すべてのデータを保存する必要があります。
データを保存するときはDataStoreを作成する時に指定した項目の順番で指定してください。
また、複数回初期化を実行しようとするとエラーが発生する事にも注意する必要があります。

getLauncher().getDataStoreManager().getDataStore("SettingsStore").registerStoreData(guildId, "ja_JP", true, "Welcome to my discord server!!");

保存されているデータの一部を更新する場合は以下のように行うことができます。

getLauncher().getDataStoreManager().getDataStore("SettingsStore").saveStoreData(guildId, "lang", "en_US");

保存されたデータを取得する

DataStoreに保存されているデータを取得するには以下のように行います。
現時点では保存されたすべてのデータを一度に取得することはできません。

String lang = getLauncher().getDataStoreManager().getDataStore("SettingsStore").getStoreData(guildId, "lang");

保存されたデータを削除する

DataStoreに保存されているデータを削除するには以下のように行います。

getLauncher().getDataStoreManager().getDataStore("SettingsStore").deleteStoredData(guildId);

Introduction

Setup

Using NeoBotApi

Links

Clone this wiki locally