<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          haskell-telegram-apiTelegram Bot API for Haskell

          聯(lián)合創(chuàng)作 · 2023-09-30 01:35

          telegram-api

          Join the chat at https://gitter.im/klappvisor/haskell-telegram-api

          Build Status Hackage Hackage Dependencies Haskell Programming Language BSD3 License

          High-level bindings to the Telegram Bot API based on servant library. Both getUpdates request or webhook can be used to receive updates for your bot. Inline mode is supported. Uploading stickers, documents, video, etc is not supported yet, but you can send items which are already uploaded on the Telegram servers.

          Support of Bot-3.5 API

          Usage

          There are two ways of using Telegram Bot API. First and original way is to run IO directly for every Telegram servers request, another one is based on TelegramClient which is just ReaderT.

          Use TelegramClient

          {-# LANGUAGE OverloadedStrings #-}
          
          import           Network.HTTP.Client      (newManager)
          import           Network.HTTP.Client.TLS  (tlsManagerSettings)
          import           Web.Telegram.API.Bot
          
          main :: IO ()
          main = do
            let token = Token "bot<token>" -- entire Token should be bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
            manager <- newManager tlsManagerSettings
            result <- runTelegramClient token manager $ do
              info <- getWebhookInfoM
              let request = setWebhookRequest' "https://example.com/hook"
              isSet <- setWebhookM request
              getMeM
            print result
            print "done!"

          Running IO directly (planning to deprecate this option)

          ?? This method to interact with a Telegram bot is about to be depricated and all new API calls will only have their M versions. You can run them using runTelegramClient function, for example runTelegramClient token manager $ sendMessageM message or in example below replace getMe token manager with runTelegramClient token manager getMeM to get the same behavior.

          getMe example

          {-# LANGUAGE OverloadedStrings #-}
          
          import           Network.HTTP.Client      (newManager)
          import           Network.HTTP.Client.TLS  (tlsManagerSettings)
          import           Web.Telegram.API.Bot
          
          main :: IO ()
          main = do
            manager <- newManager tlsManagerSettings
            res <- getMe token manager
            case res of
              Left e -> do
                putStrLn "Request failed"
                print e
              Right Response { result = u } -> do
                putStrLn "Request succeded"
                print $ user_first_name u
            where token = Token "bot<token>" -- entire Token should be bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

          sendMessage example

          {-# LANGUAGE OverloadedStrings #-}
          
          import           Network.HTTP.Client      (newManager)
          import           Network.HTTP.Client.TLS  (tlsManagerSettings)
          import           Web.Telegram.API.Bot
          
          main :: IO ()
          main = do
            manager <- newManager tlsManagerSettings
            let request = sendMessageRequest chatId message
            res <- sendMessage token request manager
            case res of
              Left e -> do
                putStrLn "Request failed"
                print e
              Right Response { result = m } -> do
                putStrLn "Request succeded"
                print $ message_id m
                print $ text m
            where token = Token "bot<token>" -- entire Token should be bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
                  chatId = ChatId <chat_id> -- use ChatId 10231 or ChatChannel "<@channelusername>"
                  message = "text *bold* _italic_ [github](github.com/klappvisor/haskell-telegram-api)"

          Note on requests:

          Many request data records have a lot of optional parameters which are usually redundant. There are two ways to create requests:

          With data type constructor:

          let request = SendMessageRequest (ChatId int64_chatId) "text" Nothing (Just True) Nothing Nothing Nothing

          Using default instance:

          let request = sendMessageRequest (ChatId int64_chatId) "text" -- only with required fields
          let request = (sendMessageRequest ChatId int64_chatId) "text") {
            message_disable_notification = Just True -- with optional fields
          }

          Contribution

          Contributions are welcome!

          1. Fork repository
          2. Do some changes
          3. Create pull request
          4. Wait for CI build and review
          5. ??????
          6. PROFIT

          Bear in mind that the CI build won't run integration test suite against your pull request since the necessary environment variables ($BOT_TOKEN, $STRIPE_TOKEN, $CHAT_ID and $BOT_NAME) aren't exported when a fork starts the build (for security reasons). If you do want to run them before creating RP, you can setup integration of your fork with CircleCI.

          You can use stack to build project

          stack build
          

          To run test you have to create your own bot. Go to BotFather and create the bot. As the result you will have private bot's access token. Keep it safe!

          stack test --test-arguments "--integration -c CHAT_ID -b BOT_NAME -- HSPEC_ARGS"
          

          where

          • BOT_TOKEN is the token obtained from BotFather and must be defined as environment variable
          • PAYMENT_TOKEN is the token obtained from BotFather and must be defined as environment variable
          • CHAT_ID can be id of your chat with your bot. Send some messages to this chat in Telegram and do curl "https://api.telegram.org/bot<replace_with_token>/getUpdates", you'll have to parse some JSON with your brain ;-) or any other suitable tool and you will find chat id there.
          • BOT_NAME is the name of your bot
          • HSPEC_ARGS are the normal hspec arguments you can find here

          The help option is available for the tests and for hspec:

          stack test --test-arguments "-h"
          stack test --test-arguments "--integration -c CHAT_ID -b BOT_NAME -- -h"
          

          Note: Inline Spec is disabled for now...

          If everything is fine after running the tests you will receive a few new messages from your bot.

          瀏覽 17
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人人爱人人摸人人曹 | 成人91AV视频 | 欧美操逼视频免费看 | 日本黄色视屏网站 | 99久久久久久久无码 |