Roles and copy

This commit is contained in:
Joseph Ferano 2022-06-11 00:24:22 +07:00
parent db0088ee2f
commit 810384d3fe
4 changed files with 48 additions and 23 deletions

View File

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

View File

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

View File

@ -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**, cant 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 <- $"""
**Degen**, cant you **READ**?!
⚠️ **__Entry Requirements:__** Have the <@&{GuildEnvironment.roleMagicEden}>
"""
builder.AddEmbed(embed)
"" |> embedWithError
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 aint got all day… <:JpegJohnny:973507064217337856>"
embed.Description <- $"Hey, what do you want, kid?\nI aint 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

View File

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