You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.9 KiB
63 lines
1.9 KiB
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
|
|
module Commands where
|
|
|
|
import Discord
|
|
import Discord.Types
|
|
import Discord.Interactions
|
|
import qualified Discord.Requests as R
|
|
import qualified Data.Text as T
|
|
import qualified Data.Map.Strict as Map
|
|
|
|
import Commands.EDT
|
|
|
|
pingCommand :: CreateApplicationCommand
|
|
pingCommand =
|
|
CreateApplicationCommand
|
|
"ping"
|
|
"pong"
|
|
(Just [])
|
|
Nothing
|
|
Nothing
|
|
|
|
pingResponse :: InteractionResponse
|
|
pingResponse = interactionResponseBasic "Pong"
|
|
|
|
edtCommand :: CreateApplicationCommand
|
|
edtCommand = CreateApplicationCommand
|
|
"edt"
|
|
"Gets the planning for a group"
|
|
(Just $ toInternal <$>
|
|
[ ApplicationCommandOptionValueString
|
|
"group"
|
|
"Group to get the planning for"
|
|
(Just True)
|
|
Nothing
|
|
Nothing
|
|
, ApplicationCommandOptionValueString
|
|
"day"
|
|
"The day you want the planning for as DD/MM(/YYYY)"
|
|
Nothing Nothing Nothing
|
|
])
|
|
Nothing
|
|
Nothing
|
|
|
|
edtResponse :: Maybe InteractionDataApplicationCommandOptions -> InteractionResponse
|
|
edtResponse (Just (InteractionDataApplicationCommandOptionsValues opts)) =
|
|
interactionResponseBasic $
|
|
"You gave:\n```hs\n" `T.append` T.pack (show parsedOpts) `T.append` "\n```"
|
|
where
|
|
parsedOpts :: Map.Map T.Text T.Text
|
|
parsedOpts = Map.fromList $ map parseOpt opts
|
|
parseOpt :: InteractionDataApplicationCommandOptionValue -> (T.Text, T.Text)
|
|
parseOpt (InteractionDataApplicationCommandOptionValue
|
|
{ interactionDataApplicationCommandOptionValueName = name
|
|
, interactionDataApplicationCommandOptionValueValue =
|
|
ApplicationCommandInteractionDataValueString val
|
|
, ..}
|
|
) = (name, val)
|
|
parseOpt _ = ("INVALID FORMAT", "INVALID FORMAT")
|
|
|
|
edtResponse _ = interactionResponseBasic
|
|
"The edt command should have params yet you managed not to give any: wow"
|