2022-02-07 23:42:05 +07:00

84 lines
2.7 KiB
Forth

module Degenz.Bot
open System.Threading.Tasks
open DSharpPlus
open DSharpPlus.SlashCommands
open Degenz
open Degenz.HackerBattle
open Degenz.Store
open Emzi0767.Utilities
//open Degenz.SlotMachine
type EmptyGlobalCommandToAvoidFamousDuplicateSlashCommandsBug() = inherit ApplicationCommandModule ()
let guild = GuildEnvironment.guildId
let hackerBattleConfig = DiscordConfiguration()
let storeConfig = DiscordConfiguration()
//let slotMachineConfig = DiscordConfiguration()
//hackerBattleConfig.MinimumLogLevel <- Microsoft.Extensions.Logging.LogLevel.Trace
//let configs = [| hackerBattleConfig ; storeConfig ; slotMachineConfig ; |]
let configs = [ hackerBattleConfig ; storeConfig ]
for conf in configs do
conf.TokenType <- TokenType.Bot
conf.Intents <- DiscordIntents.All
hackerBattleConfig.Token <- GuildEnvironment.tokenHackerBattle
storeConfig.Token <- GuildEnvironment.tokenStore
//slotMachineConfig.Token <- Environment.GetEnvironmentVariable("BOT_SLOT_MACHINE")
let hackerBattleBot = new DiscordClient(hackerBattleConfig)
let storeBot = new DiscordClient(storeConfig)
//let slotMachineBot = new DiscordClient(slotMachineConfig)
//let clients = [| hackerBattleBot ; storeBot ; slotMachineBot |]
let clients = [ hackerBattleBot ; storeBot ]
let sc1 = hackerBattleBot.UseSlashCommands()
let sc2 = storeBot.UseSlashCommands()
//let sc3 = slotMachineBot.UseSlashCommands()
sc1.RegisterCommands<HackerGame>(guild);
sc2.RegisterCommands<Store>(guild);
//sc3.RegisterCommands<SlotMachine>(guild);
hackerBattleBot.add_ComponentInteractionCreated(AsyncEventHandler(HackerBattle.handleButtonEvent))
storeBot.add_ComponentInteractionCreated(AsyncEventHandler(Store.handleStoreEvents))
let asdf (_ : DiscordClient) (event : DSharpPlus.EventArgs.InteractionCreateEventArgs) =
async {
printfn "%A" event.Interaction.Type
match event.Interaction.Type with
| InteractionType.AutoComplete ->
printfn "%A" event.Interaction.Data.Options
let builder = DSharpPlus.Entities.DiscordInteractionResponseBuilder()
builder.AddAutoCompleteChoice(DSharpPlus.Entities.DiscordAutoCompleteChoice("Choice 1", "What does this represent?"))
|> ignore
do! event.Interaction.CreateResponseAsync(InteractionResponseType.AutoCompleteResult, builder)
|> Async.AwaitTask
| _ -> return ()
} |> Async.StartAsTask
:> Task
//hackerBattleBot.add_InteractionCreated(AsyncEventHandler(asdf))
let run (client : DiscordClient) =
async {
do! client.ConnectAsync () |> Async.AwaitTask
}
Trainer.sendInitialEmbed hackerBattleBot
clients
|> List.map run
|> Async.Sequential
|> Async.RunSynchronously
|> ignore
Task.Delay(-1)
|> Async.AwaitTask
|> Async.RunSynchronously