我有一组命令,例如:
- 。踢
- .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>();
现在我想实现一种简单的方法来查询/检查/验证给定用户是否有权使用给定命令,但我不确定如何处理它。
我正在考虑将第二个班级分配给这样的列表:
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
}
正如我上面提到的,我有一个后台工作人员,它不断读取聊天消息以捕获用户何时键入命令,然后验证和处理队列中的所有内容。
注册用户和访问级别由我的网站 API 填充,该 API 在启动时将 JSON 返回到我的应用程序,并在发出主要命令时不时更新数据。
这只是一个例子,我可能会过度思考这个想法,但我确实想听听一些关于如何处理这个问题的建议和想法?