ストリーム用に IRC チャット ボットを作成しています。C# を使用した基本的な接続の例をいくつか見つけたので、試してみることにしました。
これまでのところ、私はそれが大好きです
しかし、私はこの1つの部分にこだわっています。
構造体型の配列内にボット コマンドを格納したいと考えています。
public delegate void cmdHandler(string[]);
struct botCommand
{
string name;
cmdHandler chandler;
bool isAdmin = false;
string help = "Nothing here.";
}
現在私が持っているものであり、これを実行できるようにしたい:
botCommand[]commands =
{
{ "TestCommand", testCommand(), 0, "Help for this" },
{ "TestCommand2", testCommand2(), 0 "..." },
......
};
では、その配列でジェネリック関数をリンクするにはどうすればよいでしょうか?
それとも私はこれについてすべて間違った方法をとっていますか?
基本的に、どのコマンドが使用されたかを確認するために巨大な Switch() ステートメントを使用する代わりに、配列をループして、コマンドがそこにあるかどうかを確認したいと考えています。その場合は、そのコマンドに関連付けられた関数を呼び出します。
編集:
これはまさに私が今持っているものなので、私がやろうとしていることを見ることができます
public delegate void cmdHandler(string[] ex);
struct botCommand
{
string name;
cmdHandler chandler;
bool isAdmin = false;
string help = "Nothing here.";
}
botCommand[] commands =
{
{"test", new cmdHandler(testf), 0, "" }
};
public void testf(string[] ex) {
return;
}
ロジックの手順:
- ユーザーがテストコマンドを入力します
- すべての botCommands をループして、テスト コマンドが見つかるかどうかを確認します
- テストコマンドが見つかりました
- テスト コマンドに関連付けられた関数を呼び出し、引数 (コマンドの残りの部分) を渡します。