telegram-bot-simple
Easy to use library for building Telegram bots.
https://github.com/fizruk/telegram-bot-simple#readme
| LTS Haskell 24.17: | 0.14.4 |
| Stackage Nightly 2025-07-14: | 0.14.4 |
| Latest on Hackage: | 0.14.4 |
telegram-bot-simple-0.14.4@sha256:2f9cc06e9b45e72ef46a0847cdebc439845b82b0d41f8f63f2e50aeb7359a621,5644Module documentation for 0.14.4
- Telegram
- Telegram.Bot
- Telegram.Bot.Simple
- Telegram.Bot
telegram-bot-simple
Easy to use library for building Telegram bots in Haskell.
LambdaConf 2018 workshop
This library was featured in a LambdaConf 2018 workshop. The supplementary materials for the workshop is available at https://github.com/fizruk/lambdaconf-2018-workshop.
Examples
See bot examples here: https://github.com/fizruk/telegram-bot-simple/tree/master/telegram-bot-simple/examples
Use cabal build all -fexamples to build it.
If you are building with stack then use stack build --flag telegram-bot-simple:examples.
Contributing
Contributions are welcome! Feel free to ping me on GitHub, file an issue or submit a PR :)
Compatibility
| telegram-bot-api | telegram-bot-simple |
|---|---|
| 0.10 | 6.5 |
| 0.11.1 | 6.5.1 |
| 0.12 | 6.7 |
| 0.13 | 7.0 |
| 0.14 | 7.3 |
| 0.14.2 | 7.4 |
| 0.14.3 | 7.4.2 |
| 0.14.4 | 7.4.3 |
Nick
Changes
0.14.4 – 2024-11-07
- Print failures from telegram-bot-api thrown in bot action handlers (see #197).
- Support
telegram-bot-api-.7.4.3.
0.14.3 – 2024-10-20
- Support
telegram-bot-api-7.4.1.
0.14.2 – 2024-08-26
- Fix
ExceptionInLinkedThread(see #189).
0.14.1 – 2024-05-26
- Support
telegram-bot-api == 7.3.1.
0.14 – 2024-05-25
- Drop support GHC 8.10, 9.0, add support GHC 9.8, 9.10 (see #182).
- Support
telegram-bot-api == 7.3. - Ignore updates that produces parsing errors (see #175).
0.13 – 2024-02-06
- Support GHC 9.6 (see #163).
- Support
telegram-bot-api == 7.0. - Fix bot hanging via rethrowing exceptions (see #170).
0.12 – 2023-04-29
-
Add support for testing WebApps (see #148);
-
Add nix flake (see #149);
-
Improve documentation for
callbackQueryDataRead(see #153); -
Support
telegram-bot-api == 6.7(breaking changes included). -
Migration guide:
- Provide
InlineQueryResultGeneric(seedefInlineQueryResultGeneric). - Provide
InlineQueryResultGenericThumbnail(seedefInlineQueryResultGenericThumbnail). - Specify your own
InlineQueryResult(see helpers for each data constructor).
- Provide
0.11.1
- Add
RunTGinstances for newly added methods in 6.5.1.
0.11
- Add default implementations to all requests (see #138);
- Add
RunTGthat simplifies making requests (see #139);
0.10
-
Compilation time reduced by splitting types and methods (see #136);
-
All
Telegram.Bot.API.*modules moved totelegram-bot-apipackage (see #137); -
Telegram.Bot.Simple.Webhookmodule added; -
Migration guide:
- In the most cases you need to add
telegram-bot-apipackage in project dependency list; - If you are using webhooks then you also need to import
Telegram.Bot.Simple.Webhookfromtelegram-bot-simple;
- In the most cases you need to add
0.9
-
Make package complaint with Telegram Bot API 6.5 (breaking changes included) (see #135):
KeyboardButtonextended withrequest_userandrequest_chatfields;KeyboardButtonRequestUserandKeyboardButtonRequestChattypes added;Messageextended withuser_sharedandchat_sharedfields;ChatMemberandChatPermissions:can_send_media_messagesreplaced with following fields:can_send_audios;can_send_documents;can_send_photos;can_send_videos;can_send_video_notes;can_send_voice_notes;
use_independent_chat_permissionsfield added tosetChatPermissionsandrestrictChatMembermethods;ChatJoinRequestextended withuser_chat_idfield.Updatetype fixed and aligned with the spec.
0.8
-
Make package complaint with Telegram Bot API 6.4 (breaking changes included) (see #134):
ReplyKeyboardMarkupextended withis_persistent;Messageextended withhas_media_spoiler;Chatextended withhas_hidden_membersandhas_aggressive_anti_spam_enabled;editForumTopicmethod: fieldsnameandicon_custom_emoji_idbecome optional;has_spoilerfield added to:- data constructors:
InputMediaPhoto,InputMediaVideoandInputMediaAnimation; - method:
sendPhoto,sendVideoandsendAnimation;
- data constructors:
- Following message events added
ForumTopicEdited,GeneralForumTopicHiddenandGeneralForumTopicUnhidden; - General topic forum management, i.e. added following functions:
editGeneralForumTopic,closeGeneralForumTopic,reopenGeneralForumTopic,hideGeneralForumTopicandunhideGeneralForumTopic;
0.7
-
Make package complaint with Telegram Bot API 6.3 (breaking changes included) (see #133):
Chatextended withis_forum,active_usernamesandemoji_status_custom_emoji_id;Messageextended withforum_topic_created,forum_topic_closedandforum_topic_reopened;- Following message events added
ForumTopicCreated,ForumTopicClosedandForumTopicReopened; can_manage_topicsfield added toChatAdministratorRights,ChatPermissionsandChatMemberdata types;PromoteChatMemberRequestextended withcan_manage_topicstoo;message_thread_idfield added to following methods requests:sendMessage,sendPhoto,sendVideo,sendAnimation,sendAudio,sendDocument,sendSticker,sendVideoNote,sendVoice,sendLocation,sendVenue,sendContact,sendPoll,sendDice,sendInvoice,sendGame,sendMediaGroup,copyMessageandforwardMessage;- Forum management, i.e. added following functions:
createForumTopic,editForumTopic,closeForumTopic,reopenForumTopic,deleteForumTopic,unpinAllForumTopicMessagesandgetForumTopicIconStickers;
0.6.2
- Fix decoding for
VideoChatStarted(see #132);
0.6.1
- Fix response parsing in
UpdatingMessages(see #131); - Move from short polling to long polling (see #129);
0.6
-
Fix newlines unexpected removing in
UpdateParsermodule (see #124); -
Add WebHooks support (see #127);
-
Fix
parse_modeencoding insendPhoto,sendDocument,sendVideoandsendAnimationmethods (see #123 and 5ee5289); -
Make package complaint with Telegram Bot API 6.2 (breaking changes included) (see fab1aee):
- Added
createInvoiceLinkmethod; - Added
getCustomEmojiStickersmethod; Userextended withis_premiumandadded_to_attachment_menu;Chatextended withhas_restricted_voice_and_video_messages,join_to_send_messages,join_by_request;MessageEntityTypeextended withcustom_emoji;file_sizefield forAnimation,Audio,Document,Video,VideoNoteVoice,Filechanged fromInttoInteger;SticketSetmodified:contains_masksis optional now and becoming a subject of further deprecation in a future,typeadded;- Added
StickerSetType: could beregular,maskandcustom_emoji.
- Added
0.5.2
- Helpers from
UpdateParsermodule fixed,commandWithBotNameadded (see #121);
0.5.1
- Fix inconsistency around
ParseMode(see #114); - Fix
copyMessagemethod (see #116); - Add CI via GitHub Actions (see #119);
- Fix GHC 9.0 compilation regression (see #120);
0.5
-
Add
MarkdownV2toParseModehaddock suggestion (see #110); -
Make package complaint with Telegram Bot API 6.0 (breaking changes included) (see #112):
WebAppInfodata type added.KeyboardButton,InlineKeyboardButtonextended withweb_apprecord.SentWebAppMessagedata type added.answerWebAppQuerymethod added.MenuButtondata type added.setChatMenuButton,getChatMenuButtonmethods added.ChatAdministratorRightsdata type added.setMyDefaultAdministratorRights,getMyDefaultAdministratorRightsmethods added.- :warning:
ChatMemberrecords changed:can_manage_voice_chatsrenamed tocan_manage_video_chat. - :warning:
PromoteChatMemberRequestrecords changed:can_manage_voice_chatsrenamed tocan_manage_video_chats. - :warning:
Messagerecords changed:voice_chat_scheduled,voice_chat_started,voice_chat_ended, andvoice_chat_participants_invitedrenamed tovideo_chat_scheduled,video_chat_started,video_chat_ended, andvideo_chat_participants_invitedcorrespondingly.
0.4.5
0.4.4
- Fix build on Windows (see #107);
0.4.3
- Add support
spoilermessage type andprotect_contentfield for various methods (see #103);
0.4.2
- Fix GHC 9.0 compilation (see #102 );
0.4.1
0.4
- Add Payments methods (see #93);
- Add Passport methods (see #90);
- Resolve discrepancies with Bot API 5.5 (see #87, #88)
- Make
startPollingpolymorphic (see #86); - Add Updating messages methods (see #85) ;
- Add missing methods (see #83, #84);
- Add
GameBot(see #82, #95); - Allow return different types in
BotM(see #79, #98); - Fix
UserIdinteger overflow (see #78); - Upgrade
EchoBotexample with sticker replies (see #77); - Refactor file uploads (see #76);
- Add Stickers methods (see #72, #73, #74 and #75);
- Refactor
FileInfo(see #71); - Add Game methods (see #70);
- Fix
MessageIdinteger overflow (see #69); - Add missing types (see #66, #81);
0.3.8
- Fix notification disable mechanism in
sendDocumentfunction (see #54); - Implement
getFileandsendPhotoAPI methods (see #49);
0.3.7
- Add inline mode support (see #45);
0.3.6
0.3.5
- Restore backward compatibility with older GHCs (see #40);
0.3.4
0.3.3
- Derive Hashable for MessageId (see #36);
0.3.2
0.3.1
- Implement sendDocument function support. (see #31);
- Add Travis CI (see #32);
- Add MonadFail instance for UpdateParser (see #27);
0.3.0
- Add
underlineandstrikethroughMessageEntityTypes(see #25); - Fix for Stack 15 (see #24);
- Fix installation after breaking change in
servant-0.16(see #21); - Add
phonenumbertype (see #23); - Add
cashtagmessage entity type (close #19) (see #20); - Feat/kick chat member (see #17);
- Feat/delete message method (see #16);
- Fix
startBotAsync, addprocessActionsIndefinitely(see #12); - Add some badges to README (Hackage/Stackage/Travis) (see 11f13f3);
- Remove temporary
files/scriptsfrom repo (see 6bc9f48); - Add info about LambdaConf 2018 workshop and contributing (see 1ba4d95);
- Add
Data.Monoidimport to fix builds on GHC 8.2 (see c798001);
0.2.0
-
Major changes:
- Add bot jobs support (see
9e0424e); - Add
Telegram.Bot.Simple.Debug(see7db84c5,49679d4,5ba949b); - Introduce
BotEnvwith model state and action queue (see98c869a); - Add support for message editing (see
b7c83a4); - Introduce
replyOrEdithelper (seeecc21cd); - Add useLatestUpdateInJobs helper to enable reply in jobs (see
385f9e6,8a12ceb,448bcd2);
- Add bot jobs support (see
-
Minor changes:
- Add
getEnvTokenhelper (seece7d1f7); - Add
IsStringinstance forTelegram.Token(seef105bb9); - Print Servant errors when
getUpdatesfails (seebc7c5bb); - Split
Telegram.Bot.Simpleinto several submodules (see8ed2783); - Add
withEffecthelper inTelegram.Bot.Simple.Eff(seeaebba52); - More Haddock documentation;
- Add
-
Fixes: