-
Notifications
You must be signed in to change notification settings - Fork 9
js_interfaces_ja
noonworks edited this page Aug 14, 2018
·
3 revisions
// 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の配列
}
// 戻り値の型
public class ReplaceResult {
// 置換後の文字列。置換しない場合は元の文字列をそのまま指定する。
public string Result { get; }
// 鳴らす音声(複数可)。
// 設定ファイルで names に指定した値を使って指定する。
public string[] SoundNames { get; }
// コンストラクタ
public ReplaceResult(string Result, string[] SoundNames);
}
// 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, // 棒読みちゃんでの文章読み上げ
}