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); }
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(); } }); }
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()); }