From 5b962bac2e6b202d46147c72ccdabcb5472bdd09 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sat, 5 Mar 2022 21:52:04 +0700 Subject: [PATCH] Basic bot pausing --- Bot/Bot.fs | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/Bot/Bot.fs b/Bot/Bot.fs index b49ff4b..b951662 100644 --- a/Bot/Bot.fs +++ b/Bot/Bot.fs @@ -1,5 +1,7 @@ module Degenz.Bot +open System.IO +open System.IO.Pipes open System.Threading.Tasks open DSharpPlus open DSharpPlus.SlashCommands @@ -88,28 +90,41 @@ GuildEnvironment.botUserHackerBattle <- Some hackerBattleBot.CurrentUser storeBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously GuildEnvironment.botUserArmory <- Some storeBot.CurrentUser -stealBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously +//stealBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously //inviterBot.ConnectAsync() |> Async.AwaitTask |> Async.RunSynchronously -//let channel = hackerBattleBot.GetChannelAsync(1234uL) |> Async.AwaitTask |> Async.RunSynchronously -//channel.invi +let rec loop areBotsRunning = + async { + if not (File.Exists "fsharp-bots") then + use file = File.Create "fsharp-bots" + file.Flush() + let! file = File.ReadAllTextAsync("fsharp-bots") |> Async.AwaitTask -//async { -// let! user = hackerBattleBot.GetUserAsync(GuildEnvironment.botIdHackerBattle) |> Async.AwaitTask -// if user <> null then -// GuildEnvironment.botUserHackerBattle <- Some user -// return () -//} |> Async.RunSynchronously + let! ran = + async { + if areBotsRunning && file.StartsWith "kill" then + printfn "Disconnecting bots" + do! hackerBattleBot.DisconnectAsync() |> Async.AwaitTask + do! storeBot.DisconnectAsync() |> Async.AwaitTask + return false + elif not areBotsRunning && not (file.StartsWith "kill") then + printfn "Reconnecting bots" + do! hackerBattleBot.ConnectAsync() |> Async.AwaitTask + do! storeBot.ConnectAsync() |> Async.AwaitTask + return true + else + return areBotsRunning + } + + do! Async.Sleep 3000 + return! loop (ran) + } + +Async.Start (loop true) -//async { -// let! user = storeBot.GetUserAsync(GuildEnvironment.botIdHackerBattle) |> Async.AwaitTask -// if user <> null then -// GuildEnvironment.botUserHackerBattle <- Some user -// return () -//} |> Async.RunSynchronously Task.Delay(-1) |> Async.AwaitTask