Example #1
0
 public static void ProtectFact(string fact, bool protect)
 {
     var cmd = new Command("UPDATE bucket_facts SET protected=@protect WHERE fact=@fact");
     cmd["@fact"] = fact.ToUtf8();
     cmd["@protect"] = protect;
     cmd.ExecuteNonQuery();
 }
Example #2
0
 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;
 }
Example #3
0
 public static void AddFact(ulong steamId, string fact, string tidbit, string verb, bool protect, bool re = false, byte? mood = null, byte? chance = null)
 {
     var cmd = new Command("INSERT INTO bucket_facts (SteamID,fact,tidbit,verb,RE,protected,mood,chance) VALUES (@steamid,@fact,@tidbit,@verb,@RE,@protected,@mood,@chance)");
     cmd["@steamid"] = steamId;
     cmd["@fact"] = fact.ToUtf8();
     cmd["@tidbit"] = tidbit.ToUtf8();
     cmd["@verb"] = verb.ToUtf8();
     cmd["@RE"] = re;
     cmd["@protected"] = protect;
     cmd["@mood"] = mood;
     cmd["@chance"] = chance;
     cmd.ExecuteNonQuery();
 }
Example #4
0
 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;
     }
 }
Example #5
0
 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();
 }
Example #6
0
 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 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_Permissions(ulong sender, string message, bool mention)
        {
            if (!mention || !PermissionsRule.IsMatch(message))
                return false;

            if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.ModifyPermissions))
            {
                Say(BadPermissions);
                return true;
            }

            var groups = PermissionsRule.Match(message).Groups;

            ulong steamId;
            ushort value;
            if (!ulong.TryParse(groups[1].Value, out steamId) || !ushort.TryParse(groups[2].Value, out value))
            {
                Say("I probably would if you gave me valid parameters.");
                return true;
            }

            var cmd = new Command("INSERT INTO bucket_users (SteamID,AuthLevel) VALUES(@SteamID,@AuthLevel) ON DUPLICATE KEY UPDATE AuthLevel=@AuthLevel");
            cmd["@SteamID"] = steamId;
            cmd["@AuthLevel"] = value;
            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_Forget(ulong sender, string message, bool mention)
        {
            if (!mention || !ForgetXRule.IsMatch(message))
                return false;

            if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.Trusted))
            {
                Say(BadPermissions);
                return true;
            }

            var x = ForgetXRule.Match(message).Groups[1].Value;

            if (x == "that")
            {
                if (that == null)
                {
                    Say("Forget what?");
                    return true;
                }

                var cmd = new Command("DELETE FROM bucket_facts WHERE id=@id");
                cmd["@id"] = that.Id;
                cmd.ExecuteNonQuery();

                Say(Success);
                return true;
            }
            else
            {
                var cmd = new Command("DELETE FROM bucket_facts WHERE fact=@fact");
                cmd["@fact"] = x.ToUtf8();
                cmd.ExecuteNonQuery();

                Say(Success);
                return true;
            }
        }
        public bool Cmd55_DeleteX(ulong sender, string message, bool mention)
        {
            if (!mention || !DeleteXRule.IsMatch(message))
                return false;

            if (!DbHelper.GetPermissions(sender).HasFlag(Permissions.Trusted))
            {
                Say(BadPermissions);
                return true;
            }

            if (DeleteXRule.IsMatch(message))
            {
                var x = DeleteXRule.Match(message).Groups[1].Value;

                if (DbHelper.GetFact(x) == null)
                {
                    Say("That is not a fact.");
                    return true;
                }

                var cmd = new Command("DELETE FROM bucket_facts WHERE fact=@fact");
                cmd["@fact"] = x.ToUtf8();
                cmd.ExecuteNonQuery();

                Say(Success);
                return true;
            }

            return false;
        }
        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;
        }