Grab pinned embed rather than requiring a new one

This commit is contained in:
Joseph Ferano 2022-04-21 11:03:01 +07:00
parent b78fce3cad
commit 7bf9f7889e
3 changed files with 46 additions and 31 deletions

View File

@ -29,7 +29,7 @@ let sendEmbed embed (ctx : IDiscordContext) =
match embed with match embed with
| InitEmbeds.Dojo -> Trainer.sendInitialEmbed ctx | InitEmbeds.Dojo -> Trainer.sendInitialEmbed ctx
| InitEmbeds.Whitelist -> InviteTracker.sendInitialEmbed ctx | InitEmbeds.Whitelist -> InviteTracker.sendInitialEmbed ctx
| InitEmbeds.Slots -> SlotMachine.sendInitialEmbed ctx | InitEmbeds.Slots -> SlotMachine.sendInitialEmbedFromSlashCommand ctx
| _ -> () | _ -> ()
do! Messaging.sendSimpleResponse ctx "Sent!" do! Messaging.sendSimpleResponse ctx "Sent!"
} :> Task } :> Task

View File

@ -111,6 +111,8 @@ adminBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
//stealBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously //stealBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously
SlotMachine.sendInitialEmbedFromLaunch slotsBot
let rec loop areBotsRunning = let rec loop areBotsRunning =
async { async {
if not (File.Exists "fsharp-bots") then if not (File.Exists "fsharp-bots") then

View File

@ -32,8 +32,8 @@ let Obey = { index = 2 ; reel1Count = 3 ; reel2Count = 3 ; reel3Count = 3
let AnonMask = { index = 3 ; reel1Count = 2 ; reel2Count = 2 ; reel3Count = 4 ; emojiName = "anonmask" } let AnonMask = { index = 3 ; reel1Count = 2 ; reel2Count = 2 ; reel3Count = 4 ; emojiName = "anonmask" }
let Rat = { index = 4 ; reel1Count = 4 ; reel2Count = 4 ; reel3Count = 3 ; emojiName = "rat" } let Rat = { index = 4 ; reel1Count = 4 ; reel2Count = 4 ; reel3Count = 3 ; emojiName = "rat" }
let Ramen = { index = 5 ; reel1Count = 5 ; reel2Count = 5 ; reel3Count = 5 ; emojiName = "ramen" } let Ramen = { index = 5 ; reel1Count = 5 ; reel2Count = 5 ; reel3Count = 5 ; emojiName = "ramen" }
let Sushi = { index = 6 ; reel1Count = 6 ; reel2Count = 6 ; reel3Count = 3 ; emojiName = "sushi" } let Sushi = { index = 6 ; reel1Count = 6 ; reel2Count = 5 ; reel3Count = 3 ; emojiName = "sushi" }
let Pizza = { index = 7 ; reel1Count = 0 ; reel2Count = 3 ; reel3Count = 7 ; emojiName = "pizza" } let Pizza = { index = 7 ; reel1Count = 1 ; reel2Count = 3 ; reel3Count = 6 ; emojiName = "pizza" }
//let Alcohol = { index = 8 ; reel1Count = 1 ; reel2Count = 1 ; reel3Count = 1 ; emojiName = "alcohol" } //let Alcohol = { index = 8 ; reel1Count = 1 ; reel2Count = 1 ; reel3Count = 1 ; emojiName = "alcohol" }
//let Circuit = { index = 9 ; reel1Count = 0 ; reel2Count = 0 ; reel3Count = 2 ; emojiName = "circuitboard" } //let Circuit = { index = 9 ; reel1Count = 0 ; reel2Count = 0 ; reel3Count = 2 ; emojiName = "circuitboard" }
//let OldTv = { index = 10 ; reel1Count = 1 ; reel2Count = 2 ; reel3Count = 2 ; emojiName = "oldtv" } //let OldTv = { index = 10 ; reel1Count = 1 ; reel2Count = 2 ; reel3Count = 2 ; emojiName = "oldtv" }
@ -366,9 +366,8 @@ let handleMessageCreated (_ : DiscordClient) (event : MessageCreateEventArgs) =
do! event.Message.DeleteAsync() do! event.Message.DeleteAsync()
} :> Task } :> Task
let sendInitialEmbed (ctx : IDiscordContext) = let sendEmbed channel (message : DiscordMessage option) = async {
let updateFn (ctx : IDiscordContext) (message : DiscordMessage option) = async { printfn "SENT EMBED"
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelSlots)
let builder = DiscordMessageBuilder() let builder = DiscordMessageBuilder()
let embed = DiscordEmbedBuilder() let embed = DiscordEmbedBuilder()
embed.Title <- "Degenz Slot Machine" embed.Title <- "Degenz Slot Machine"
@ -390,13 +389,27 @@ let sendInitialEmbed (ctx : IDiscordContext) =
return Some m return Some m
| Some bot , None -> | Some bot , None ->
let! m = bot.SendMessageAsync(channel, builder) |> Async.AwaitTask let! m = bot.SendMessageAsync(channel, builder) |> Async.AwaitTask
do! m.PinAsync() |> Async.AwaitTask
return Some m return Some m
| _ -> return None | _ -> return None
} }
let sendEmbedWithLoop (channel : DiscordChannel) =
async { async {
let! message = updateFn ctx None let! pins = channel.GetPinnedMessagesAsync() |> Async.AwaitTask
let! message =
match pins |> Seq.toList with
| [] -> sendEmbed channel None
| msg::_ -> async.Return (Some msg)
while true do while true do
do! Async.Sleep 60000 do! Async.Sleep 60000
do! updateFn ctx (message) |> Async.Ignore do! sendEmbed channel (message) |> Async.Ignore
} |> Async.Start } |> Async.Start
let sendInitialEmbedFromLaunch (client : DiscordClient) =
let channel = client.Guilds.[GuildEnvironment.guildId].GetChannel(GuildEnvironment.channelSlots)
sendEmbedWithLoop channel
let sendInitialEmbedFromSlashCommand (ctx : IDiscordContext) =
let channel = ctx.GetGuild().GetChannel(GuildEnvironment.channelSlots)
sendEmbedWithLoop channel