module Degenz.XP open DSharpPlus open DSharpPlus.Entities type RewardType = | Currency of int // | RandomItem of itemType : ItemType * amount : int | SpecialItem of id : int [] let ToroRojo = 13 [] let AnabolicCycle = 14 let levels = [| 50 100 160 250 |] let getLevel totalXp = levels |> Array.toList |> List.foldi (fun i acc elem -> if totalXp < elem then acc else i + 1) 0 let RewardTable = [| [| Currency 100 ; SpecialItem ToroRojo |] [| Currency 150 ; SpecialItem AnabolicCycle |] [| Currency 200 ; SpecialItem ToroRojo |] [| Currency 100 ; SpecialItem AnabolicCycle |] |] let getRewardsEmbed level (player : PlayerData) = let buttons = [ DiscordButtonComponent(ButtonStyle.Success, $"Reward-levelup-{level}", "Claim") ] |> Seq.cast let header = DiscordEmbedBuilder() .WithTitle($"Level Up") .WithDescription($"You reached Level {level}") .WithImageUrl("https://thumbs.dreamstime.com/z/pixel-art-design-outdoor-landscape-background-colorful-arcade-screen-game-banner-button-level-up-concept-retro-style-180858223.jpg") let footer = DiscordEmbedBuilder() .WithTitle("Rewards") .AddField("$GBT", $"{RewardTable.[level].[0]}", true) .AddField("Items", $"{RewardTable.[level].[1]}", true) DiscordFollowupMessageBuilder() .AddEmbeds([ header ; footer ] |> List.map (fun e -> e.Build())) .AddComponents(buttons) .AsEphemeral(true)