Return last 10 invites, make everything prettier
This commit is contained in:
		
							parent
							
								
									0d39032095
								
							
						
					
					
						commit
						9046aee6b6
					
				@ -85,7 +85,6 @@ if guild <> 922419263275425832uL then
 | 
			
		||||
//    Trainer.sendInitialEmbed hackerBattleBot
 | 
			
		||||
    InviteTracker.sendInitialEmbed inviterBot
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
hackerBattleBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
 | 
			
		||||
GuildEnvironment.botUserHackerBattle <- Some hackerBattleBot.CurrentUser
 | 
			
		||||
 | 
			
		||||
@ -95,8 +94,6 @@ GuildEnvironment.botUserArmory <- Some storeBot.CurrentUser
 | 
			
		||||
inviterBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
 | 
			
		||||
//stealBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
let rec loop areBotsRunning =
 | 
			
		||||
    async {
 | 
			
		||||
        if not (File.Exists "fsharp-bots") then
 | 
			
		||||
 | 
			
		||||
@ -161,23 +161,22 @@ let private getInvitedUsers userId =
 | 
			
		||||
    |> Sql.query """
 | 
			
		||||
            WITH invite AS (SELECT id FROM invite WHERE inviter = @did)
 | 
			
		||||
            SELECT discord_id FROM invited_user, invite
 | 
			
		||||
            WHERE invite.id = invited_user.invite_id AND invited_user.accepted = true;
 | 
			
		||||
            WHERE invite.id = invited_user.invite_id AND invited_user.accepted = true
 | 
			
		||||
            ORDER BY created_at DESC LIMIT 10
 | 
			
		||||
        """
 | 
			
		||||
    |> Sql.executeAsync (fun read -> read.string "discord_id" |> uint64)
 | 
			
		||||
    |> Async.AwaitTask
 | 
			
		||||
 | 
			
		||||
let guildInviteEmbed showWhitelistReward =
 | 
			
		||||
let guildInviteEmbed =
 | 
			
		||||
    let rewardMsg =
 | 
			
		||||
        if showWhitelistReward then
 | 
			
		||||
            $"**⏀ | Your Mission:**\nUse the link to **recruit** Degenz into Beautopia©.\n\n" +
 | 
			
		||||
            $"**⌼ | Your Reward:**\nGet awarded **Whitelist**."
 | 
			
		||||
        else
 | 
			
		||||
            $"**⏀ | Your Mission:**\nUse the link to share it with Degenz you want to `/recruit`.\n\n" +
 | 
			
		||||
            $"**⌼ | Your Reward:**\n`Earn {InviteRewardAmount} $GBT` 💰 for every Degen you've `/recruited`."
 | 
			
		||||
        $"**⏀ | Your Mission:**\nShare your UNIQUE LINK with any Degenz you want to `/recruit`.\n\n" +
 | 
			
		||||
        $"**⌼ | Your Reward:**\n`Earn {InviteRewardAmount} $GBT` 💰 for every Degen you `/recruit`.\n\n" +
 | 
			
		||||
        $"To check how many Degenz you have recruited into the army just type `/recruited`"
 | 
			
		||||
    let embed =
 | 
			
		||||
        DiscordEmbedBuilder()
 | 
			
		||||
            .WithColor(DiscordColor.Green)
 | 
			
		||||
            .WithDescription(rewardMsg)
 | 
			
		||||
            .WithImageUrl("https://pbs.twimg.com/profile_banners/1449270642340089856/1640071520/1500x500")
 | 
			
		||||
            .WithImageUrl("https://s1.gifyu.com/images/whitelist-image-banner-3.gif")
 | 
			
		||||
            .WithTitle("Recruitment")
 | 
			
		||||
 | 
			
		||||
    let builder =
 | 
			
		||||
@ -185,10 +184,10 @@ let guildInviteEmbed showWhitelistReward =
 | 
			
		||||
            .AddEmbed(embed)
 | 
			
		||||
            .AsEphemeral(true)
 | 
			
		||||
 | 
			
		||||
    let button = DiscordButtonComponent(ButtonStyle.Success, $"CreateGuildInvite", $"Give it to me") :> DiscordComponent
 | 
			
		||||
    let button = DiscordButtonComponent(ButtonStyle.Success, $"CreateGuildInvite", $"Give Me the Link") :> DiscordComponent
 | 
			
		||||
    builder.AddComponents [| button |]
 | 
			
		||||
 | 
			
		||||
let private showInviteMessage (ctx : IDiscordContext) showWhitelistReward =
 | 
			
		||||
let private showInviteMessage (ctx : IDiscordContext) =
 | 
			
		||||
    task {
 | 
			
		||||
        let builder = DiscordInteractionResponseBuilder().AsEphemeral(true)
 | 
			
		||||
        do! ctx.Respond(InteractionResponseType.DeferredChannelMessageWithSource, builder)
 | 
			
		||||
@ -197,7 +196,7 @@ let private showInviteMessage (ctx : IDiscordContext) showWhitelistReward =
 | 
			
		||||
        | Some player ->
 | 
			
		||||
            let ( result , hackerRole ) = ctx.GetGuild().Roles.TryGetValue(GuildEnvironment.roleHacker)
 | 
			
		||||
            match player.Active , result && Seq.contains hackerRole (ctx.GetDiscordMember().Roles) with
 | 
			
		||||
            | true , true -> do! ctx.FollowUp(guildInviteEmbed showWhitelistReward)
 | 
			
		||||
            | true , true -> do! ctx.FollowUp(guildInviteEmbed)
 | 
			
		||||
            | false , _   -> do! sendFollowUpMessage ctx $"You're not in the game! Go to <#{GuildEnvironment.channelShelters}> NOW to get assigned a private bunk, and **JOIN THE GAME!**"
 | 
			
		||||
            | _ , false   -> do! sendFollowUpMessage ctx $"You still haven't completed training! Go to <#{GuildEnvironment.channelTraining}> NOW to become a **HACKER**!"
 | 
			
		||||
        | None ->
 | 
			
		||||
@ -358,6 +357,14 @@ let handleGimmeWhitelist (ctx : IDiscordContext) =
 | 
			
		||||
        let builder = DiscordInteractionResponseBuilder().AsEphemeral(true)
 | 
			
		||||
        do! ctx.Respond(InteractionResponseType.DeferredChannelMessageWithSource, builder)
 | 
			
		||||
 | 
			
		||||
        let whitelistEmbed = DiscordEmbedBuilder()
 | 
			
		||||
        let thumb = DiscordEmbedBuilder.EmbedThumbnail()
 | 
			
		||||
        thumb.Url <- "https://s7.gifyu.com/images/Card-5x-rotate.png"
 | 
			
		||||
        whitelistEmbed.Thumbnail <- thumb
 | 
			
		||||
        whitelistEmbed.Title <- "1x Degenz Game Whitelist"
 | 
			
		||||
        whitelistEmbed.AddField("Mint April 2022         | ", "Join us on the moon", true) |> ignore
 | 
			
		||||
        whitelistEmbed.AddField("Price 💰", $"{WhitelistPrice} $GBT", true) |> ignore
 | 
			
		||||
 | 
			
		||||
        let builder = DiscordFollowupMessageBuilder().AsEphemeral(true)
 | 
			
		||||
        match! tryGrantWhitelist ctx with
 | 
			
		||||
        | NotInGame ->
 | 
			
		||||
@ -375,31 +382,38 @@ Go to <#{GuildEnvironment.channelShelters}> NOW to get assigned a private bunk,
 | 
			
		||||
Come hang with all the other VIP Degenz in the <#{GuildEnvironment.channelElite}>
 | 
			
		||||
"""
 | 
			
		||||
        | NotEnoughGBT total ->
 | 
			
		||||
            builder.AddComponents([ DiscordButtonComponent(ButtonStyle.Success, $"BuyWhitelist", $"Buy Now", true) :> DiscordComponent ]) |> ignore
 | 
			
		||||
            builder.Content <- $"""
 | 
			
		||||
            whitelistEmbed.Color <- DiscordColor.Red
 | 
			
		||||
            let buyBtn = DiscordButtonComponent(ButtonStyle.Success, $"BuyWhitelist", $"Buy Now", true) :> DiscordComponent
 | 
			
		||||
            let recruitBtn = DiscordButtonComponent(ButtonStyle.Danger, $"ShowRecruitmentEmbed", $"Recruit Now") :> DiscordComponent
 | 
			
		||||
            let msgEmbed = DiscordEmbedBuilder()
 | 
			
		||||
            msgEmbed.Color <- DiscordColor.Red
 | 
			
		||||
            msgEmbed.Description <- $"""
 | 
			
		||||
Oh no!
 | 
			
		||||
 | 
			
		||||
You don't have enough **$GBT** to buy a WHITELIST spot!
 | 
			
		||||
 | 
			
		||||
WHITELIST ain’t cheap, and looks like you're `{WhitelistPrice - total} $GBT` short.
 | 
			
		||||
Come back when you have `{WhitelistPrice - total}` more $GBT.
 | 
			
		||||
 | 
			
		||||
Go earn more $GBT, and come back when you have `{WhitelistPrice} $GBT`!
 | 
			
		||||
 | 
			
		||||
`/recruit` other Degenz and get `{InviteRewardAmount} 💰 $GBT` for every Degen you recruit!
 | 
			
		||||
 | 
			
		||||
`/hack` other Degenz in <#{GuildEnvironment.channelBattle}> to steal their **$GBT**
 | 
			
		||||
 | 
			
		||||
`/toss` against <@{GuildEnvironment.botIdTosserTed}> in <#{GuildEnvironment.channelTosserTed}> to try double up!
 | 
			
		||||
 | 
			
		||||
Good luck Degen ✊
 | 
			
		||||
The quickest way to earn $GBT is to `/recruit`. You will earn `{InviteRewardAmount} 💰 $GBT` for every Degen you `/recruit`!
 | 
			
		||||
"""
 | 
			
		||||
            builder.AddComponents([ buyBtn ; recruitBtn ]) |> ignore
 | 
			
		||||
            builder.AddEmbed(msgEmbed) |> ignore
 | 
			
		||||
            builder.AddEmbed(whitelistEmbed) |> ignore
 | 
			
		||||
        | Granted _ ->
 | 
			
		||||
            whitelistEmbed.Color <- DiscordColor.Green
 | 
			
		||||
            builder.AddComponents([ DiscordButtonComponent(ButtonStyle.Success, $"BuyWhitelist", $"Buy Now") :> DiscordComponent ]) |> ignore
 | 
			
		||||
            builder.Content <- """
 | 
			
		||||
            let msgEmbed = DiscordEmbedBuilder()
 | 
			
		||||
            msgEmbed.Title <- "Buy Whitelist"
 | 
			
		||||
            msgEmbed.Color <- DiscordColor.Green
 | 
			
		||||
            msgEmbed.Description <- $"""
 | 
			
		||||
Look at you Degen, you played Big Brother’s games and made it out alive!
 | 
			
		||||
 | 
			
		||||
Now you can use your $GBT to pay for one of our coveted Whitelist spots.
 | 
			
		||||
 | 
			
		||||
Click buy now below and the role will be auto assigned to you.
 | 
			
		||||
"""
 | 
			
		||||
            builder.AddEmbed(msgEmbed) |> ignore
 | 
			
		||||
            builder.AddEmbed(whitelistEmbed) |> ignore
 | 
			
		||||
        do! ctx.FollowUp(builder)
 | 
			
		||||
    } :> Task
 | 
			
		||||
 | 
			
		||||
@ -469,6 +483,7 @@ let handleButtonEvent  (_ : DiscordClient) (event : ComponentInteractionCreateEv
 | 
			
		||||
    | id when id.StartsWith("GimmeWhitelist")  -> handleGimmeWhitelist eventCtx
 | 
			
		||||
    | id when id.StartsWith("BuyWhitelist")  -> handleBuyWhitelist eventCtx
 | 
			
		||||
    | id when id.StartsWith("CreateGuildInvite")  -> handleCreateInvite eventCtx
 | 
			
		||||
    | id when id.StartsWith("ShowRecruitmentEmbed")  -> showInviteMessage eventCtx
 | 
			
		||||
    | _ ->
 | 
			
		||||
        task {
 | 
			
		||||
            let builder = DiscordInteractionResponseBuilder()
 | 
			
		||||
@ -489,7 +504,7 @@ type Inviter() =
 | 
			
		||||
 | 
			
		||||
    [<SlashCommand("recruit", "Recruit another user to this discord and earn rewards")>]
 | 
			
		||||
    member this.CreateInvite (ctx : InteractionContext) =
 | 
			
		||||
        showInviteMessage (DiscordInteractionContext ctx) false
 | 
			
		||||
        showInviteMessage (DiscordInteractionContext ctx)
 | 
			
		||||
 | 
			
		||||
    [<SlashCommand("recruited", "Get total invites from a specific user")>]
 | 
			
		||||
    member this.ListInvitedPeople (ctx : InteractionContext) =
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user