packages feed

signal-messaging-dbus-1.0.0.2: example/Main.hs

{-# LANGUAGE LambdaCase #-}

module Main (main) where

import Control.Monad (forever, when)
import SignalDBus

reactWithSkull :: Timestamp -> String -> Maybe Group -> SignalConn -> IO Timestamp
reactWithSkull ts n mayG sc =
    case mayG of
        Nothing -> sendMessageReaction "๐Ÿ’€" False n ts n sc
        Just g -> sendGroupMessageReaction "๐Ÿ’€" False n ts g sc

-- react with ๐Ÿ’€ to every message received by a specific user
main :: IO ()
main = do
    let targetNumber = "[insert phone number with country code]"

    withConn $ \sc -> do
        myNumber <- getSelfNumber sc
        putStrLn $ "Running on: " ++ show myNumber

        withReceiveMessages sc $ \getMsg -> forever $ do
            getMsg >>= \case
                Message ts n g _ _ -> when (n == targetNumber) $ do
                    reactWithSkull ts targetNumber g sc
                    return ()
                _ -> return ()

    return ()