Update onevent.cs
adds lockout support
This commit is contained in:
parent
a7f096acd9
commit
19dc0c8c1f
1 changed files with 84 additions and 4 deletions
|
|
@ -24,7 +24,27 @@ namespace BetterSecondbot.OnEvents
|
||||||
protected Dictionary<UUID, KeyValuePair<long, int>> group_membership_update_q = new Dictionary<UUID, KeyValuePair<long, int>>();
|
protected Dictionary<UUID, KeyValuePair<long, int>> group_membership_update_q = new Dictionary<UUID, KeyValuePair<long, int>>();
|
||||||
protected List<OnEvent> Events = new List<OnEvent>();
|
protected List<OnEvent> Events = new List<OnEvent>();
|
||||||
protected Dictionary<UUID, List<UUID>> GroupMembership = new Dictionary<UUID, List<UUID>>();
|
protected Dictionary<UUID, List<UUID>> GroupMembership = new Dictionary<UUID, List<UUID>>();
|
||||||
|
protected Dictionary<UUID, long> Lockout = new Dictionary<UUID, long>();
|
||||||
|
|
||||||
|
protected void CleanupLockout()
|
||||||
|
{
|
||||||
|
List<UUID> purgeEntrys = new List<UUID>();
|
||||||
|
lock(Lockout)
|
||||||
|
{
|
||||||
|
long now = helpers.UnixTimeNow();
|
||||||
|
foreach(KeyValuePair<UUID,long> entry in Lockout)
|
||||||
|
{
|
||||||
|
if(entry.Value < now)
|
||||||
|
{
|
||||||
|
purgeEntrys.Add(entry.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach(UUID a in purgeEntrys)
|
||||||
|
{
|
||||||
|
Lockout.Remove(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
protected void TriggerEvent(string trigger, Dictionary<string, string> args, bool enableCronArgs = false)
|
protected void TriggerEvent(string trigger, Dictionary<string, string> args, bool enableCronArgs = false)
|
||||||
{
|
{
|
||||||
if (controler.BotReady() == true)
|
if (controler.BotReady() == true)
|
||||||
|
|
@ -64,11 +84,51 @@ namespace BetterSecondbot.OnEvents
|
||||||
foreach (string a in E.Actions)
|
foreach (string a in E.Actions)
|
||||||
{
|
{
|
||||||
string wip = UpdateBits(a, args);
|
string wip = UpdateBits(a, args);
|
||||||
|
if (wip.StartsWith("lockout=") == true)
|
||||||
|
{
|
||||||
|
processLockout(wip);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
string[] bits = wip.Split("|||", StringSplitOptions.None);
|
string[] bits = wip.Split("|||", StringSplitOptions.None);
|
||||||
if (bits.Length == 2)
|
if (bits.Length == 2)
|
||||||
{
|
{
|
||||||
controler.getBot().CallAPI(bits[0], bits[1].Split("~#~"));
|
controler.getBot().CallAPI(bits[0], bits[1].Split("~#~"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processLockout(string lockoutString)
|
||||||
|
{
|
||||||
|
lock(Lockout)
|
||||||
|
{
|
||||||
|
string[]bits = lockoutString.Split("=", StringSplitOptions.None);
|
||||||
|
if(bits.Length == 2)
|
||||||
|
{
|
||||||
|
string[]subbits= bits[1].Split("+", StringSplitOptions.None);
|
||||||
|
if(subbits.Length == 2)
|
||||||
|
{
|
||||||
|
if(int.TryParse(subbits[1],out int addsecs) == true)
|
||||||
|
{
|
||||||
|
if(addsecs < 60)
|
||||||
|
{
|
||||||
|
addsecs = 60;
|
||||||
|
}
|
||||||
|
if (addsecs > 9999)
|
||||||
|
{
|
||||||
|
addsecs = 9999;
|
||||||
|
}
|
||||||
|
if (UUID.TryParse(subbits[0],out UUID addUUID) == true)
|
||||||
|
{
|
||||||
|
if(Lockout.ContainsKey(addUUID) == true)
|
||||||
|
{
|
||||||
|
Lockout.Remove(addUUID);
|
||||||
|
}
|
||||||
|
Lockout.Add(addUUID, helpers.UnixTimeNow() + addsecs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -191,7 +251,7 @@ namespace BetterSecondbot.OnEvents
|
||||||
{
|
{
|
||||||
"CRON", "IN_GROUP", "NOT_IN_GROUP",
|
"CRON", "IN_GROUP", "NOT_IN_GROUP",
|
||||||
"IS", "NOT", "IS_EMPTY", "HAS", "MISSING",
|
"IS", "NOT", "IS_EMPTY", "HAS", "MISSING",
|
||||||
"IS_UUID", "CRON"
|
"IS_UUID", "CRON", "LOCKOUT"
|
||||||
};
|
};
|
||||||
foreach (string A in E.Where)
|
foreach (string A in E.Where)
|
||||||
{
|
{
|
||||||
|
|
@ -234,6 +294,25 @@ namespace BetterSecondbot.OnEvents
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(filter == "LOCKOUT")
|
||||||
|
{
|
||||||
|
if (bool.TryParse(bits[1], out bool status) == false)
|
||||||
|
{
|
||||||
|
WherePassed = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(UUID.TryParse(bits[0], out UUID leftUUID) == false)
|
||||||
|
{
|
||||||
|
WherePassed = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bool check = Lockout.ContainsKey(leftUUID);
|
||||||
|
if (check != status)
|
||||||
|
{
|
||||||
|
WherePassed = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (filter == "IS")
|
else if (filter == "IS")
|
||||||
{
|
{
|
||||||
if(bits[0] != bits[1])
|
if(bits[0] != bits[1])
|
||||||
|
|
@ -707,6 +786,7 @@ namespace BetterSecondbot.OnEvents
|
||||||
{
|
{
|
||||||
lastMinTick = Dt.Minute;
|
lastMinTick = Dt.Minute;
|
||||||
ClockEvent();
|
ClockEvent();
|
||||||
|
CleanupLockout();
|
||||||
if(requestedGroupdetails == false)
|
if(requestedGroupdetails == false)
|
||||||
{
|
{
|
||||||
requestedGroupdetails = true;
|
requestedGroupdetails = true;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue