Return last 10 invites, make everything prettier

This commit is contained in:
Joseph Ferano 2022-03-25 23:31:14 +07:00
parent 0d39032095
commit 9046aee6b6
2 changed files with 47 additions and 35 deletions

View File

@ -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

View File

@ -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 ->
@ -226,7 +225,7 @@ let private getAttributions (ctx : IDiscordContext) userId = task {
}
let private getInvitedUsersForId (ctx : IDiscordContext) = task {
let! users = getInvitedUsers(ctx.GetDiscordMember().Id)
let! users = getInvitedUsers (ctx.GetDiscordMember().Id)
let sb = StringBuilder()
let mutable count = 0
for user in users do
@ -313,12 +312,12 @@ let sendInitialEmbed (client : DiscordClient) =
embed.ImageUrl <- "https://s1.gifyu.com/images/whitelist-image-2.gif"
embed.Title <- "Degenz Game"
embed.Description <- """
Mint Date: **April 2022**
Supply: **3,333**
Price: **1.984 $SOL**
Mint Date: **April 2022**
Supply: **3,333**
Price: **1.984 $SOL**
Your NFT will be your In-Game Character that provides you with unique traits, and abilities in game.
"""
Your NFT will be your In-Game Character that provides you with unique traits, and abilities in game.
"""
builder.AddEmbed embed |> ignore
let button = DiscordButtonComponent(ButtonStyle.Success, $"GimmeWhitelist", $"Give Me Whitelist") :> DiscordComponent
builder.AddComponents [| button |] |> ignore
@ -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 aint 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 Brothers 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) =