63 lines
2.1 KiB
Forth
63 lines
2.1 KiB
Forth
module Joebot.Program
|
|
|
|
open System
|
|
open System.Threading.Tasks
|
|
open DSharpPlus
|
|
open DSharpPlus.Entities
|
|
open DSharpPlus.EventArgs
|
|
open DSharpPlus.SlashCommands
|
|
open Emzi0767.Utilities
|
|
open Joebot.Types
|
|
open Joebot.Commands
|
|
|
|
type EmptyGlobalCommandToAvoidFamousDuplicateSlashCommandsBug() = inherit ApplicationCommandModule ()
|
|
|
|
type JoeBot() =
|
|
inherit ApplicationCommandModule ()
|
|
|
|
[<SlashCommand("redpill", "Take the redpill and become a hacker")>]
|
|
member _.AddHackerRole (ctx : InteractionContext) = Commands.addHackerRole ctx
|
|
|
|
[<SlashCommand("bluepill", "Take the bluepill and become lame")>]
|
|
member _.RemoveHackerRole (ctx : InteractionContext) = Commands.removeHackerRole ctx
|
|
|
|
[<SlashCommand("hack", "Send a hack attack to another player")>]
|
|
member this.AttackCommand (ctx : InteractionContext, [<Option("target", "The player you want to hack")>] target : DiscordUser) =
|
|
Commands.attack ctx target
|
|
|
|
[<SlashCommand("defend", "Create a passive defense that will last a certain amount of time")>]
|
|
member this.DefendCommand (ctx : InteractionContext) = Commands.defend ctx
|
|
|
|
[<SlashCommand("status", "Get your current status like bank account, and active hacks and defenses")>]
|
|
member this.Status (ctx : InteractionContext) = Commands.status ctx
|
|
|
|
[<SlashCommand("leaderboard", "View the current list of players ranked by highest earnings")>]
|
|
member this.Leaderboard (ctx : InteractionContext) = Commands.leaderboard ctx
|
|
|
|
let config = DiscordConfiguration()
|
|
config.Token <- "OTIyNDIyMDIyMTI1MDEwOTU1.YcBOcw.JxfW1CSIwEO7j6RbRFCnPZ-HoTk"
|
|
config.TokenType <- TokenType.Bot
|
|
config.Intents <- DiscordIntents.All
|
|
//config.MinimumLogLevel <- Microsoft.Extensions.Logging.LogLevel.Trace
|
|
|
|
let client = new DiscordClient(config)
|
|
|
|
client.add_ComponentInteractionCreated(AsyncEventHandler(handleButtonEvent))
|
|
|
|
let slash = client.UseSlashCommands()
|
|
|
|
slash.RegisterCommands<JoeBot>(922414052708327494uL);
|
|
|
|
client.ConnectAsync ()
|
|
|> Async.AwaitTask
|
|
|> Async.RunSynchronously
|
|
|
|
Task.Delay(-1)
|
|
|> Async.AwaitTask
|
|
|> Async.RunSynchronously
|
|
|
|
client.DisconnectAsync ()
|
|
|> Async.AwaitTask
|
|
|> Async.RunSynchronously
|
|
|