次のような一連のコマンドがあります。
- 。キック
- .unban
- 。禁止
- .unvouch
- 保証します
- 。追加
- .del
- 。いう
これらのコマンドは、異なるアクセス権を持つ複数のユーザーがいるチャット ルームで使用されます。たとえば、次のようになります。
- 管理者はすべてのコマンドを使用できます。
- モデレーターは、.kick、.vouch、.unvouch、.say の使用を許可されています
- VIP は .say の使用を許可されています
- 基本はコマンドを使用できません
コマンドが使用されると、部屋に存在するボットに送られ、そのボットはコマンドを実行する前に、ユーザー、アクセス、およびすべてを確認します。
最初に、リストに割り当てられたユーザー クラスがあります。
public class Users
{
public string Name { get; set; }
public string Comments { get; set; }
public string Access { get; set; }
}
public List<Users> userList = new List<Users>();
特定のユーザーが特定のコマンドを使用するためのアクセス権を持っているかどうかを照会/チェック/検証する簡単な方法を実装したいと考えていますが、それにアプローチする方法がわかりません。
次のようなリストに 2 番目のクラスを割り当てることを考えていました。
public class UserAccess
{
public string AccessLevel { get; set; }
public List<string> Commands = new List<string>();
}
public List<UserAccess> accessList = new List<UserAccess>();
そして、次のようなクエリを実行します。
var user = userList.Find(x => x.Name == currentUser);
if (user != null && accessList.Exists(x => x.AccessLevel == user.Access && x.Commands.Contains(str_cmd))
{
// use the command
}
else
{
// cannot use the command
}
上で述べたように、ユーザーがコマンドを入力したときにキャプチャするチャット メッセージを常に読み取り、キュー内のすべてを確認して処理するバックグラウンド ワーカーがあります。
登録ユーザーとアクセス レベルは、Web サイトの API から入力されます。この API は、アプリケーションの起動時に JSON をアプリケーションに返し、主要なコマンドが発行されるたびにデータを更新します。
これはほんの一例です。考えすぎかもしれませんが、これに対処する方法についてアドバイスやアイデアを聞きたいです。