Grant role (comment out) depending on how many recruits

This commit is contained in:
Joseph Ferano 2022-06-11 22:54:08 +07:00
parent 810384d3fe
commit fc63202535
5 changed files with 28 additions and 18 deletions

View File

@ -108,11 +108,11 @@ GuildEnvironment.botClientJpeg <- Some jpegBot
storeBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously storeBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
GuildEnvironment.botClientStore <- Some storeBot GuildEnvironment.botClientStore <- Some storeBot
adminBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
hackerBattleBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously hackerBattleBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
GuildEnvironment.botClientHacker <- Some hackerBattleBot GuildEnvironment.botClientHacker <- Some hackerBattleBot
adminBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
inviterBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously inviterBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
GuildEnvironment.botClientRecruit <- Some inviterBot GuildEnvironment.botClientRecruit <- Some inviterBot

View File

@ -432,13 +432,13 @@ let sendBackalleyEmbed (ctx : IDiscordContext) =
let embed = DiscordEmbedBuilder() let embed = DiscordEmbedBuilder()
embed.ImageUrl <- "https://s7.gifyu.com/images/ezgif.com-gif-maker-23203b9dca779ba7cf.gif" embed.ImageUrl <- "https://s7.gifyu.com/images/ezgif.com-gif-maker-23203b9dca779ba7cf.gif"
embed.Title <- "🎟️ Raffle Store" embed.Title <- "🎟️ Raffle Store"
embed.Color <- DiscordColor.Black embed.Color <- DiscordColor.Lilac
embed.Description <- $"Hey, what do you want, kid?\nI aint got all day" embed.Description <- $"Hey, what do you want, kid?\nI aint got all day"
builder.AddEmbed embed |> ignore builder.AddEmbed embed |> ignore
let button1 = DiscordButtonComponent(ButtonStyle.Danger, $"ShowStore-0-BACKALLEY1", $"NFT Raffles") :> DiscordComponent let button1 = DiscordButtonComponent(ButtonStyle.Danger, $"ShowStore-0-BACKALLEY1", $"NFT Raffle") :> DiscordComponent
let button2 = DiscordButtonComponent(ButtonStyle.Success, $"ShowStore-0-BACKALLEY2", $"Whitelist Raffles") :> DiscordComponent let button2 = DiscordButtonComponent(ButtonStyle.Success, $"ShowStore-0-BACKALLEY2", $"Whitelist Raffle") :> DiscordComponent
// let button3 = DiscordButtonComponent(ButtonStyle.Success, $"ShowStore-0-BACKALLEY3", $"USDT Raffles") :> DiscordComponent // let button3 = DiscordButtonComponent(ButtonStyle.Success, $"ShowStore-0-BACKALLEY3", $"USDT Raffles") :> DiscordComponent
let button4 = DiscordButtonComponent(ButtonStyle.Primary, $"ShowJpegInventory-0-0", $"View My Stash") :> DiscordComponent let button4 = DiscordButtonComponent(ButtonStyle.Primary, $"ShowJpegInventory-0-0", $"My Stash") :> DiscordComponent
builder.AddComponents [| button1 ; button2 ; button4 |] |> ignore builder.AddComponents [| button1 ; button2 ; button4 |] |> ignore
do! GuildEnvironment.botClientJpeg.Value.SendMessageAsync(channel, builder) do! GuildEnvironment.botClientJpeg.Value.SendMessageAsync(channel, builder)

View File

@ -60,6 +60,9 @@ let roleWhitelist = getId "ROLE_WHITELIST"
let roleWhiteOG = getId "ROLE_WHITEOG" let roleWhiteOG = getId "ROLE_WHITEOG"
let roleAdmin = getId "ROLE_ADMIN" let roleAdmin = getId "ROLE_ADMIN"
let roleMagicEden = getId "ROLE_MAGICEDEN" let roleMagicEden = getId "ROLE_MAGICEDEN"
let roleRecruiter1x = getId "ROLE_RECRUITER_1X"
let roleRecruiter2x = getId "ROLE_RECRUITER_2X"
let roleRecruiter3x = getId "ROLE_RECRUITER_3X"
let mutable botClientRecruit : DiscordClient option = None let mutable botClientRecruit : DiscordClient option = None
let mutable botClientHacker : DiscordClient option = None let mutable botClientHacker : DiscordClient option = None
let mutable botClientSlots : DiscordClient option = None let mutable botClientSlots : DiscordClient option = None

View File

@ -286,13 +286,13 @@ let private processNewUser (eventArgs : GuildMemberAddEventArgs) =
| None -> () | None -> ()
} :> Task } :> Task
let acceptInvite (guild : DiscordGuild) discordId memberName = let acceptInvite (guild : DiscordGuild) (user : DiscordMember) =
task { task {
match! checkInviteAccepted discordId with match! checkInviteAccepted user.Id with
| false -> | false ->
let! _ = markInvitedAccepted discordId |> Async.Ignore let! _ = markInvitedAccepted user.Id |> Async.Ignore
try try
let! invite = getInviteFromInvitedUser discordId let! invite = getInviteFromInvitedUser user.Id
let! player = DbService.tryFindPlayer invite.Inviter let! player = DbService.tryFindPlayer invite.Inviter
match player with match player with
| Some player -> | Some player ->
@ -300,14 +300,21 @@ let acceptInvite (guild : DiscordGuild) discordId memberName =
do! match GuildEnvironment.botClientRecruit with do! match GuildEnvironment.botClientRecruit with
| Some recruitBot -> async { | Some recruitBot -> async {
let builder = DiscordMessageBuilder() let builder = DiscordMessageBuilder()
builder.WithContent($"{memberName} was recruited and is now a Degen. **{player.Name}** just earned `{InviteRewardAmount} 💰$GBT` for their efforts! - <@!{player.DiscordId}>") |> ignore builder.WithContent($"{user.Username} was recruited and is now a Degen. **{player.Name}** just earned `{InviteRewardAmount} 💰$GBT` for their efforts! - <@!{player.DiscordId}>") |> ignore
let channel = guild.GetChannel(GuildEnvironment.channelEventsHackerBattle) let channel = guild.GetChannel(GuildEnvironment.channelEventsHackerBattle)
do! recruitBot.SendMessageAsync(channel, builder) do! recruitBot.SendMessageAsync(channel, builder)
|> Async.AwaitTask |> Async.AwaitTask
|> Async.Ignore |> Async.Ignore
} }
| None -> async.Return() | None -> async.Return()
do! Analytics.invitedUserAccepted invite.Code player.DiscordId discordId player.Name memberName let role =
match invite.Count with
| count when count > 10 -> guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter3x)
| count when count > 5 -> guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter2x)
| _ -> guild.Roles.TryGetValue(GuildEnvironment.roleRecruiter1x)
|> snd
do! user.GrantRoleAsync(role)
do! Analytics.invitedUserAccepted invite.Code player.DiscordId user.Id player.Name user.Username
| None -> return () | None -> return ()
with _ -> () with _ -> ()
| true -> return () | true -> return ()
@ -327,13 +334,13 @@ let sendInitialEmbed (ctx : IDiscordContext) =
2️⃣ Share your unique link with Friends 2️⃣ Share your unique link with Friends
**__Bonus__** **__Bonus__**
💰 Earn an extra 300 $GBT for every invite! 💰 Earn an extra {InviteRewardAmount} $GBT for every invite!
**Every invite increases your chances of winning* **Every invite increases your chances of winning*
""" """
let embed = let embed =
DiscordEmbedBuilder() DiscordEmbedBuilder()
.WithColor(DiscordColor.CornflowerBlue) .WithColor(DiscordColor.Gold)
.WithDescription(rewardMsg) .WithDescription(rewardMsg)
.WithImageUrl("https://s8.gifyu.com/images/invite-banner-usdcb670496dc3653cb3.png") .WithImageUrl("https://s8.gifyu.com/images/invite-banner-usdcb670496dc3653cb3.png")
.WithTitle("Invite Degenz") .WithTitle("Invite Degenz")
@ -376,7 +383,7 @@ To confirm your **Whitelist** please submit it below:
**Check status anytime to double check it worked*""" **Check status anytime to double check it worked*"""
let embed = let embed =
DiscordEmbedBuilder() DiscordEmbedBuilder()
.WithColor(DiscordColor.White) .WithColor(DiscordColor.Teal)
.WithDescription(rewardMsg) .WithDescription(rewardMsg)
.WithImageUrl("https://s8.gifyu.com/images/whitelist-submit-banner7.png") .WithImageUrl("https://s8.gifyu.com/images/whitelist-submit-banner7.png")
.WithTitle("Submit Your Solana Wallet Address") .WithTitle("Submit Your Solana Wallet Address")
@ -446,7 +453,7 @@ let handleMemberUpdated (client : DiscordClient) (event : GuildMemberUpdateEvent
| role::_ -> | role::_ ->
if role.Name = "Degen" then if role.Name = "Degen" then
let (_,guild) = client.Guilds.TryGetValue(GuildEnvironment.guildId) let (_,guild) = client.Guilds.TryGetValue(GuildEnvironment.guildId)
do! acceptInvite guild event.Member.Id event.Member.Username |> Async.AwaitTask do! acceptInvite guild event.Member |> Async.AwaitTask
return () return ()
} :> Task } :> Task

View File

@ -22,11 +22,11 @@ let sendInitialEmbed (ctx : IDiscordContext) =
let embed = DiscordEmbedBuilder() let embed = DiscordEmbedBuilder()
embed.ImageUrl <- "https://s8.gifyu.com/images/whitelist-banner-smaller2.gif" embed.ImageUrl <- "https://s8.gifyu.com/images/whitelist-banner-smaller2.gif"
embed.Title <- "Degenz Game Whitelist" embed.Title <- "Degenz Game Whitelist"
embed.Color <- DiscordColor.White embed.Color <- DiscordColor.Azure
embed.Description <- $""" embed.Description <- $"""
**__Requirements:__** **__Requirements:__**
You need to BUY Whitelist with 💰 $GBT You need to BUY Whitelist with 💰 $GBT
You must have INVITED at least 1 Degen You must also have INVITED at least 1 Degen
**__To Earn $GBT:__** **__To Earn $GBT:__**
1️⃣ Invite Degenz in <#{GuildEnvironment.channelRecruitment}> 1️⃣ Invite Degenz in <#{GuildEnvironment.channelRecruitment}>