From 810384d3fe6956fda8714fce301435fe5121bda8 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sat, 11 Jun 2022 00:24:22 +0700 Subject: [PATCH] Roles and copy --- Bot/Bot.fs | 12 ++++++------ Bot/DbService.fs | 18 +++++++++--------- Bot/Games/Store.fs | 38 +++++++++++++++++++++++++++++++------- Bot/GuildEnvironment.fs | 3 ++- 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/Bot/Bot.fs b/Bot/Bot.fs index a2c5c87..887c5cc 100644 --- a/Bot/Bot.fs +++ b/Bot/Bot.fs @@ -102,6 +102,12 @@ let asdf _ (event : DSharpPlus.EventArgs.InteractionCreateEventArgs) = :> Task //hackerBattleBot.add_InteractionCreated(AsyncEventHandler(asdf)) +jpegBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously +GuildEnvironment.botClientJpeg <- Some jpegBot + +storeBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously +GuildEnvironment.botClientStore <- Some storeBot + hackerBattleBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously GuildEnvironment.botClientHacker <- Some hackerBattleBot @@ -110,12 +116,6 @@ adminBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously inviterBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously GuildEnvironment.botClientRecruit <- Some inviterBot -storeBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously -GuildEnvironment.botClientStore <- Some storeBot - -jpegBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously -GuildEnvironment.botClientJpeg <- Some jpegBot - slotsBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously GuildEnvironment.botClientSlots <- Some slotsBot diff --git a/Bot/DbService.fs b/Bot/DbService.fs index a39dd7a..e01c9f4 100644 --- a/Bot/DbService.fs +++ b/Bot/DbService.fs @@ -105,7 +105,7 @@ let getStoreItems (storeId : string) = |> Sql.connect |> Sql.parameters [ "sid", Sql.string storeId ] |> Sql.query """ - SELECT store_id,stock,available,limit_stock,i.id,name,description,icon_url,image_url,category, + SELECT store_id,stock,available,limit_stock,i.id,name,description,icon_url,image_url,category,require_role,require_invites, buy_price,sell_price,rate_limit,expiration,drop_chance,can_trade,can_consume,attack_power,defense_power,class_name,max_stack,mods FROM store_item JOIN item i on store_item.item_id = i.id @@ -116,8 +116,8 @@ let getStoreItems (storeId : string) = Stock = reader.int "stock" LimitStock = reader.bool "limit_stock" Available = reader.bool "available" - RequiresInvites = None - RequiresRole = None + RequiresInvites = reader.intOrNone "require_invites" + RequiresRole = reader.stringOrNone "require_role" |> Option.map uint64 StoreItem.Item = readItem reader }) |> Async.AwaitTask @@ -126,7 +126,7 @@ let getAllActiveStoreItems () = connStr |> Sql.connect |> Sql.query """ - SELECT store_id,stock,available,limit_stock,i.id,name,description,icon_url,image_url,category, + SELECT store_id,stock,available,limit_stock,i.id,name,description,icon_url,image_url,category,require_role,require_invites, buy_price,sell_price,rate_limit,expiration,drop_chance,can_trade,can_consume,attack_power,defense_power,class_name,max_stack,mods FROM store_item JOIN item i on store_item.item_id = i.id @@ -137,8 +137,8 @@ let getAllActiveStoreItems () = Stock = reader.int "stock" LimitStock = reader.bool "limit_stock" Available = reader.bool "available" - RequiresInvites = None - RequiresRole = None + RequiresInvites = reader.intOrNone "require_invites" + RequiresRole = reader.stringOrNone "require_role" |> Option.map uint64 StoreItem.Item = readItem reader }) |> Async.AwaitTask @@ -148,7 +148,7 @@ let getStoreItemBySymbol (itemSymbol : string) = |> Sql.connect |> Sql.parameters [ "iid", Sql.string itemSymbol ] |> Sql.query """ - SELECT store_id,stock,available,limit_stock,i.id,name,description,icon_url,image_url,category, + SELECT store_id,stock,available,limit_stock,i.id,name,description,icon_url,image_url,category,require_role,require_invites, buy_price,sell_price,rate_limit,expiration,drop_chance,can_trade,can_consume,attack_power,defense_power,class_name,max_stack,mods FROM store_item JOIN item i on store_item.item_id = i.id @@ -159,8 +159,8 @@ let getStoreItemBySymbol (itemSymbol : string) = Stock = reader.int "stock" LimitStock = reader.bool "limit_stock" Available = reader.bool "available" - RequiresInvites = None - RequiresRole = None + RequiresInvites = reader.intOrNone "require_invites" + RequiresRole = reader.stringOrNone "require_role" |> Option.map uint64 StoreItem.Item = readItem reader }) |> Async.AwaitTask diff --git a/Bot/Games/Store.fs b/Bot/Games/Store.fs index 58cbf99..603e790 100644 --- a/Bot/Games/Store.fs +++ b/Bot/Games/Store.fs @@ -272,7 +272,23 @@ let checkHasRequiredInvites storeItem player = if amount <= totalInvites then return Ok () else - return "" |> embedWithError + let embedError = + let embed = DiscordEmbedBuilder() + embed.Description <- $""" +❌ **Degen**, can’t you **READ**?! +⚠️ **__Entry Requirements:__** 1x Invited User + +To Enter this Raffle you must have **__INVITED__** 1 Degen. +☑️ Go to <#{GuildEnvironment.channelRecruitment}> +☑️ Invite just 1 Degen! + +Then try again… +""" + DiscordFollowupMessageBuilder() + .AsEphemeral() + .AddEmbed(embed) + |> Error + return embedError | None -> return Ok () } @@ -282,13 +298,21 @@ let checkHasRequiredRole storeItem (user : DiscordMember) = if user.Roles |> Seq.exists (fun r -> r.Id = roleId) then Ok () else - let builder = DiscordFollowupMessageBuilder().AsEphemeral() let embed = DiscordEmbedBuilder() embed.Description <- $""" - - """ - builder.AddEmbed(embed) - "" |> embedWithError +❌ **Degen**, can’t you **READ**?! +⚠️ **__Entry Requirements:__** Have the <@&{GuildEnvironment.roleMagicEden}> + +To get the <@&{GuildEnvironment.roleMagicEden}> role: +☑️ Upvote us on magic here: https://magiceden.io/drops/degenz_game +☑️ Post Proof in <#{GuildEnvironment.channelQuestProof}> + +Then try again… +""" + DiscordFollowupMessageBuilder() + .AsEphemeral() + .AddEmbed(embed) + |> Error | None -> Ok () // TODO: When you buy a shield, prompt the user to activate it @@ -409,7 +433,7 @@ let sendBackalleyEmbed (ctx : IDiscordContext) = embed.ImageUrl <- "https://s7.gifyu.com/images/ezgif.com-gif-maker-23203b9dca779ba7cf.gif" embed.Title <- "🎟️ Raffle Store" embed.Color <- DiscordColor.Black - embed.Description <- $"Hey, what do you want, kid??\nI ain’t got all day… <:JpegJohnny:973507064217337856>" + embed.Description <- $"Hey, what do you want, kid?\nI ain’t got all day…" builder.AddEmbed embed |> ignore let button1 = DiscordButtonComponent(ButtonStyle.Danger, $"ShowStore-0-BACKALLEY1", $"NFT Raffles") :> DiscordComponent let button2 = DiscordButtonComponent(ButtonStyle.Success, $"ShowStore-0-BACKALLEY2", $"Whitelist Raffles") :> DiscordComponent diff --git a/Bot/GuildEnvironment.fs b/Bot/GuildEnvironment.fs index 614cb33..a0b440c 100644 --- a/Bot/GuildEnvironment.fs +++ b/Bot/GuildEnvironment.fs @@ -45,7 +45,7 @@ let channelSubmitWallet = getId "CHANNEL_SUBMIT_WALLET" let channelAnnouncements = getId "CHANNEL_ANNOUNCEMENTS" let channelGeneral = getId "CHANNEL_GENERAL" let channelQuests = getId "CHANNEL_QUESTS" - +let channelQuestProof = getId "CHANNEL_QUEST_PROOF" //let channelThievery = getId "CHANNEL_THIEVERY" let botIdHackerBattle = getId "BOT_HACKER_BATTLE" let botIdArmory = getId "BOT_ARMORY" @@ -59,6 +59,7 @@ let roleWhiteOGPending = getId "ROLE_WHITEOG_PENDING" let roleWhitelist = getId "ROLE_WHITELIST" let roleWhiteOG = getId "ROLE_WHITEOG" let roleAdmin = getId "ROLE_ADMIN" +let roleMagicEden = getId "ROLE_MAGICEDEN" let mutable botClientRecruit : DiscordClient option = None let mutable botClientHacker : DiscordClient option = None let mutable botClientSlots : DiscordClient option = None