mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2025-06-28 20:29:53 +00:00
apps: update chat bots, readme (#1928)
* apps: update chat bots, readme * CLI readme * broadcast bot * delete messages from non-publishers, better replies, support forwarding low-res images and links * typo Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> * change --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
This commit is contained in:
parent
6f68840b3a
commit
a0351d6f99
16 changed files with 332 additions and 17 deletions
|
@ -33,6 +33,9 @@ welcomeGetOpts = do
|
|||
putStrLn $ "db: " <> dbFilePrefix <> "_chat.db, " <> dbFilePrefix <> "_agent.db"
|
||||
pure opts
|
||||
|
||||
welcomeMessage :: String
|
||||
welcomeMessage = "Hello! I am a simple squaring bot.\nIf you send me a number, I will calculate its square"
|
||||
|
||||
mySquaringBot :: User -> ChatController -> IO ()
|
||||
mySquaringBot _user cc = do
|
||||
initializeBotAddress cc
|
||||
|
@ -41,14 +44,13 @@ mySquaringBot _user cc = do
|
|||
case resp of
|
||||
CRContactConnected _ contact _ -> do
|
||||
contactConnected contact
|
||||
void . sendMsg contact $ "Hello! I am a simple squaring bot - if you send me a number, I will calculate its square"
|
||||
CRNewChatItem _ (AChatItem _ SMDRcv (DirectChat contact) ChatItem {content}) -> do
|
||||
let msg = T.unpack $ ciContentToText content
|
||||
sendMessage cc contact welcomeMessage
|
||||
CRNewChatItem _ (AChatItem _ SMDRcv (DirectChat contact) ChatItem {content = mc@CIRcvMsgContent {}}) -> do
|
||||
let msg = T.unpack $ ciContentToText mc
|
||||
number_ = readMaybe msg :: Maybe Integer
|
||||
void . sendMsg contact $ case number_ of
|
||||
Nothing -> "\"" <> msg <> "\" is not a number"
|
||||
sendMessage cc contact $ case number_ of
|
||||
Just n -> msg <> " * " <> msg <> " = " <> show (n * n)
|
||||
_ -> "\"" <> msg <> "\" is not a number"
|
||||
_ -> pure ()
|
||||
where
|
||||
sendMsg Contact {contactId} msg = sendChatCmd cc $ "/_send @" <> show contactId <> " text " <> msg
|
||||
contactConnected Contact {localDisplayName} = putStrLn $ T.unpack localDisplayName <> " connected"
|
||||
|
|
13
apps/simplex-bot-advanced/README.md
Normal file
13
apps/simplex-bot-advanced/README.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Advanced SimpleX Chat bot example
|
||||
|
||||
In most cases [a simple REPL bot](../simplex-bot/) is sufficient, but in cases you want to program more advanced communication scenarios you may take a more complex event-based approach, as in this example.
|
||||
|
||||
Event-based approach allows you:
|
||||
|
||||
- decide whether to connect to a user or not depending on any factors, e.g. user display name.
|
||||
- disconnect from users who send too many messages or send messages that bot finds inappropriate.
|
||||
- react to message deletions and editing.
|
||||
- process reply messages differently, taking the original message into account.
|
||||
- process and send images and voice messages.
|
||||
- create groups of users, e.g. to connect 2 users.
|
||||
- etc.
|
Loading…
Add table
Add a link
Reference in a new issue