telega 0.1.3 → 0.1.4
raw patch · 22 files changed
+202/−176 lines, 22 filesdep +time
Dependencies added: time
Files
- CHANGELOG.md +9/−1
- Network/Telegram/API/Bot.hs +1/−1
- Network/Telegram/API/Bot/Capacity.hs +0/−6
- Network/Telegram/API/Bot/Capacity/Droppable.hs +0/−28
- Network/Telegram/API/Bot/Capacity/Editable.hs +0/−28
- Network/Telegram/API/Bot/Capacity/Postable.hs +0/−28
- Network/Telegram/API/Bot/Capacity/Purgeable.hs +0/−28
- Network/Telegram/API/Bot/Core.hs +10/−0
- Network/Telegram/API/Bot/Endpoint.hs +22/−0
- Network/Telegram/API/Bot/Internal.hs +25/−0
- Network/Telegram/API/Bot/Object.hs +16/−1
- Network/Telegram/API/Bot/Object/Button.hs +7/−2
- Network/Telegram/API/Bot/Object/Callback.hs +8/−2
- Network/Telegram/API/Bot/Object/Chat.hs +5/−0
- Network/Telegram/API/Bot/Object/From.hs +9/−1
- Network/Telegram/API/Bot/Object/Keyboard.hs +11/−9
- Network/Telegram/API/Bot/Object/Member.hs +31/−0
- Network/Telegram/API/Bot/Object/Message.hs +23/−21
- Network/Telegram/API/Bot/Object/Moving.hs +4/−1
- Network/Telegram/API/Bot/Object/Notification.hs +7/−8
- Network/Telegram/API/Bot/Object/Update.hs +5/−1
- telega.cabal +9/−10
CHANGELOG.md view
@@ -15,6 +15,14 @@ * Rename `Member` datatype to `Moving` * Define `Access Chat Callback` instance * Define `Access From Callback` instance-* Define `Access From Moving` instance+* Define `Access Chat Moving` instance * Define `Access Chat Message` instance * Define `Access From Message` instance++# 0.1.4+* Define `Member` datatype for chat users+* No implicit `Prelude` anymore (NoImplicitPrelude)+* Move HTTP request function into `Internal` module+* Define `Endpoint` typeclass to replace `Capacity`+* Remove `Capacity` classes and theirs instances+* Define `Object` type family
Network/Telegram/API/Bot.hs view
@@ -1,7 +1,7 @@ module Network.Telegram.API.Bot (module Exports) where import Network.Telegram.API.Bot.Property as Exports-import Network.Telegram.API.Bot.Capacity as Exports import Network.Telegram.API.Bot.Object as Exports+import Network.Telegram.API.Bot.Endpoint as Exports import Network.Telegram.API.Bot.Access as Exports import Network.Telegram.API.Bot.Core as Exports
− Network/Telegram/API/Bot/Capacity.hs
@@ -1,6 +0,0 @@-module Network.Telegram.API.Bot.Capacity (module Exports) where--import Network.Telegram.API.Bot.Capacity.Purgeable as Exports-import Network.Telegram.API.Bot.Capacity.Postable as Exports-import Network.Telegram.API.Bot.Capacity.Editable as Exports-import Network.Telegram.API.Bot.Capacity.Droppable as Exports
− Network/Telegram/API/Bot/Capacity/Droppable.hs
@@ -1,28 +0,0 @@-module Network.Telegram.API.Bot.Capacity.Droppable (Droppable (..), Drop) where--import "aeson" Data.Aeson (Value, decode)-import "base" Control.Exception (try)-import "base" Control.Monad (join, void)-import "base" Data.Maybe (fromJust)-import "http-client" Network.HTTP.Client (Response (responseBody))-import "text" Data.Text (unpack)-import "transformers" Control.Monad.Trans.Class (lift)-import "transformers" Control.Monad.Trans.Except (ExceptT (ExceptT))-import "transformers" Control.Monad.Trans.Reader (ask)--import qualified "wreq" Network.Wreq.Session as Wreq (post)--import Network.Telegram.API.Bot.Core (Telegram, Token (Token), Ok, result)--type family Drop a = r | r -> a--class Droppable a where- {-# MINIMAL drop_value, drop_endpoint #-}- drop_value :: Drop a -> Value- drop_endpoint :: Drop a -> String-- drop :: Drop a -> Telegram e ()- drop x = snd <$> ask >>= \(session, Token token) -> void . lift . ExceptT . try- . fmap (fromJust . join . fmap result . decode @(Ok ()) . responseBody)- . flip (Wreq.post session) (drop_value x) $- "https://api.telegram.org/" <> unpack token <> "/" <> drop_endpoint x
− Network/Telegram/API/Bot/Capacity/Editable.hs
@@ -1,28 +0,0 @@-module Network.Telegram.API.Bot.Capacity.Editable (Editable (..), Substitution) where--import "aeson" Data.Aeson (FromJSON, Value, decode)-import "base" Control.Exception (try)-import "base" Control.Monad (join)-import "base" Data.Maybe (fromJust)-import "http-client" Network.HTTP.Client (Response (responseBody))-import "text" Data.Text (unpack)-import "transformers" Control.Monad.Trans.Class (lift)-import "transformers" Control.Monad.Trans.Except (ExceptT (ExceptT))-import "transformers" Control.Monad.Trans.Reader (ask)--import qualified "wreq" Network.Wreq.Session as Wreq (post)--import Network.Telegram.API.Bot.Core (Telegram, Token (Token), Ok, result)--type family Substitution a = r | r -> a--class FromJSON a => Editable a where- {-# MINIMAL substitution_value, edit_endpoint #-}- substitution_value :: Substitution a -> Value- edit_endpoint :: Substitution a -> String-- edit :: Substitution a -> Telegram e a- edit x = snd <$> ask >>= \(session, Token token) -> lift . ExceptT . try- . fmap (fromJust . join . fmap result . decode @(Ok a) . responseBody)- . flip (Wreq.post session) (substitution_value x) $- "https://api.telegram.org/" <> unpack token <> "/" <> edit_endpoint x
− Network/Telegram/API/Bot/Capacity/Postable.hs
@@ -1,28 +0,0 @@-module Network.Telegram.API.Bot.Capacity.Postable (Postable (..), Initial) where--import "aeson" Data.Aeson (FromJSON, Value, decode)-import "base" Control.Exception (try)-import "base" Control.Monad (join)-import "base" Data.Maybe (fromJust)-import "http-client" Network.HTTP.Client (Response (responseBody))-import "text" Data.Text (unpack)-import "transformers" Control.Monad.Trans.Class (lift)-import "transformers" Control.Monad.Trans.Except (ExceptT (ExceptT))-import "transformers" Control.Monad.Trans.Reader (ask)--import qualified "wreq" Network.Wreq.Session as Wreq (post)--import Network.Telegram.API.Bot.Core (Telegram, Token (Token), Ok, result)--type family Initial a = r | r -> a--class FromJSON a => Postable a where- {-# MINIMAL initial_value, post_endpoint #-}- initial_value :: Initial a -> Value- post_endpoint :: Initial a -> String-- post :: Initial a -> Telegram e a- post x = snd <$> ask >>= \(session, Token token) -> lift . ExceptT . try- . fmap (fromJust . join . fmap result . decode @(Ok a) . responseBody)- . flip (Wreq.post session) (initial_value x) $- "https://api.telegram.org/" <> unpack token <> "/" <> post_endpoint x
− Network/Telegram/API/Bot/Capacity/Purgeable.hs
@@ -1,28 +0,0 @@-module Network.Telegram.API.Bot.Capacity.Purgeable (Purgeable (..), Marking) where--import "aeson" Data.Aeson (Value, decode)-import "base" Control.Exception (try)-import "base" Control.Monad (join, void)-import "base" Data.Maybe (fromJust)-import "http-client" Network.HTTP.Client (Response (responseBody))-import "text" Data.Text (unpack)-import "transformers" Control.Monad.Trans.Class (lift)-import "transformers" Control.Monad.Trans.Except (ExceptT (ExceptT))-import "transformers" Control.Monad.Trans.Reader (ask)--import qualified "wreq" Network.Wreq.Session as Wreq (post)--import Network.Telegram.API.Bot.Core (Telegram, Token (Token), Ok, result)--type family Marking a = r | r -> a--class Purgeable a where- {-# MINIMAL marking_value, purge_endpoint #-}- marking_value :: Marking a -> Value- purge_endpoint :: Marking a -> String-- purge :: Marking a -> Telegram e ()- purge x = snd <$> ask >>= \(session, Token token) -> void . lift . ExceptT . try- . fmap (fromJust . join . fmap result . decode @(Ok ()) . responseBody)- . flip (Wreq.post session) (marking_value x) $- "https://api.telegram.org/" <> unpack token <> "/" <> purge_endpoint x
Network/Telegram/API/Bot/Core.hs view
@@ -1,7 +1,17 @@ module Network.Telegram.API.Bot.Core (Telegram, telegram, ask', Token (..), Ok, result) where import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:))+import "base" Control.Applicative (Applicative ((<*>))) import "base" Control.Exception (SomeException)+import "base" Data.Bool (Bool (True, False))+import "base" Data.Eq (Eq)+import "base" Data.Either (Either)+import "base" Data.Function (flip, (.), ($))+import "base" Data.Functor ((<$>))+import "base" Data.Maybe (Maybe (Just, Nothing))+import "base" Data.Tuple (fst)+import "base" System.IO (IO)+import "base" Text.Show (Show) import "text" Data.Text (Text) import "transformers" Control.Monad.Trans.Reader (ReaderT (runReaderT), ask) import "transformers" Control.Monad.Trans.Except (ExceptT, runExceptT)
+ Network/Telegram/API/Bot/Endpoint.hs view
@@ -0,0 +1,22 @@+module Network.Telegram.API.Bot.Endpoint+ (Endpoint (..), Payload, Drop, Edit, Post, Purge) where++import "aeson" Data.Aeson (FromJSON, Value)+import "base" Data.String (String)++import Network.Telegram.API.Bot.Core (Telegram)+import Network.Telegram.API.Bot.Internal (telegram_request)++type family Payload a = r | r -> a++data Drop a+data Edit a+data Post a+data Purge a++class Endpoint a where+ {-# MINIMAL payload, endpoint #-}+ payload :: Payload a -> Value+ endpoint :: Payload a -> String+ request :: FromJSON r => Payload a -> Telegram e r+ request x = telegram_request (endpoint x) (payload x)
+ Network/Telegram/API/Bot/Internal.hs view
@@ -0,0 +1,25 @@+module Network.Telegram.API.Bot.Internal (telegram_request) where++import "aeson" Data.Aeson (FromJSON, Value, decode)+import "base" Control.Exception (try)+import "base" Control.Monad (Monad ((>>=)), join)+import "base" Data.Function (flip, (.), ($))+import "base" Data.Functor (Functor (fmap), (<$>))+import "base" Data.Maybe (fromJust)+import "base" Data.Semigroup (Semigroup ((<>)))+import "base" Data.String (String)+import "base" Data.Tuple (snd)+import "http-client" Network.HTTP.Client (Response (responseBody))+import "text" Data.Text (unpack)+import "transformers" Control.Monad.Trans.Class (lift)+import "transformers" Control.Monad.Trans.Except (ExceptT (ExceptT))+import "transformers" Control.Monad.Trans.Reader (ask)++import qualified "wreq" Network.Wreq.Session as Wreq (post)++import Network.Telegram.API.Bot.Core (Telegram, Token (Token), Ok, result)++telegram_request :: forall a e . FromJSON a => String -> Value -> Telegram e a+telegram_request endpoint payload = snd <$> ask >>= \(session, Token token) -> lift . ExceptT . try+ . fmap (fromJust . join . fmap result . decode @(Ok a) . responseBody)+ . flip (Wreq.post session) payload $ "https://api.telegram.org/" <> unpack token <> "/" <> endpoint
Network/Telegram/API/Bot/Object.hs view
@@ -1,11 +1,26 @@-module Network.Telegram.API.Bot.Object (module Exports) where+module Network.Telegram.API.Bot.Object (module Exports, Object) where import Network.Telegram.API.Bot.Object.Update as Exports import Network.Telegram.API.Bot.Object.Notification as Exports import Network.Telegram.API.Bot.Object.Moving as Exports import Network.Telegram.API.Bot.Object.Message as Exports+import Network.Telegram.API.Bot.Object.Member as Exports import Network.Telegram.API.Bot.Object.Keyboard as Exports import Network.Telegram.API.Bot.Object.From as Exports import Network.Telegram.API.Bot.Object.Chat as Exports import Network.Telegram.API.Bot.Object.Callback as Exports import Network.Telegram.API.Bot.Object.Button as Exports++import "base" Data.Kind (Constraint)++type family Object (a :: *) :: Constraint+type instance Object Update = ()+type instance Object Notification = ()+type instance Object Moving = ()+type instance Object Message = ()+type instance Object Member = ()+type instance Object Keyboard = ()+type instance Object From = ()+type instance Object Chat = ()+type instance Object Callback = ()+type instance Object Button = ()
Network/Telegram/API/Bot/Object/Button.hs view
@@ -3,7 +3,12 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON) , Object, Value (Object), object, withObject, (.:), (.:?), (.=)) import "aeson" Data.Aeson.Types (Parser)-import "base" Control.Applicative (Alternative ((<|>)))+import "base" Control.Applicative (Applicative (pure, (<*>)), Alternative ((<|>)))+import "base" Control.Monad (Monad ((>>=)), fail)+import "base" Data.Function ((.), ($))+import "base" Data.Functor (Functor (fmap), (<$>))+import "base" Data.Maybe (Maybe, maybe)+import "base" Text.Show (Show) import "text" Data.Text (Text) data Button = Button Text Pressed deriving Show@@ -23,7 +28,7 @@ instance FromJSON Pressed where parseJSON = withObject "Pressed" $ \v -> (is_open v <|> is_callback v) >>= maybe- (fail "Action on pressing isn't set") return where+ (fail "Action on pressing isn't set") pure where is_open, is_callback :: Object -> Parser (Maybe Pressed) is_open v = (fmap . fmap) Open $ v .:? "url"
Network/Telegram/API/Bot/Object/Callback.hs view
@@ -1,6 +1,10 @@ module Network.Telegram.API.Bot.Object.Callback (Callback (..)) where import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:))+import "base" Control.Applicative (Applicative ((<*>)))+import "base" Data.Function (flip, ($))+import "base" Data.Functor ((<$>))+import "base" Text.Show (Show) import "text" Data.Text (Text) import Network.Telegram.API.Bot.Access (Access (access))@@ -15,7 +19,9 @@ Datatext <$> v .: "id" <*> v .: "message" <*> v .: "data" instance Access Chat Callback where- access f (Datatext cq_id msg dttxt) = flip (Datatext cq_id) dttxt <$> access f msg+ access f (Datatext cq_id msg dttxt) = flip+ (Datatext cq_id) dttxt <$> access f msg instance Access From Callback where- access f (Datatext cq_id msg dttxt) = flip (Datatext cq_id) dttxt <$> access f msg+ access f (Datatext cq_id msg dttxt) = flip+ (Datatext cq_id) dttxt <$> access f msg
Network/Telegram/API/Bot/Object/Chat.hs view
@@ -2,6 +2,11 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:)) import "base" Data.Int (Int64)+import "base" Control.Applicative (Applicative ((<*>)))+import "base" Control.Monad (Monad ((>>=)), fail)+import "base" Data.Function (($))+import "base" Data.Functor ((<$>))+import "base" Text.Show (Show) import "text" Data.Text (Text) import Network.Telegram.API.Bot.Property.Identifiable
Network/Telegram/API/Bot/Object/From.hs view
@@ -3,7 +3,15 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), Object, withObject, (.:), (.:?)) import "aeson" Data.Aeson.Types (Parser)-import "base" Data.Bool (bool)+import "base" Control.Applicative (Applicative ((<*>)))+import "base" Control.Monad (Monad ((>>=)))+import "base" Data.Bool (Bool (False), bool)+import "base" Data.Eq (Eq ((==)))+import "base" Data.Int (Int)+import "base" Data.Function (($))+import "base" Data.Functor ((<$>))+import "base" Data.Maybe (Maybe)+import "base" Text.Show (Show) import "lens" Control.Lens (Lens') import "text" Data.Text (Text)
Network/Telegram/API/Bot/Object/Keyboard.hs view
@@ -1,16 +1,16 @@-module Network.Telegram.API.Bot.Object.Keyboard (Keyboard (..), Substitution) where+module Network.Telegram.API.Bot.Object.Keyboard (Keyboard (..), Payload) where import "aeson" Data.Aeson (FromJSON (parseJSON), ToJSON (toJSON), object, withObject, (.:), (.=))-import "base" Data.Int (Int64)+import "base" Data.Function (($))+import "base" Data.Functor ((<$>))+import "base" Data.Int (Int, Int64)+import "base" Text.Show (Show) -import Network.Telegram.API.Bot.Capacity.Editable- (Substitution, Editable (substitution_value, edit_endpoint))+import Network.Telegram.API.Bot.Endpoint (Endpoint (payload, endpoint), Payload, Edit) import Network.Telegram.API.Bot.Object.Button (Button) data Keyboard = Inline [[Button]] deriving Show -type instance Substitution Keyboard = (Int64, Int, Keyboard)- instance FromJSON Keyboard where parseJSON = withObject "Inline" $ \v -> Inline <$> v .: "inline_keyboard"@@ -19,7 +19,9 @@ toJSON (Inline buttons) = object ["inline_keyboard" .= buttons] -instance Editable Keyboard where- substitution_value (chat_id, message_id, reply_markup) = object+type instance Payload (Edit Keyboard) = (Int64, Int, Keyboard)++instance Endpoint (Edit Keyboard) where+ payload (chat_id, message_id, reply_markup) = object ["chat_id" .= chat_id, "message_id" .= message_id, "reply_markup" .= reply_markup]- edit_endpoint _ = "editMessageReplyMarkup"+ endpoint _ = "editMessageReplyMarkup"
+ Network/Telegram/API/Bot/Object/Member.hs view
@@ -0,0 +1,31 @@+module Network.Telegram.API.Bot.Object.Member (Member (..)) where++import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:))+import "base" Control.Applicative (Applicative ((<*>)))+import "base" Control.Monad (Monad ((>>=)), fail)+import "base" Data.Function (($))+import "base" Data.Functor ((<$>))+import "base" Text.Show (Show)+import "text" Data.Text (Text)+import "time" Data.Time.Clock.POSIX (POSIXTime)++import Network.Telegram.API.Bot.Object.From (From)++data Member+ = Creator From+ | Administrator From+ | Member From+ | Restricted From POSIXTime+ -- | Left From+ | Kicked From POSIXTime+ deriving Show++instance FromJSON Member where+ parseJSON = withObject "Member" $ \v -> v .: "status" >>= \case+ ("creator" :: Text) -> Creator <$> v .: "user"+ ("administrator" :: Text) -> Administrator <$> v .: "user"+ ("member" :: Text) -> Member <$> v .: "user"+ ("restricted" :: Text) -> Restricted <$> v .: "user" <*> v .: "until_date"+ -- ("left" :: Text) -> Left <$> v .: "user"+ ("kicked" :: Text) -> Kicked <$> v .: "user" <*> v.: "until_date"+ _ -> fail "Status of chat member is not defined"
Network/Telegram/API/Bot/Object/Message.hs view
@@ -1,22 +1,26 @@ module Network.Telegram.API.Bot.Object.Message- (Message (..), Initial, Marking) where+ (Message (..), Payload) where import "aeson" Data.Aeson (FromJSON (parseJSON), object, withArray, withObject, (.:), (.=)) import "aeson" Data.Aeson.Types (Object, Parser, Value)-import "base" Control.Applicative (Alternative ((<|>), empty))-import "base" Data.Int (Int64)+import "base" Control.Applicative (Applicative ((<*>)), Alternative (empty, (<|>)))+import "base" Control.Monad (Monad ((>>=)), fail)+import "base" Data.Function ((.), ($))+import "base" Data.Functor ((<$>))+import "base" Data.Foldable (Foldable (foldr))+import "base" Data.Int (Int, Int64)+import "base" Data.Maybe (Maybe (Just, Nothing))+import "base" Text.Show (Show)+import "base" Prelude ((+)) import "text" Data.Text (Text) import qualified "text" Data.Text as T (drop, take) import Network.Telegram.API.Bot.Access (Access (access))+import Network.Telegram.API.Bot.Endpoint (Endpoint (payload, endpoint), Payload, Post, Purge) import Network.Telegram.API.Bot.Object.Chat (Chat) import Network.Telegram.API.Bot.Object.From (From) import Network.Telegram.API.Bot.Object.Keyboard (Keyboard)-import Network.Telegram.API.Bot.Capacity.Postable- (Initial, Postable (initial_value, post_endpoint))-import Network.Telegram.API.Bot.Capacity.Purgeable- (Marking, Purgeable (marking_value, purge_endpoint)) import Network.Telegram.API.Bot.Property.Identifiable (Identifiable (identificator), Identificator) @@ -25,8 +29,6 @@ | Command Int Chat From Text deriving Show -type instance Initial Message = (Int64, Text, Maybe Keyboard)-type instance Marking Message = (Int64, Int) type instance Identificator Message = Int instance Identifiable Message where@@ -56,18 +58,6 @@ extract_command :: Object -> (Int, Int) -> Parser Text extract_command v (ofs, len) = (T.take len . T.drop (ofs + 1)) <$> v .: "text" -instance Postable Message where- initial_value (chat_id, text, Nothing) =- object ["chat_id" .= chat_id, "text" .= text]- initial_value (chat_id, text, Just kb) =- object ["chat_id" .= chat_id, "text" .= text, "reply_markup" .= kb]- post_endpoint _ = "sendMessage"--instance Purgeable Message where- marking_value (chat_id, message_id) =- object ["chat_id" .= chat_id, "message_id" .= message_id]- purge_endpoint _ = "deleteMessage"- instance Access Chat Message where access f (Textual msg_id chat from txt) = (\chat' -> Textual msg_id chat' from txt) <$> f chat access f (Command msg_id chat from cmd) = (\chat' -> Command msg_id chat' from cmd) <$> f chat@@ -75,3 +65,15 @@ instance Access From Message where access f (Textual msg_id chat from txt) = (\from' -> Textual msg_id chat from' txt) <$> f from access f (Command msg_id chat from cmd) = (\from' -> Command msg_id chat from' cmd) <$> f from++type instance Payload (Post Message) = (Int64, Text, Maybe Keyboard)+type instance Payload (Purge Message) = (Int64, Int)++instance Endpoint (Post Message) where+ payload (chat_id, text, Nothing) = object ["chat_id" .= chat_id, "text" .= text]+ payload (chat_id, text, Just kb) = object ["chat_id" .= chat_id, "text" .= text, "reply_markup" .= kb]+ endpoint _ = "sendMessage"++instance Endpoint (Purge Message) where+ payload (chat_id, message_id) = object ["chat_id" .= chat_id, "message_id" .= message_id]+ endpoint _ = "deleteMessage"
Network/Telegram/API/Bot/Object/Moving.hs view
@@ -2,7 +2,10 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:)) import "aeson" Data.Aeson.Types (Object, Parser)-import "base" Control.Applicative (Alternative ((<|>)))+import "base" Control.Applicative (Applicative ((<*>)), Alternative ((<|>)))+import "base" Data.Function (($))+import "base" Data.Functor ((<$>))+import "base" Text.Show (Show) import Network.Telegram.API.Bot.Access (Access (access)) import Network.Telegram.API.Bot.Object.Chat (Chat)
Network/Telegram/API/Bot/Object/Notification.hs view
@@ -1,16 +1,15 @@-module Network.Telegram.API.Bot.Object.Notification (Notification) where+module Network.Telegram.API.Bot.Object.Notification (Notification, Payload) where import "aeson" Data.Aeson (object, (.=)) import "text" Data.Text (Text) -import Network.Telegram.API.Bot.Capacity.Droppable- (Drop, Droppable (drop_value, drop_endpoint))+import Network.Telegram.API.Bot.Endpoint (Endpoint (payload, endpoint), Payload, Drop) data Notification -type instance Drop Notification = (Text, Text)+type instance Payload (Drop Notification) = (Text, Text) -instance Droppable Notification where- drop_value (cbq_id, text) =- object ["callback_query_id" .= cbq_id, "text" .= text]- drop_endpoint _ = "answerCallbackQuery"+instance Endpoint (Drop Notification) where+ payload (cbq_id, text) = object+ ["callback_query_id" .= cbq_id, "text" .= text]+ endpoint _ = "answerCallbackQuery"
Network/Telegram/API/Bot/Object/Update.hs view
@@ -2,7 +2,11 @@ import "aeson" Data.Aeson (FromJSON (parseJSON), withObject, (.:)) import "aeson" Data.Aeson.Types (Object, Parser)-import "base" Control.Applicative (Alternative ((<|>)))+import "base" Control.Applicative (Applicative ((<*>)), Alternative ((<|>)))+import "base" Data.Function (($))+import "base" Data.Functor ((<$>))+import "base" Data.Int (Int)+import "base" Text.Show (Show) import Network.Telegram.API.Bot.Access (Access (access)) import Network.Telegram.API.Bot.Object.Callback (Callback)
telega.cabal view
@@ -1,5 +1,5 @@ name: telega-version: 0.1.3+version: 0.1.4 synopsis: Telegram Bot API binding description: High-level bindings, typed entities, inline mode only homepage: https://github.com/iokasimov/telega@@ -22,26 +22,25 @@ Network.Telegram.API.Bot Network.Telegram.API.Bot.Core Network.Telegram.API.Bot.Access+ Network.Telegram.API.Bot.Endpoint Network.Telegram.API.Bot.Object Network.Telegram.API.Bot.Object.Chat Network.Telegram.API.Bot.Object.From Network.Telegram.API.Bot.Object.Button Network.Telegram.API.Bot.Object.Callback Network.Telegram.API.Bot.Object.Keyboard- Network.Telegram.API.Bot.Object.Moving+ Network.Telegram.API.Bot.Object.Member Network.Telegram.API.Bot.Object.Message+ Network.Telegram.API.Bot.Object.Moving Network.Telegram.API.Bot.Object.Notification Network.Telegram.API.Bot.Object.Update- Network.Telegram.API.Bot.Capacity- Network.Telegram.API.Bot.Capacity.Droppable- Network.Telegram.API.Bot.Capacity.Editable- Network.Telegram.API.Bot.Capacity.Postable- Network.Telegram.API.Bot.Capacity.Purgeable Network.Telegram.API.Bot.Property Network.Telegram.API.Bot.Property.Identifiable- build-depends: base == 4.*, transformers, lens, aeson, text, http-client, wreq- default-extensions: DataKinds, LambdaCase, OverloadedStrings,- MultiParamTypeClasses, PackageImports, ScopedTypeVariables,+ other-modules:+ Network.Telegram.API.Bot.Internal+ build-depends: base == 4.*, transformers, lens, aeson, text, time, http-client, wreq+ default-extensions: DataKinds, LambdaCase, OverloadedStrings, NoImplicitPrelude,+ FlexibleInstances, MultiParamTypeClasses, PackageImports, ScopedTypeVariables, TypeApplications, TypeFamilies, TypeFamilyDependencies, TypeOperators default-language: Haskell2010 ghc-options: -Wall -fno-warn-tabs