這樣做的一個基本方法是保存一個用戶使用你的機器人執行請求的列表,並檢查他們上次提出請求的時間。它非常基本,但對於一個簡單的IRC bot來說,它應該做得很好。
List<User> Users = new List<User>(); // list of all users
public bool IncomingRequest(string RequestingUser)//requesting user == username of the person messaging your bot
{
User TempUser = Users.FirstOrDefault(User => User.Username == RequestingUser);
if (TempUser != null)// check to see if you have handled a request in the past from this user.
{
if ((DateTime.Now - TempUser.LastRequest).TotalSeconds >= 30) // checks if more than 30 seconds have passed between the last requests send by the user
{
Users.Find(User => User.Username == RequestingUser).LastRequest = DateTime.Now; // update their last request time to now.
return true;
}
else // if less than 30 seconds has passed return false.
{
return false;
}
}
else // if no user is found, create a new user, and add it to the list
{
User NewUser = new User();
NewUser.Username = RequestingUser;
NewUser.LastRequest = DateTime.Now;
Users.Add(NewUser);
return true;
}
}
用戶類
class User
{
public string Username { get; set; }
public DateTime LastRequest { get; set; }
}
您可以輕鬆簡單地通過迭代每當函數返回true一個int並具有
檢查添加計數器,增加了多少個請求在過去30發生
if (counter >20 && (Datetime.now - LastCounterReset).TotalSeconds >= 30)
{
// reset counter and LastCounterReset
}
else
{
// reject request
}