在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):discord-haskell/discord-haskell开源软件地址(OpenSource Url):https://github.com/discord-haskell/discord-haskell开源编程语言(OpenSource Language):Haskell 100.0%开源软件介绍(OpenSource Introduction):discord-haskellBuild that discord bot in Haskell! Also checkout the calamity haskell library for a more advanced interface. Documentationinstalling] [debugging] [creating-bot][app-commands] [components] [cache] [embeds] [emoji] [intents] [voice][design] [contributing] [todo][ExampleThis is an example bot that replies "pong" to messages that start with "ping". Checkout the other examples for things like state management. {-# LANGUAGE OverloadedStrings #-} -- allows "string literals" to be Text
import Control.Monad (when, void)
import UnliftIO.Concurrent
import Data.Text (isPrefixOf, toLower, Text)
import qualified Data.Text.IO as TIO
import Discord
import Discord.Types
import qualified Discord.Requests as R
-- | Replies "pong" to every message that starts with "ping"
pingpongExample :: IO ()
pingpongExample = do
userFacingError <- runDiscord $ def
{ discordToken = "Bot ZZZZZZZZZZZZZZZZZZZ"
, discordOnEvent = eventHandler
, discordOnLog = \s -> TIO.putStrLn s >> TIO.putStrLn ""
} -- if you see OnLog error, post in the discord / open an issue
TIO.putStrLn userFacingError
-- userFacingError is an unrecoverable error
-- put normal 'cleanup' code in discordOnEnd (see examples)
eventHandler :: Event -> DiscordHandler ()
eventHandler event = case event of
MessageCreate m -> when (isPing m && not (fromBot m)) $ do
void $ restCall (R.CreateReaction (messageChannelId m, messageId m) "eyes")
threadDelay (2 * 10^6)
void $ restCall (R.CreateMessage (messageChannelId m) "Pong!")
_ -> return ()
fromBot :: Message -> Bool
fromBot = userIsBot . messageAuthor
isPing :: Message -> Bool
isPing = ("ping" `isPrefixOf`) . toLower . messageContent Discord ServerAsk questions, get updates, request features, etc in the project discord server: https://discord.gg/eaRAGgX3bK Official Discord DocumentationThis api closley matches the official discord documentation, which lists the rest requests, gateway events, and gateway sendables. You can use the docs to check the name of something you want to do. For example:
the docs list a Get Channel API path,
which translates to discord-haskell's rest request ADT for Open an IssueIf something goes wrong: check the error message (optional: check the debugging logs), make sure you have the most recent version, ask on discord, or open a github issue. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论