Esempio n. 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();
 }
Esempio n. 2
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();
 }
        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_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_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;
        }