js_interfaces_ja - noonworks/Nursery GitHub Wiki

JavaScriptから使用可能なインターフェース

共通

// JavaScript関数に渡される引数
public interface IJSArgument {
    IBot Bot { get; } // Botの情報
    IMessage Message { get; } // メッセージの情報
    IJSArgumentUser Author { get; } // 投稿者の情報
    string[] MentionedUsers { get; } // このメッセージでメンションされているユーザーのIDの配列
    string GuildId { get; } // ギルド(サーバー)のID
    string ChannelId { get; } // テキストチャンネルのID
}

// Botの情報
public interface IBot {
    string IdString { get; } // BotのID
    string Nickname { get; } // Botのニックネーム
    string Username { get; } // Botのユーザーネーム
    string[] RoleIdStrings { get; } // Botが所属している役割のIDの配列
    string[] TextChannelIdStrings { get; } { get; } // Botが参加しているテキストチャンネルのIDの配列
    string VoiceChannelIdString { get; } // Botが参加しているボイスチャンネルのID
    string[] GetUserIdsInVoiceChannel(); // ボイスチャンネルに参加しているユーザーのIDの配列
    string GetUserName(string UserId); // ユーザー名を取得するメソッド
    string GetNickName(string UserId); // ユーザーのニックネームを取得するメソッド
                                       //(ニックネーム未設定の場合、ユーザー名が返される)
}

// Discordに投稿されたメッセージ
public interface IMessage {
    Discord.WebSocket.SocketMessage Original { get; } // Discord.Netの型。元のメッセージ。
    string Content { get; set; } // メッセージ文字列。他のプラグインで変換されている可能性がある。
    List<string> AppliedPlugins { get; } // 今までにこのメッセージに適用されたプラグインの一覧。
}

// ユーザーの情報
public interface IUser {
    string Id { get; } // ID
    string Nickname { get; } // ニックネーム
    string Username { get; } // ユーザーネーム
    string[] RoleIds { get; } // 所属している役割のIDの配列
}

SoundEffectプラグイン

// 戻り値の型
public class ReplaceResult {
    // 置換後の文字列。置換しない場合は元の文字列をそのまま指定する。
    public string Result { get; }
    
    // 鳴らす音声(複数可)。
    // 設定ファイルで names に指定した値を使って指定する。
    public string[] SoundNames { get; }
    
    // コンストラクタ
    public ReplaceResult(string Result, string[] SoundNames);
}

UserDefinedSchedulerプラグイン

// JavaScript関数に渡される引数
public class JSScheduleArgument {
    public IBot Bot { get; } // Botの情報
    public IJSScheduler Scheduler { get; } // スケジュールの情報
}

// スケジュールの情報
public interface IJSScheduler {
    DateTime CheckedAt { get; } // 直近でスケジュールの条件がチェックされた日時
                                // (条件が成立したかどうかは問わない)
    DateTime LastExecute { get; } // 直近でスケジュールが実行された日時
    string AdditionalData { get; set; } // JS関数が任意に使用可能なデータ領域(初期値はnull)
    long TotalCount { get; } // スケジュールの合計実行回数(設定再読み込みでリセットされる)
    long Count { get; } // スケジュールの実行回数(Botの退室でリセットされる)
    long Interval { get; } // スケジュールの条件に間隔条件が1つ存在するとき、その間隔(分)
}

// スケジュール処理の結果
public class ScheduledMessage {
    public ScheduledMessageType Type; // スケジュール処理の結果の種類
    public string Content; // 本文
    public string[] TextChannelIds; // 送信先テキストチャンネルのIDの配列
                                    // (Discordへのメッセージ送信の場合のみ)
    public bool CutIfTooLong = true; // 本文が長すぎた場合に溢れた分をカットするか
                                     // falseの場合、カットせず2つ以上のメッセージに分ける
                                     // (Discordへのメッセージ送信の場合のみ)
    public ScheduledMessage Clone(); // このインスタンスのクローンを作成するメソッド
}

// スケジュール処理の結果の種類
public enum ScheduledMessageType {
    SendMessage, // Discordへのメッセージ送信
    Talk, // 棒読みちゃんでの文章読み上げ
}
⚠️ **GitHub.com Fallback** ⚠️