public static Permissions GetPermissions(ulong steamId) { var cmd = new Command("SELECT AuthLevel FROM bucket_users WHERE SteamID=@SteamID"); cmd["@SteamID"] = steamId; var perms = cmd.Execute().ToList(); if (perms.Count == 0) return Permissions.None; return (Permissions)perms[0].AuthLevel; }
public static string GetValue(string variable) { try { var cmd = new Command("SELECT vars.id id, name, perms, type, value FROM bucket_vars vars LEFT JOIN bucket_values vals ON vars.id = vals.var_id WHERE name=@variable ORDER BY RAND() LIMIT 1"); cmd["@variable"] = variable.ToUtf8(); return cmd.Execute().Select(r => (string)r.value).FirstOrDefault(); } catch { // No values for variable return null; } }
public static FactRow GetFact(string fact) { var cmd = new Command("SELECT * FROM bucket_facts WHERE fact=@fact ORDER BY RAND()"); cmd["@fact"] = fact.ToUtf8(); return cmd.Execute().Select(r => new FactRow(r)).FirstOrDefault(); }
public static List<FactRow> GetFacts(string fact) { var cmd = new Command("SELECT * FROM bucket_facts WHERE fact=@fact"); cmd["@fact"] = fact.ToUtf8(); return cmd.Execute().Select(r => new FactRow(r)).ToList(); }
public bool Cmd60_RemoveValue(ulong sender, string message, bool mention) { if (!mention || !RemoveValueRule.IsMatch(message)) return false; if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.Trusted)) { Say(BadPermissions); return true; } var groups = RemoveValueRule.Match(message).Groups; var name = groups[1].Value.ToLower(); var value = groups[2].Value; if (name.Length <= 1 || !name.All(char.IsLetter)) { Say("I probably would if you gave me a valid name."); return true; } var cmd = new Command("SELECT * FROM bucket_vars WHERE name=@name"); cmd["@name"] = name.ToUtf8(); var variable = cmd.Execute().FirstOrDefault(); if (variable == null) { Say("That variable doesn't even exist!"); return true; } cmd = new Command("SELECT * FROM bucket_values WHERE var_id=@id AND value=@value"); cmd["@id"] = (uint)variable.id; cmd["@value"] = value.ToUtf8(); var valueRow = cmd.Execute().FirstOrDefault(); if (valueRow == null) { Say("That variable doesn't even have that value!"); return true; } cmd = new Command("DELETE FROM bucket_values WHERE var_id=@id AND value=@value"); cmd["@id"] = (uint)variable.id; cmd["@value"] = value.ToUtf8(); cmd.ExecuteNonQuery(); Say(Success); return true; }
public bool Cmd60_DeleteVar(ulong sender, string message, bool mention) { if (!mention || !DeleteVarRule.IsMatch(message)) return false; if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.Trusted)) { Say(BadPermissions); return true; } var name = DeleteVarRule.Match(message).Groups[1].Value.ToLower(); if (name.Length <= 1 || !name.All(char.IsLetter)) { Say("I probably would if you gave me a valid name."); return true; } var cmd = new Command("SELECT * FROM bucket_vars WHERE name=@name"); cmd["@name"] = name.ToUtf8(); var variable = cmd.Execute().FirstOrDefault(); if (variable == null) { Say("Did you already delete that variable?"); return true; } if ((string)variable.perms == "read-only") { Say("That variable cannot be deleted."); return true; } cmd = new Command("DELETE FROM bucket_values WHERE var_id=@id; DELETE FROM bucket_vars WHERE id=@id"); cmd["@id"] = (uint)variable.id; cmd.ExecuteNonQuery(); Say(Success); return true; }
public bool Cmd60_CreateVar(ulong sender, string message, bool mention) { if (!mention || !CreateVarRule.IsMatch(message)) return false; if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.Trusted)) { Say(BadPermissions); return true; } var name = CreateVarRule.Match(message).Groups[1].Value.ToLower(); if (name.Length <= 1 || !name.All(char.IsLetter)) { Say("I probably would if you gave me a valid name."); return true; } var cmd = new Command("SELECT * FROM bucket_vars WHERE name=@name"); cmd["@name"] = name.ToUtf8(); var count = cmd.Execute().Count(); if (count > 0) { Say("That variable already exists!"); return true; } cmd = new Command("INSERT INTO bucket_vars (name, perms, type) VALUES (@name, 'read-only', 'var')"); cmd["@name"] = name.ToUtf8(); cmd.ExecuteNonQuery(); Say(Success); return true; }
public bool Cmd55_SomethingRandom(ulong sender, string message, bool mention) { if (!mention || !message.ToLower().StartsWith("something random")) return false; var cmd = new Command("SELECT * FROM bucket_facts ORDER BY RAND() LIMIT 1"); var res = cmd.Execute().Select(r => new FactRow(r)).ToList(); if (res.Count > 0) SayFact(res[0]); else Say("Nothing random!"); return true; }
public bool Cmd55_DeleteN(ulong sender, string message, bool mention) { if (!mention || !DeleteNRule.IsMatch(message)) return false; if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.Trusted)) { Say(BadPermissions); return true; } uint n; if (!uint.TryParse(DeleteNRule.Match(message).Groups[1].Value, out n)) { Say("I may be able to if you gave me a valid number."); return true; } var cmd = new Command("SELECT * FROM bucket_facts WHERE id=@id"); cmd["@id"] = n; var rows = cmd.Execute().Count(); if (rows == 0) { Say("That is not a fact."); return true; } cmd = new Command("DELETE FROM bucket_facts WHERE id=@id"); cmd["@id"] = n; cmd.ExecuteNonQuery(); Say(Success); return true; }