Esempio n. 1
0
        public static LoriShip DoesExist(ulong user1, ulong user2)
        {
            LoriShip ship = null;

            var dbCon = DBConnection.Instance();

            dbCon.DatabaseName = LCommandHandler.DATABASE_NAME;

            if (dbCon.IsConnect())
            {
                var cmd    = new MySqlCommand($"SELECT * FROM relationships WHERE (id1 = '{user1}' AND id2 = '{user2}') OR (id2 = '{user1}' AND id1 = '{user2}')", dbCon.Connection);
                var reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        ship = new LoriShip(reader.GetUInt64(0), reader.GetUInt64(1), reader.GetString(2), reader.GetString(3), reader.GetString(4), reader.GetInt32(5));
                    }
                }

                reader.Close();
                cmd.Dispose();
                dbCon.Close();
            }
            return(ship);
        }
Esempio n. 2
0
        public static void SaveShip(LoriShip ship)
        {
            var save = Task.Run(async() =>
            {
                var dbCon          = DBConnection.Instance();
                dbCon.DatabaseName = LCommandHandler.DATABASE_NAME;

                if (dbCon.IsConnect())
                {
                    while (LCommandHandler.Saving)
                    {
                        await Task.Delay(50);
                    }
                    LCommandHandler.Saving = true;

                    var cmd = new MySqlCommand("INSERT INTO relationships (id1, id2, name1, name2, shipname, percentage) VALUES (@id1, @id2, @name1, @name2, @shipname, @percentage)", dbCon.Connection);
                    cmd.Parameters.Add("@id1", MySqlDbType.UInt64).Value       = ship.User1;
                    cmd.Parameters.Add("@id2", MySqlDbType.UInt64).Value       = ship.User2;
                    cmd.Parameters.Add("@name1", MySqlDbType.String).Value     = ship.Name1;
                    cmd.Parameters.Add("@name2", MySqlDbType.String).Value     = ship.Name2;
                    cmd.Parameters.Add("@shipname", MySqlDbType.String).Value  = ship.Shipname;
                    cmd.Parameters.Add("@percentage", MySqlDbType.Int32).Value = ship.Percentage;

                    try
                    {
                        await cmd.ExecuteNonQueryAsync();
                        cmd.Dispose();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"Failed to add relationship to database: {e.Message}");
                        cmd.Dispose();
                    }

                    LCommandHandler.Saving = false;
                    dbCon.Close();
                }
            });
        }
Esempio n. 3
0
        private async Task ShipAsync(IUser user = null, IUser user1 = null)
        {
            await Context.Message.DeleteAsync();

            if (user == null)
            {
                BotConfig conf  = BotConfig.Load();
                var       gconf = conf.GetConfig(Context.Guild.Id);
                await MessageUtil.SendErrorAsync((Context.Channel as ITextChannel), "Incorrect Command Usage", $"Correct Usage: `{gconf.Prefix}ship <user>` or `{gconf.Prefix}ship <user1> <user2>`", false);

                return;
            }
            if (user1 == null)
            {
                user1 = (Context.User as IUser);
            }

            string name1      = StringUtil.ToUppercaseFirst(user.Username);
            string name2      = StringUtil.ToUppercaseFirst(user1.Username);
            string title      = "";
            string message    = "";
            int    score      = 0;
            string name       = "";
            string desc       = "";
            float  percentage = 0f;

            // Check if entry exists in database
            var ship = RelationshipDatabase.DoesExist(user.Id, user1.Id);

            if (ship != null)
            {
                score      = ship.Percentage;
                name       = ship.Shipname;
                desc       = ship.ToDescriptiveString();
                percentage = ship.ToActualPercentage();
            }
            else
            {
                Random rnd = new Random();
                score = rnd.Next(10, 10000);
                name  = $"{name1[0].ToString().ToUpper()}{name1[1]}{name2[name2.Length - 3]}{name2[name2.Length - 2]}{name2[name2.Length - 1]}";

                ship = new LoriShip(user.Id, user1.Id, name1, name2, name, score);
                RelationshipDatabase.SaveShip(ship);
            }

            if (percentage > 95f)
            {
                title   = $"{name1} 💘 {name2}";
                message = desc;
            }
            else if (percentage > 55f)
            {
                title   = $"{name1} ❤️ {name2}";
                message = desc;
            }
            else
            {
                title   = $"{name1} 💔 {name2}";
                message = desc;
            }

            EmbedBuilder embed = new EmbedBuilder()
            {
                Color       = Color.DarkPurple,
                Title       = title,
                Description = message,
                Footer      = new EmbedFooterBuilder()
                {
                    Text = $"{EmojiUtil.GetRandomEmoji()}  Requested by {Context.User.Username}#{Context.User.Discriminator}."
                },
            };
            await Context.Channel.SendMessageAsync(null, false, embed.Build());
        }