From 7ce50c59d6de1cac7b636e75654c09dd08f1407f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 18 Feb 2024 21:21:30 +0000 Subject: [PATCH] Update docs --- ChangeLog.md | 51 +- README.md | 1723 +++++++++++++++++++++++++++++++------------------- 2 files changed, 1101 insertions(+), 673 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 53c9ad5..62ef093 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -2,12 +2,42 @@ # ChangeLog + + +## 0.5.0 (2024-02-18) + + + +### Added + +* Now bot can be started in debug mode. When this mode is on, then interactive debugger will pop up on errors. +* If bot defines some commands implementing [`cl-telegram-bot/entities/command:on-command`][56c0] generic-function, then + these commands will be reported to the telegram server automatically and it will show the to user when he + starts text with `/`. +* Added support for buttons with callbacks. To define a callback, implement a method for + [`cl-telegram-bot/callback:on-callback`][1b93] generic-function. After that, you can construct an inline keyboard + using [`cl-telegram-bot/inline-keyboard:inline-keyboard`][35e0] function and [`cl-telegram-bot/inline-keyboard:callback-button`][734b] function. + This keyboard object can be supplied as `:REPLY-MARKUP` argument to [`cl-telegram-bot/response:reply`][0d9a] function. +* New functions `cl-telegram-bot/response:alert` ([`1`][61ac] [`2`][4b97]) and `cl-telegram-bot/response:notify` ([`1`][6672] [`2`][0817]) were added. An example usage of these functions + along with inline keyboard was added to `example/bot.lisp`. +* Function [`cl-telegram-bot/response-processing:interrupt-processing`][e96a] was added in case if you want to interrupt processing of + current message and skip the rest of the handler. +* Function [`cl-telegram-bot/message:get-current-message`][4af2] was added. +* Function [`cl-telegram-bot/message:get-current-chat`][e428] was added. + + + +### Removed + +* Function `CL-TELEGRAM-BOT/MESSAGE:REPLY` was removed and replaced with [`cl-telegram-bot/response:reply`][0d9a] function. + Previously it interrupted the processing flow and you only was able to reply once. With the new function + you can respond with different pieces, for example to show user a image and text with inline keyboard. + ## 0.4.0 (2023-04-22) * Changed a lot of imports some symbols not bound to functions were removed, some readers and accessors are exported. - * Added an autogenerated `API` reference. @@ -15,13 +45,9 @@ ## 0.3.2 (2022-07-10) * Change the parameters of `make-request` to allow passing request parameters straight into it. - * Add `id` slot to `message`; add `forward-message`, `delete-message` functions reliant on `id`. - * Add more `message` types: `reply`, `video-message`, `document-message` and other media message types. - * Add `send-*` media-sending message types. - * Add more `chat` types: `group`, `supergroup`, and `channel`. @@ -43,9 +69,7 @@ * Added a dependency from `trivial-timeout` and now connect timeout is used when doing requests to `API`. - * Function `make-` now proxie any parameters to the class's constructor. - * Now function `stop-processing` checks if thread is alive before destroying it. @@ -61,5 +85,18 @@ Project was broken down to subpackages, nicknames `telegram-bot` and package-inferred-system class and each file have it's own separate packages. +[1b93]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FCALLBACK-3AON-CALLBACK-20GENERIC-FUNCTION-29 +[56c0]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FENTITIES-2FCOMMAND-3AON-COMMAND-20GENERIC-FUNCTION-29 +[734b]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FINLINE-KEYBOARD-3ACALLBACK-BUTTON-20FUNCTION-29 +[35e0]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FINLINE-KEYBOARD-3AINLINE-KEYBOARD-20FUNCTION-29 +[e428]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FMESSAGE-3AGET-CURRENT-CHAT-20FUNCTION-29 +[4af2]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FMESSAGE-3AGET-CURRENT-MESSAGE-20FUNCTION-29 +[4b97]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3AALERT-20CLASS-29 +[61ac]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3AALERT-20FUNCTION-29 +[0817]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3ANOTIFY-20CLASS-29 +[6672]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3ANOTIFY-20FUNCTION-29 +[0d9a]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3AREPLY-20FUNCTION-29 +[e96a]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-PROCESSING-3AINTERRUPT-PROCESSING-20FUNCTION-29 + * * * ###### [generated by [40ANTS-DOC](https://40ants.com/doc/)] diff --git a/README.md b/README.md index 2b340c3..347b410 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,13 @@ ## CL-TELEGRAM-BOT ASDF System Details -* Version: 0.4.0 - * Description: Telegram Bot `API`, based on sovietspaceship's work but mostly rewritten. - * Licence: `MIT` - * Author: Alexander Artemenko - * Homepage: [https://40ants.com/cl-telegram-bot/][6949] - * Bug tracker: [https://github.com/40ants/cl-telegram-bot/issues][5798] - * Source control: [GIT][53d1] - -* Depends on: [alexandria][8236], [arrows][b590], [bordeaux-threads][3dbf], [cl-ppcre][49b9], [cl-strings][2ecb], [closer-mop][61a4], [dexador][8347], [jonathan][6dd8], [kebab][5186], [log4cl][7f8b], [serapeum][c41d], [trivial-backtrace][fc0e] +* Depends on: [alexandria][8236], [arrows][b590], [bordeaux-threads][3dbf], [cl-ppcre][49b9], [cl-strings][2ecb], [closer-mop][61a4], [dexador][8347], [jonathan][6dd8], [kebab][5186], [log4cl][7f8b], [serapeum][c41d], [str][ef7f], [trivial-backtrace][fc0e] [![](https://github-actions.40ants.com/40ants/cl-telegram-bot/matrix.svg?only=ci.run-tests)][7bb5] @@ -105,764 +97,1153 @@ And start communicating with him: ## API - + -### CL-TELEGRAM-BOT/MESSAGE +### CL-TELEGRAM-BOT/BOT - + -#### [package](287f) `cl-telegram-bot/message` +#### [package](a0ce) `cl-telegram-bot/bot` - + #### Classes - + -##### ANIMATION-MESSAGE +##### BOT - + -###### [class](eef7) `animation-message` (file-message) +###### [class](be8b) `bot` () - +**Readers** -##### ANIMATION + - +###### [reader](b072) `api-uri` (bot) (:API-URI = "https://api.telegram.org/") -###### [class](7aad) `animation` (file temporal spatial) + - +###### [reader](da65) `debug-mode` (bot) (:debug-mode = nil) -##### AUDIO-MESSAGE +When debug mode is T, then interactive debugger will be called on each error. - + -###### [class](19f6) `audio-message` (file-message) +###### [reader](7244) `file-endpoint` (bot) (:file-endpoint = nil) - +`HTTPS` file-endpoint -##### AUDIO + - +###### [reader](d193) `get-endpoint` (bot) (:endpoint) -###### [class](9d6d) `audio` (file temporal) +`HTTPS` endpoint -**Readers** + - +###### [reader](a9f4) `get-last-update-id` (bot) (= 0) -###### [reader](e514) `get-performer` (audio) (:performer) +Update id -Performer of the audio as defined by sender or by audio tags. + - +###### [reader](6bea) `sent-commands-cache` (bot) (= nil) -###### [reader](5257) `get-title` (audio) (:title) +Command processing code will use this cache to update commands list on the server +when a new method for [`cl-telegram-bot/entities/command:on-command`][56c0] generic-function is defined. -Title of the audio as defined by sender or by audio tags. +This slot is for internal use. - + -##### DOCUMENT-MESSAGE +###### [reader](9396) `token` (bot) (:token = nil) - +Bot token given by BotFather -###### [class](0418) `document-message` (file-message) +**Accessors** - + -##### DOCUMENT +###### [accessor](b072) `api-uri` (bot) (:API-URI = "https://api.telegram.org/") - + -###### [class](1141) `document` (file) +###### [accessor](da65) `debug-mode` (bot) (:debug-mode = nil) - +When debug mode is T, then interactive debugger will be called on each error. -##### FILE-MESSAGE + - +###### [accessor](7244) `file-endpoint` (bot) (:file-endpoint = nil) -###### [class](799d) `file-message` (message) +`HTTPS` file-endpoint -**Readers** + - +###### [accessor](a9f4) `get-last-update-id` (bot) (= 0) -###### [reader](b2c7) `get-file` (file-message) (:file) +Update id - + -##### FILE +###### [accessor](6bea) `sent-commands-cache` (bot) (= nil) - +Command processing code will use this cache to update commands list on the server +when a new method for [`cl-telegram-bot/entities/command:on-command`][56c0] generic-function is defined. -###### [class](1539) `file` () +This slot is for internal use. -**Readers** + - +###### [accessor](9396) `token` (bot) (:token = nil) -###### [reader](86bb) `get-file-id` (file) (:file-id) +Bot token given by BotFather -Identifier for this file, which can be used to download or reuse the file. + - +#### Macros -###### [reader](1559) `get-file-name` (file) (:file-name) + -Original filename as defined by sender. +##### [macro](4509) `defbot` name - + -###### [reader](2b03) `get-file-size` (file) (:file-size) +### CL-TELEGRAM-BOT/CALLBACK -File size in bytes. + - +#### [package](cd8b) `cl-telegram-bot/callback` -###### [reader](00ba) `get-file-unique-id` (file) (:file-unique-id) + -Unique identifier for this file, which is supposed to be the same -over time and for different bots. Can't be used to download or reuse -the file. +#### Classes - + -###### [reader](29cf) `get-mime-type` (file) (:mime-type) +##### CALLBACK -`MIME` type of the file as defined by sender. + - +###### [class](4364) `callback` () -##### MESSAGE +**Readers** - + -###### [class](5c0b) `message` () +###### [reader](1490) `callback-data` (callback) (:data) -**Readers** + - +###### [reader](fd4a) `callback-id` (callback) (:id) -###### [reader](7b24) `get-caption` (message) (:caption) + -Caption for the animation, audio, document, photo, video or voice. +###### [reader](a11d) `callback-message` (callback) (:message) - + -###### [reader](f214) `get-chat` (message) (:chat) +#### Generics - + -###### [reader](38bc) `get-entities` (message) (:entities = nil) +##### [generic-function](349a) `callback-chat` callback - +Returns a chat from where callback was sent. -###### [reader](f765) `get-forward-from` (message) (:forward-from) + -For forwarded messages, sender of the original message. +##### [generic-function](5d19) `make-callback` bot callback-data - +Called when user clicks callback button. Should return an instance of [`callback`][6611] class. -###### [reader](5ea8) `get-forward-from-chat` (message) (:forward-from-chat) +Application may override this method to return objects of different callback classes depending on +callback-data string. This way it mab be easier to define more specific methods for +[`on-callback`][1b93] generic-function. -For messages forwarded from channels or from anonymous -administrators, information about the original sender chat. + - +##### [generic-function](4fe4) `on-callback` bot callback -###### [reader](d8cb) `get-forward-sender-name` (message) (:forward-sender-name) +Called when user clicks callback button. Second argument is an object of `CALLBACK` type. -For forwarded messages, sender of the original message. + - +### CL-TELEGRAM-BOT/CHAT -###### [reader](42cb) `get-message-id` (message) (:id) + - +#### [package](91f1) `cl-telegram-bot/chat` -###### [reader](15b9) `get-raw-data` (message) (:raw-data) + - +#### Classes -###### [reader](7c01) `get-text` (message) (:text) + - +##### CHANNEL -##### PHOTO-MESSAGE + - +###### [class](a7be) `channel` (base-group) -###### [class](4f9d) `photo-message` (file-message) + -**Readers** +##### CHAT - + -###### [reader](414a) `get-photo-options` (photo-message) (:photo-options) +###### [class](855e) `chat` () - +**Readers** -##### PHOTO + - +###### [reader](8c57) `get-chat-id` (chat) (:id) -###### [class](d514) `photo` (file spatial) + - +###### [reader](716f) `get-has-protected-content` (chat) (:has-protected-content) -##### REPLY + - +###### [reader](723f) `get-message-auto-delete-time` (chat) (:message-auto-delete-time) -###### [class](2a1a) `reply` (message) + -**Readers** +###### [reader](3c4f) `get-raw-data` (chat) (:raw-data) - + -###### [reader](2cce) `cl-telegram-bot/message:get-reply-to-message` (reply) (:reply-to-message) +###### [reader](4c0b) `get-username` (chat) (:username) - + -##### SPATIAL +##### GROUP - + -###### [class](e6a1) `spatial` () +###### [class](1333) `group` (base-group) -**Readers** + - +##### PRIVATE-CHAT -###### [reader](1437) `get-height` (spatial) (:height) + -File height as defined by sender. +###### [class](a326) `private-chat` (chat) - +**Readers** -###### [reader](db4a) `get-width` (spatial) (:width) + -File width as defined by sender. +###### [reader](65f1) `get-bio` (private-chat) (:bio) - + -##### STICKER-MESSAGE +###### [reader](7322) `get-first-name` (private-chat) (:first-name) - + -###### [class](6759) `sticker-message` (file-message) +###### [reader](ba51) `get-has-private-forwards` (private-chat) (:has-private-forwards) - + -##### STICKER +###### [reader](8b8b) `get-last-name` (private-chat) (:last-name) - + -###### [class](cfb8) `sticker` (file spatial) +##### SUPER-GROUP + + + +###### [class](27bb) `super-group` (base-group) **Readers** - + -###### [reader](d1ce) `get-emoji` (sticker) (:emoji) +###### [reader](9175) `get-can-set-sticker-set` (super-group) (:can-set-sticker-set) -Emoji associated with the sticker + - +###### [reader](cca3) `get-join-by-request` (super-group) (:join-by-request) -###### [reader](5da1) `get-is-animated` (sticker) (:is-animated) + -True if the sticker is animated. +###### [reader](b3e7) `get-join-to-send-messages` (super-group) (:join-to-send-messages) - + -###### [reader](f513) `get-is-video` (sticker) (:is-video) +###### [reader](1ddb) `get-slow-mode-delay` (super-group) (:slow-mode-delay) -True if the sticker is a video sticker. + - +###### [reader](ac23) `get-sticker-set-name` (super-group) (:sticker-set-name) -###### [reader](6f47) `get-set-name` (sticker) (:set-name) + -Name of the sticker set to which the sticker belongs. +#### Functions - + -##### TEMPORAL +##### [function](af8d) `delete-chat-photo` bot-var1 chat - +https://core.telegram.org/bots/api#deletechatphoto -###### [class](1326) `temporal` () + -**Readers** +##### [function](fa29) `export-chat-invite-link` bot-var1 chat - +https://core.telegram.org/bots/api#exportchatinvitelink -###### [reader](ecd6) `get-duration` (temporal) (:duration) + -Duration of the file in seconds as defined by sender. +##### [function](c38a) `get-chat-administrators` bot-var1 chat - +https://core.telegram.org/bots/api#getchatadministrators -##### UNISPATIAL + - +##### [function](fdac) `get-chat-by-id` bot-var1 chat-id -###### [class](5561) `unispatial` () +https://core.telegram.org/bots/api#getchat -**Readers** + - +##### [function](46c1) `get-chat-member` bot-var1 chat user-id -###### [reader](9dce) `get-length` (unispatial) (:length) +https://core.telegram.org/bots/api#getchatmember - + -##### VIDEO-MESSAGE +##### [function](9a80) `get-chat-members-count` bot-var1 chat - +https://core.telegram.org/bots/api#getchatmemberscount -###### [class](4c67) `video-message` (file-message) + - +##### [function](8f95) `kick-chat-member` bot-var1 chat user-id until-date -##### VIDEO-NOTE-MESSAGE +https://core.telegram.org/bots/api#kickchatmember - + -###### [class](5e1e) `video-note-message` (file-message) +##### [function](be17) `leave-chat` bot-var1 chat - +https://core.telegram.org/bots/api#leavechat -##### VIDEO-NOTE + - +##### [function](2115) `pin-chat-message` bot-var1 chat message-id disable-notification -###### [class](6c67) `video-note` (file temporal unispatial) +https://core.telegram.org/bots/api#pinchatmessage - + -##### VIDEO +##### [function](d010) `promote-chat-member` bot-var1 chat user-id can-change-info can-post-messages can-edit-messages can-delete-messages can-invite-users can-restrict-members can-pin-messages can-promote-members - +https://core.telegram.org/bots/api#promotechatmember -###### [class](1593) `video` (file temporal spatial) + - +##### [function](227d) `restrict-chat-member` bot-var1 chat user-id until-date can-send-messages can-send-media-messages can-send-other-messages can-add-web-page-previews -##### VOICE-MESSAGE +https://core.telegram.org/bots/api#restrictchatmember - + -###### [class](6533) `voice-message` (file-message) +##### [function](87d3) `send-chat-action` bot-var1 chat action - +https://core.telegram.org/bots/api#sendchataction -##### VOICE + - +##### [function](d819) `set-chat-description` bot-var1 chat description -###### [class](99ec) `voice` (file temporal) +https://core.telegram.org/bots/api#setchatdescription - + -#### Generics +##### [function](b678) `set-chat-photo` bot-var1 chat photo - +https://core.telegram.org/bots/api#setchatphoto -##### [generic-function](9364) `on-message` bot text + -This method gets called with raw text from the message. -By default it does nothing. +##### [function](9daf) `set-chat-title` bot-var1 chat title - +https://core.telegram.org/bots/api#setchattitle -##### [generic-function](523c) `send-animation` bot chat animation &rest options &key caption parse-mode caption-entities duration width height thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup + -Sends animation to a chat. +##### [function](3edf) `unban-chat-member` bot-var1 chat user-id - +https://core.telegram.org/bots/api#unbanchatmember -##### [generic-function](f0a0) `send-audio` bot chat audio &rest options &key caption parse-mode caption-entities duration performer title thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup + - +##### [function](3555) `unpin-chat-message` bot-var1 chat -##### [generic-function](ed33) `send-document` bot chat document &rest options &key caption parse-mode caption-entities disable-content-type-detection thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup +https://core.telegram.org/bots/api#unpinchatmessage - + -##### [generic-function](6344) `send-photo` bot chat photo &rest options &key caption parse-mode caption-entities disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup +### CL-TELEGRAM-BOT/CORE - + -##### [generic-function](524d) `send-sticker` bot chat sticker &rest options &key disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup +#### [package](f327) `cl-telegram-bot/core` -A function to send sticker. + - +#### Classes -##### [generic-function](af9c) `send-video` bot chat video &rest options &key caption parse-mode caption-entities duration width height thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup + - +##### REPLY -##### [generic-function](6106) `send-video-note` bot chat video-note &rest options &key caption parse-mode caption-entities duration length thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup + - +###### [class](5c41) `reply` (response-with-text) -##### [generic-function](261c) `send-voice` bot chat voice &rest options &key caption parse-mode caption-entities duration disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup + - +#### Generics + + + +##### [generic-function](8619) `on-command` bot command rest-text + +This method will be called for each command. +First argument is a keyword. If user input was /save_note, then +first argument will be :save-note. + +By default, logs call and does nothing. + + + +##### [generic-function](c070) `on-message` bot text + +This method gets called with raw text from the message. +By default it does nothing. + + #### Functions - + -##### [function](6059) `delete-message` bot chat message +##### [function](f39d) `reply` text &rest args &key parse-mode disable-web-page-preview disable-notification reply-to-message-id reply-markup (immediately t) -https://core.telegram.org/bots/api#deletemessage +Works like a [`send-message`][38a1], but only when an incoming message is processed. +Automatically sends reply to a chat from where current message came from. - + -##### [function](7691) `forward-message` bot chat from-chat message &key disable-notification +##### [function](10f0) `start-processing` BOT &KEY DEBUG (DELAY-BETWEEN-RETRIES 10) (THREAD-NAME "telegram-bot") -https://core.telegram.org/bots/api#forwardmessage + - +##### [function](a365) `stop-processing` bot -##### [function](3c79) `get-current-chat` + -Returns a chat where currently processing message was received. +#### Macros - + -##### [function](5191) `make-message` data +##### [macro](4509) `defbot` name - + -##### [function](9c91) `reply` text &rest args &key parse-mode disable-web-page-preview disable-notification reply-to-message-id reply-markup +### CL-TELEGRAM-BOT/ENTITIES/COMMAND -Works like a send-message, but only when an incoming message is processed. -Automatically sends reply to a chat from where current message came from. + - +#### [package](b4da) `cl-telegram-bot/entities/command` -##### [function](aec0) `send-message` bot chat text &rest options &key parse-mode disable-web-page-preview disable-notification reply-to-message-id reply-markup + -https://core.telegram.org/bots/api#sendmessage +#### Classes - + -### CL-TELEGRAM-BOT/TELEGRAM-CALL +##### BOT-COMMAND - + -#### [package](32dc) `cl-telegram-bot/telegram-call` +###### [class](62b9) `bot-command` (entity) - +**Readers** -### CL-TELEGRAM-BOT/CHAT + - +###### [reader](3668) `get-command` (bot-command) (:command) -#### [package](48f6) `cl-telegram-bot/chat` + - +###### [reader](5c1f) `get-rest-text` (bot-command) (:rest-text) + + + +#### Generics + + + +##### [generic-function](8619) `on-command` bot command rest-text + +This method will be called for each command. +First argument is a keyword. If user input was /save_note, then +first argument will be :save-note. + +By default, logs call and does nothing. + + + +### CL-TELEGRAM-BOT/ENTITIES/CORE + + + +#### [package](f674) `cl-telegram-bot/entities/core` + + + +#### Generics + + + +##### [generic-function](59bf) `make-entity-internal` entity-type payload data + +Extendable protocol to support entities of different kinds. +First argument is a keyword, denoting a type of the entity. +Payload is an object of type `message'. +And data is a plist with data, describing the entity. + + + +#### Functions + + + +##### [function](874c) `make-entity` payload data + + + +### CL-TELEGRAM-BOT/INLINE-KEYBOARD + + + +#### [package](a4ec) `cl-telegram-bot/inline-keyboard` + + #### Classes - + -##### CHANNEL +##### CALLBACK-BUTTON - + -###### [class](fafc) `channel` (base-group) +###### [class](d441) `callback-button` (inline-keyboard-button) - +**Readers** -##### CHAT + - +###### [reader](1293) `callback-button-data` (callback-button) (:data) + + + +##### INLINE-KEYBOARD-BUTTON + + + +###### [class](cc59) `inline-keyboard-button` () + +Base class for all inline keyboard buttons. -###### [class](6449) `chat` () +`API`: https://core.telegram.org/bots/api#inlinekeyboardbutton **Readers** - + -###### [reader](8739) `get-chat-id` (chat) (:id) +###### [reader](4c62) `button-text` (inline-keyboard-button) (:text) - + -###### [reader](5b56) `get-has-protected-content` (chat) (:has-protected-content) +##### INLINE-KEYBOARD - + -###### [reader](f360) `get-message-auto-delete-time` (chat) (:message-auto-delete-time) +###### [class](7ae0) `inline-keyboard` () - +Represents an inline keyboard as specified in `API` https://core.telegram.org/bots/api#inlinekeyboardmarkup. -###### [reader](44cb) `get-raw-data` (chat) (:raw-data) +**Readers** - + -###### [reader](b5a9) `get-username` (chat) (:username) +###### [reader](bc81) `keyboard-rows` (inline-keyboard) (:rows = nil) - + -##### GROUP +##### URL-BUTTON - + -###### [class](e715) `group` (base-group) +###### [class](3d88) `url-button` (inline-keyboard-button) - +**Readers** -##### PRIVATE-CHAT + - +###### [reader](4efb) `button-url` (url-button) (:data) + + + +#### Functions + + + +##### [function](48eb) `answer-callback-query` bot callback &key text show-alert url + +https://core.telegram.org/bots/api#answercallbackquery + + + +##### [function](662b) `callback-button` text data + +Creates a button which will call a callback. + + + +##### [function](4c4e) `inline-keyboard` rows + +Returns an inline keyboard which can be passed +to `cl-telegram-bot/response:reply` ([`1`][0d9a] [`2`][9ce6]) as `REPLY-MARKUP` argument. + +Each row should be a list of [`inline-keyboard-button`][cc87] objects or a single +object of this class. In latter case, such row will have only one button. + + + +##### [function](9865) `url-button` text url + +Creates a button which will open an url. + + + +### CL-TELEGRAM-BOT/MARKUP + + + +#### [package](30c4) `cl-telegram-bot/markup` + + + +#### Generics + + + +##### [generic-function](5956) `to-markup` obj -###### [class](08e5) `private-chat` (chat) +Transforms object into markup of Telegram `API`. + +Methods of this class should return a hash-table, representing `OBJ` +in terms of Telegram `API`. + + + +### CL-TELEGRAM-BOT/MESSAGE + + + +#### [package](8976) `cl-telegram-bot/message` + + + +#### Classes + + + +##### ANIMATION-MESSAGE + + + +###### [class](8971) `animation-message` (file-message) + + + +##### ANIMATION + + + +###### [class](c017) `animation` (file temporal spatial) + + + +##### AUDIO-MESSAGE + + + +###### [class](fb99) `audio-message` (file-message) + + + +##### AUDIO + + + +###### [class](91fb) `audio` (file temporal) **Readers** - + -###### [reader](b448) `get-bio` (private-chat) (:bio) +###### [reader](6155) `get-performer` (audio) (:performer) - +Performer of the audio as defined by sender or by audio tags. -###### [reader](895f) `get-first-name` (private-chat) (:first-name) + - +###### [reader](67d0) `get-title` (audio) (:title) + +Title of the audio as defined by sender or by audio tags. -###### [reader](417f) `get-has-private-forwards` (private-chat) (:has-private-forwards) + - +##### DOCUMENT-MESSAGE -###### [reader](618b) `get-last-name` (private-chat) (:last-name) + - +###### [class](adb6) `document-message` (file-message) -##### SUPER-GROUP + - +##### DOCUMENT + + + +###### [class](80d3) `document` (file) + + + +##### FILE-MESSAGE + + -###### [class](bb0c) `super-group` (base-group) +###### [class](6ae3) `file-message` (message) **Readers** - + -###### [reader](0860) `get-can-set-sticker-set` (super-group) (:can-set-sticker-set) +###### [reader](859b) `get-file` (file-message) (:file) - + -###### [reader](2012) `get-join-by-request` (super-group) (:join-by-request) +##### FILE - + -###### [reader](c12e) `get-join-to-send-messages` (super-group) (:join-to-send-messages) +###### [class](0d27) `file` () - +**Readers** -###### [reader](1578) `get-slow-mode-delay` (super-group) (:slow-mode-delay) + - +###### [reader](14c1) `get-file-id` (file) (:file-id) -###### [reader](cabb) `get-sticker-set-name` (super-group) (:sticker-set-name) +Identifier for this file, which can be used to download or reuse the file. - + -#### Functions +###### [reader](7abc) `get-file-name` (file) (:file-name) - +Original filename as defined by sender. -##### [function](88b9) `delete-chat-photo` bot-var1 chat + -https://core.telegram.org/bots/api#deletechatphoto +###### [reader](23b7) `get-file-size` (file) (:file-size) - +File size in bytes. + + + +###### [reader](7089) `get-file-unique-id` (file) (:file-unique-id) + +Unique identifier for this file, which is supposed to be the same +over time and for different bots. Can't be used to download or reuse +the file. + + + +###### [reader](b814) `get-mime-type` (file) (:mime-type) + +`MIME` type of the file as defined by sender. + + + +##### MESSAGE + + + +###### [class](d7db) `message` () + +**Readers** + + + +###### [reader](966a) `get-caption` (message) (:caption) + +Caption for the animation, audio, document, photo, video or voice. + + + +###### [reader](b31c) `get-chat` (message) (:chat) + + + +###### [reader](d05a) `get-entities` (message) (:entities = nil) + + + +###### [reader](dbcc) `get-forward-from` (message) (:forward-from) + +For forwarded messages, sender of the original message. + + + +###### [reader](561a) `get-forward-from-chat` (message) (:forward-from-chat) + +For messages forwarded from channels or from anonymous +administrators, information about the original sender chat. + + + +###### [reader](386a) `get-forward-sender-name` (message) (:forward-sender-name) + +For forwarded messages, sender of the original message. + + + +###### [reader](2212) `get-message-id` (message) (:id) + + + +###### [reader](90fe) `get-raw-data` (message) (:raw-data) + + + +###### [reader](8101) `get-text` (message) (:text) + + + +##### PHOTO-MESSAGE + + + +###### [class](fc2e) `photo-message` (file-message) + +**Readers** + + + +###### [reader](9d8e) `get-photo-options` (photo-message) (:photo-options) + + + +##### PHOTO + + + +###### [class](2f7d) `photo` (file spatial) + + + +##### REPLY + + + +###### [class](cf83) `reply` (message) + +**Readers** + + + +###### [reader](e514) `get-reply-to-message` (reply) (:reply-to-message) + + + +##### SPATIAL + + + +###### [class](722a) `spatial` () + +**Readers** + + + +###### [reader](b0ba) `get-height` (spatial) (:height) + +File height as defined by sender. + + + +###### [reader](19dc) `get-width` (spatial) (:width) + +File width as defined by sender. + + + +##### STICKER-MESSAGE + + + +###### [class](a7dc) `sticker-message` (file-message) + + + +##### STICKER + + + +###### [class](0955) `sticker` (file spatial) + +**Readers** + + + +###### [reader](1c7e) `get-emoji` (sticker) (:emoji) + +Emoji associated with the sticker + + + +###### [reader](40ce) `get-is-animated` (sticker) (:is-animated) + +True if the sticker is animated. + + + +###### [reader](4e01) `get-is-video` (sticker) (:is-video) + +True if the sticker is a video sticker. + + + +###### [reader](c695) `get-set-name` (sticker) (:set-name) + +Name of the sticker set to which the sticker belongs. + + + +##### TEMPORAL + + + +###### [class](1b71) `temporal` () + +**Readers** + + + +###### [reader](7efa) `get-duration` (temporal) (:duration) + +Duration of the file in seconds as defined by sender. + + + +##### UNISPATIAL + + + +###### [class](80e8) `unispatial` () + +**Readers** -##### [function](49f0) `export-chat-invite-link` bot-var1 chat + -https://core.telegram.org/bots/api#exportchatinvitelink +###### [reader](9560) `get-length` (unispatial) (:length) - + -##### [function](8231) `get-chat-administrators` bot-var1 chat +##### VIDEO-MESSAGE -https://core.telegram.org/bots/api#getchatadministrators + - +###### [class](c4d1) `video-message` (file-message) -##### [function](5509) `get-chat-by-id` bot-var1 chat-id + -https://core.telegram.org/bots/api#getchat +##### VIDEO-NOTE-MESSAGE - + -##### [function](8324) `get-chat-member` bot-var1 chat user-id +###### [class](2664) `video-note-message` (file-message) -https://core.telegram.org/bots/api#getchatmember + - +##### VIDEO-NOTE -##### [function](3292) `get-chat-members-count` bot-var1 chat + -https://core.telegram.org/bots/api#getchatmemberscount +###### [class](1ed9) `video-note` (file temporal unispatial) - + -##### [function](8411) `kick-chat-member` bot-var1 chat user-id until-date +##### VIDEO -https://core.telegram.org/bots/api#kickchatmember + - +###### [class](cf60) `video` (file temporal spatial) -##### [function](b62a) `leave-chat` bot-var1 chat + -https://core.telegram.org/bots/api#leavechat +##### VOICE-MESSAGE - + -##### [function](4781) `pin-chat-message` bot-var1 chat message-id disable-notification +###### [class](f363) `voice-message` (file-message) -https://core.telegram.org/bots/api#pinchatmessage + - +##### VOICE -##### [function](8137) `promote-chat-member` bot-var1 chat user-id can-change-info can-post-messages can-edit-messages can-delete-messages can-invite-users can-restrict-members can-pin-messages can-promote-members + -https://core.telegram.org/bots/api#promotechatmember +###### [class](4140) `voice` (file temporal) - + -##### [function](02da) `restrict-chat-member` bot-var1 chat user-id until-date can-send-messages can-send-media-messages can-send-other-messages can-add-web-page-previews +#### Generics -https://core.telegram.org/bots/api#restrictchatmember + - +##### [generic-function](c070) `on-message` bot text -##### [function](d6df) `send-chat-action` bot-var1 chat action +This method gets called with raw text from the message. +By default it does nothing. -https://core.telegram.org/bots/api#sendchataction + - +##### [generic-function](d99d) `send-animation` bot chat animation &rest options &key caption parse-mode caption-entities duration width height thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup -##### [function](cb11) `set-chat-description` bot-var1 chat description +Sends animation to a chat. -https://core.telegram.org/bots/api#setchatdescription + - +##### [generic-function](42d6) `send-audio` bot chat audio &rest options &key caption parse-mode caption-entities duration performer title thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup -##### [function](4df9) `set-chat-photo` bot-var1 chat photo + -https://core.telegram.org/bots/api#setchatphoto +##### [generic-function](8be4) `send-document` bot chat document &rest options &key caption parse-mode caption-entities disable-content-type-detection thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup - + -##### [function](7250) `set-chat-title` bot-var1 chat title +##### [generic-function](dabd) `send-photo` bot chat photo &rest options &key caption parse-mode caption-entities disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup -https://core.telegram.org/bots/api#setchattitle + - +##### [generic-function](6f83) `send-sticker` bot chat sticker &rest options &key disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup -##### [function](754a) `unban-chat-member` bot-var1 chat user-id +A function to send sticker. -https://core.telegram.org/bots/api#unbanchatmember + - +##### [generic-function](27cb) `send-video` bot chat video &rest options &key caption parse-mode caption-entities duration width height thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup -##### [function](eb88) `unpin-chat-message` bot-var1 chat + -https://core.telegram.org/bots/api#unpinchatmessage +##### [generic-function](f4a9) `send-video-note` bot chat video-note &rest options &key caption parse-mode caption-entities duration length thumb disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup - + -### CL-TELEGRAM-BOT/BOT +##### [generic-function](47c6) `send-voice` bot chat voice &rest options &key caption parse-mode caption-entities duration disable-notification protect-content reply-to-message-id allow-sending-without-reply reply-markup - + -#### [package](59cd) `cl-telegram-bot/bot` +#### Functions - + -#### Classes +##### [function](5695) `delete-message` bot chat message - +https://core.telegram.org/bots/api#deletemessage -##### BOT + - +##### [function](fe2c) `forward-message` bot chat from-chat message &key disable-notification -###### [class](3557) `bot` () +https://core.telegram.org/bots/api#forwardmessage -**Readers** + - +##### [function](95dd) `get-current-chat` -###### [reader](bd2c) `api-uri` (bot) (:API-URI = "https://api.telegram.org/") +Returns a chat where currently processing message was received. - + -###### [reader](949c) `file-endpoint` (bot) (:file-endpoint = nil) +##### [function](f658) `get-current-message` -`HTTPS` file-endpoint +Returns currently processed message. - + -###### [reader](1b12) `get-endpoint` (bot) (:endpoint) +##### [function](33af) `make-message` data -`HTTPS` endpoint + - +##### [function](ab63) `send-message` bot chat text &rest options &key parse-mode disable-web-page-preview disable-notification reply-to-message-id reply-markup -###### [reader](9808) `get-last-update-id` (bot) (= 0) +https://core.telegram.org/bots/api#sendmessage -Update id + - +### CL-TELEGRAM-BOT/NETWORK -###### [reader](73b2) `token` (bot) (:token = nil) + -Bot token given by BotFather +#### [package](f220) `cl-telegram-bot/network` -**Accessors** + - +#### Classes -###### [accessor](bd2c) `api-uri` (bot) (:API-URI = "https://api.telegram.org/") + - +##### REQUEST-ERROR -###### [accessor](949c) `file-endpoint` (bot) (:file-endpoint = nil) + -`HTTPS` file-endpoint +###### [condition](7d33) `request-error` (error) - +**Readers** -###### [accessor](9808) `get-last-update-id` (bot) (= 0) + -Update id +###### [reader](7d33) `what` (request-error) (:what) - + -###### [accessor](73b2) `token` (bot) (:token = nil) +#### Functions -Bot token given by BotFather + - +##### [function](579b) `make-request` bot name &rest options &key (streamp nil) (timeout 3) &allow-other-keys -#### Macros +Perform `HTTP` request to 'name `API` method with 'options `JSON`-encoded object. - + -##### [macro](d03d) `defbot` name +##### [function](5070) `set-proxy` proxy @@ -870,7 +1251,7 @@ Bot token given by BotFather -#### [package](6cca) `cl-telegram-bot/pipeline` +#### [package](91c3) `cl-telegram-bot/pipeline` @@ -878,7 +1259,7 @@ Bot token given by BotFather -##### [generic-function](5337) `process` bot object +##### [generic-function](f88b) `process` bot object This method is called by when processing a single update. It is called multiple times on different parts of an update. @@ -890,215 +1271,205 @@ For each update we call: For each entity in payload: process(entity) - + -### CL-TELEGRAM-BOT/UPDATE +### CL-TELEGRAM-BOT/RESPONSE - + -#### [package](07ff) `cl-telegram-bot/update` +#### [package](c9b7) `cl-telegram-bot/response` - + #### Classes - + -##### UPDATE +##### ALERT - + -###### [class](341d) `update` () +###### [class](dda9) `alert` (response-with-text) -**Readers** + - +##### NOTIFY -###### [reader](e0e1) `get-payload` (update) (:payload) + - +###### [class](18d5) `notify` (response-with-text) -###### [reader](de2f) `get-raw-data` (update) (:raw-data) + - +##### OPEN-URL -###### [reader](162d) `get-update-id` (update) (:id) + - +###### [class](e4f8) `open-url` (response) -#### Generics +**Readers** - + -##### [generic-function](5942) `process-updates` bot +###### [reader](3134) `url-to-open` (open-url) (:text) -By default, this method starts an infinite loop and fetching new updates using long polling. + - +##### REPLY -#### Functions + - +###### [class](5c41) `reply` (response-with-text) -##### [function](0526) `make-update` data + - +##### RESPONSE-WITH-TEXT -### CL-TELEGRAM-BOT/NETWORK + - +###### [class](c566) `response-with-text` (response) -#### [package](59b3) `cl-telegram-bot/network` +**Readers** - + -#### Classes +###### [reader](6a83) `response-text` (response-with-text) (:text) - + -##### REQUEST-ERROR +##### RESPONSE - + -###### [condition](35c2) `request-error` (error) +###### [class](da69) `response` () **Readers** - + -###### [reader](35c2) `what` (request-error) (:what) +###### [reader](f7f8) `rest-args` (response) (:args) - + #### Functions - + -##### [function](77b3) `make-request` bot name &rest options &key (streamp nil) (timeout 3) &allow-other-keys +##### [function](4218) `alert` text -Perform `HTTP` request to 'name `API` method with 'options `JSON`-encoded object. +Works like a [`send-message`][38a1], but only when an incoming message is processed. +Automatically sends reply to a chat from where current message came from. - + -##### [function](4834) `set-proxy` proxy +##### [function](0fff) `notify` text - +Works like a [`send-message`][38a1], but only when an incoming message is processed. +Automatically sends reply to a chat from where current message came from. -### CL-TELEGRAM-BOT/CORE + - +##### [function](6554) `open-url` url -#### [package](c691) `cl-telegram-bot/core` +Works like a [`send-message`][38a1], but only when an incoming message is processed. +Automatically sends reply to a chat from where current message came from. - + -#### Classes +##### [function](f39d) `reply` text &rest args &key parse-mode disable-web-page-preview disable-notification reply-to-message-id reply-markup (immediately t) - +Works like a [`send-message`][38a1], but only when an incoming message is processed. +Automatically sends reply to a chat from where current message came from. -##### REPLY + - +### CL-TELEGRAM-BOT/RESPONSE-PROCESSING -###### [class](2a1a) `reply` (message) + -**Readers** +#### [package](4a84) `cl-telegram-bot/response-processing` - + -###### [reader](2cce) `cl-telegram-bot/message:get-reply-to-message` (reply) (:reply-to-message) +#### Classes - + -#### Generics +##### INTERRUPT-PROCESSING - + -##### [generic-function](4cbd) `on-command` bot command rest-text +###### [condition](3476) `interrupt-processing` () -This method will be called for each command. -First argument is a keyword. If user input was /save_note, then -first argument will be :save-note. + -By default, logs call and does nothing. +#### Generics - + -##### [generic-function](9364) `on-message` bot text +##### [generic-function](25bf) `process-response` bot message response -This method gets called with raw text from the message. -By default it does nothing. +Processes immediate responses of different types. - + #### Functions - - -##### [function](9c91) `reply` text &rest args &key parse-mode disable-web-page-preview disable-notification reply-to-message-id reply-markup - -Works like a send-message, but only when an incoming message is processed. -Automatically sends reply to a chat from where current message came from. - - - -##### [function](4d7b) `start-processing` bot &key debug (delay-between-retries 10) + - +##### [function](4559) `interrupt-processing` -##### [function](9ed6) `stop-processing` bot + - +### CL-TELEGRAM-BOT/UPDATE -#### Macros + - +#### [package](e6ee) `cl-telegram-bot/update` -##### [macro](d03d) `defbot` name + - +#### Classes -### CL-TELEGRAM-BOT/ENTITIES/COMMAND + - +##### UPDATE -#### [package](c9b2) `cl-telegram-bot/entities/command` + - +###### [class](209e) `update` () -#### Classes +**Readers** - + -##### BOT-COMMAND +###### [reader](83b1) `get-payload` (update) (:payload) - + -###### [class](345a) `bot-command` (entity) +###### [reader](947a) `get-raw-data` (update) (:raw-data) -**Readers** + - +###### [reader](645c) `get-update-id` (update) (:id) -###### [reader](56b2) `get-command` (bot-command) (:command) + - +#### Generics -###### [reader](60b8) `get-rest-text` (bot-command) (:rest-text) + - +##### [generic-function](a390) `process-updates` bot -#### Generics +By default, this method starts an infinite loop and fetching new updates using long polling. - + -##### [generic-function](4cbd) `on-command` bot command rest-text +#### Functions -This method will be called for each command. -First argument is a keyword. If user input was /save_note, then -first argument will be :save-note. + -By default, logs call and does nothing. +##### [function](ddc3) `make-update` data @@ -1106,7 +1477,7 @@ By default, logs call and does nothing. -#### [package](93b3) `cl-telegram-bot/utils` +#### [package](276b) `cl-telegram-bot/utils` @@ -1114,192 +1485,211 @@ By default, logs call and does nothing. -##### [function](d4b4) `make-keyword` text +##### [function](4225) `make-keyword` text -##### [function](cbd1) `obfuscate` url - - - -### CL-TELEGRAM-BOT/ENTITIES/CORE - - - -#### [package](6ba8) `cl-telegram-bot/entities/core` - - - -#### Generics - - - -##### [generic-function](6f78) `make-entity-internal` entity-type payload data - -Extendable protocol to support entities of different kinds. -First argument is a keyword, denoting a type of the entity. -Payload is an object of type `message'. -And data is a plist with data, describing the entity. - - - -#### Functions - - - -##### [function](02b5) `make-entity` payload data +##### [function](9d84) `obfuscate` url ## Credits * [Rei][b588] – initial version. - * [Alexander Artemenko][891d] – large refactoring, usage of `CLOS` classes, etc. [6949]: https://40ants.com/cl-telegram-bot/ +[6611]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FCALLBACK-3ACALLBACK-20CLASS-29 +[1b93]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FCALLBACK-3AON-CALLBACK-20GENERIC-FUNCTION-29 +[56c0]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FENTITIES-2FCOMMAND-3AON-COMMAND-20GENERIC-FUNCTION-29 +[cc87]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FINLINE-KEYBOARD-3AINLINE-KEYBOARD-BUTTON-20CLASS-29 +[38a1]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FMESSAGE-3ASEND-MESSAGE-20FUNCTION-29 +[9ce6]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3AREPLY-20CLASS-29 +[0d9a]: https://40ants.com/cl-telegram-bot/#x-28CL-TELEGRAM-BOT-2FRESPONSE-3AREPLY-20FUNCTION-29 [53d1]: https://github.com/40ants/cl-telegram-bot [7bb5]: https://github.com/40ants/cl-telegram-bot/actions -[59cd]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L1 -[3557]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L17 -[9808]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L18 -[73b2]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L22 -[bd2c]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L27 -[1b12]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L31 -[949c]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L35 -[d03d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/bot.lisp#L42 -[48f6]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L1 -[e715]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L111 -[bb0c]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L115 -[c12e]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L116 -[2012]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L118 -[1578]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L120 -[cabb]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L122 -[0860]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L124 -[fafc]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L127 -[5509]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L157 -[8411]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L163 -[754a]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L167 -[02da]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L171 -[8137]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L181 -[49f0]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L194 -[4df9]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L198 -[88b9]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L202 -[7250]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L206 -[cb11]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L210 -[4781]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L214 -[eb88]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L218 -[b62a]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L222 -[8231]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L226 -[3292]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L230 -[8324]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L234 -[d6df]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L238 -[6449]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L54 -[8739]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L55 -[b5a9]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L57 -[5b56]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L59 -[f360]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L61 -[44cb]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L63 -[08e5]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L83 -[895f]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L84 -[618b]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L86 -[b448]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L88 -[417f]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/chat.lisp#L90 -[c691]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/core.lisp#L1 -[4d7b]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/core.lisp#L34 -[9ed6]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/core.lisp#L57 -[c9b2]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/command.lisp#L1 -[345a]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/command.lisp#L22 -[56b2]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/command.lisp#L23 -[60b8]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/command.lisp#L26 -[4cbd]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/command.lisp#L49 -[6ba8]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/core.lisp#L1 -[6f78]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/core.lisp#L23 -[02b5]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/entities/core.lisp#L36 -[287f]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L1 -[7b24]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L101 -[f214]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L105 -[38bc]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L108 -[15b9]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L112 -[f765]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L114 -[d8cb]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L118 -[5ea8]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L122 -[1326]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L144 -[ecd6]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L145 -[e6a1]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L151 -[1437]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L152 -[db4a]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L157 -[5561]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L163 -[9dce]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L164 -[1539]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L169 -[86bb]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L170 -[00ba]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L175 -[1559]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L182 -[2b03]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L187 -[29cf]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L192 -[d514]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L198 -[9d6d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L200 -[e514]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L201 -[5257]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L206 -[7aad]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L212 -[1141]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L214 -[1593]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L216 -[6c67]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L218 -[99ec]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L220 -[cfb8]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L223 -[5da1]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L224 -[f513]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L228 -[d1ce]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L232 -[6f47]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L236 -[799d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L253 -[b2c7]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L254 -[19f6]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L266 -[0418]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L268 -[eef7]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L270 -[4f9d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L272 -[414a]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L273 -[6759]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L283 -[4c67]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L285 -[5e1e]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L287 -[6533]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L289 -[2a1a]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L291 -[2cce]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L292 -[5191]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L300 -[aec0]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L329 -[6344]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L345 -[f0a0]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L405 -[ed33]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L448 -[af9c]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L491 -[523c]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L534 -[6106]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L557 -[261c]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L600 -[524d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L643 -[7691]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L701 -[6059]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L745 -[9c91]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L759 -[9364]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L784 -[3c79]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L824 -[5c0b]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L94 -[42cb]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L95 -[7c01]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/message.lisp#L97 -[59b3]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/network.lisp#L1 -[4834]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/network.lisp#L17 -[35c2]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/network.lisp#L20 -[77b3]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/network.lisp#L27 -[6cca]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/pipeline.lisp#L1 -[5337]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/pipeline.lisp#L8 -[32dc]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/telegram-call.lisp#L1 -[07ff]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L1 -[341d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L22 -[162d]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L23 -[e0e1]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L25 -[de2f]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L27 -[0526]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L31 -[5942]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/update.lisp#L73 -[93b3]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/utils.lisp#L1 -[d4b4]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/utils.lisp#L17 -[cbd1]: https://github.com/40ants/cl-telegram-bot/blob/f7c9e6b91d5639a678f04173c8ac9cdd40ec1d8e/src/utils.lisp#L24 +[a0ce]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L1 +[be8b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L19 +[a9f4]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L20 +[9396]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L24 +[b072]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L29 +[d193]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L33 +[7244]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L37 +[da65]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L42 +[6bea]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L47 +[4509]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/bot.lisp#L55 +[cd8b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L1 +[4364]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L27 +[fd4a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L28 +[1490]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L31 +[a11d]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L34 +[4fe4]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L39 +[5d19]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L46 +[349a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/callback.lisp#L76 +[91f1]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L1 +[1333]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L111 +[27bb]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L115 +[b3e7]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L116 +[cca3]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L118 +[1ddb]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L120 +[ac23]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L122 +[9175]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L124 +[a7be]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L127 +[fdac]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L157 +[8f95]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L163 +[3edf]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L167 +[227d]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L171 +[d010]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L181 +[fa29]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L194 +[b678]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L198 +[af8d]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L202 +[9daf]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L206 +[d819]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L210 +[2115]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L214 +[3555]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L218 +[be17]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L222 +[c38a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L226 +[9a80]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L230 +[46c1]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L234 +[87d3]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L238 +[855e]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L54 +[8c57]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L55 +[4c0b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L57 +[716f]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L59 +[723f]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L61 +[3c4f]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L63 +[a326]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L83 +[7322]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L84 +[8b8b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L86 +[65f1]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L88 +[ba51]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/chat.lisp#L90 +[f327]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/core.lisp#L1 +[10f0]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/core.lisp#L37 +[a365]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/core.lisp#L72 +[b4da]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/command.lisp#L1 +[62b9]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/command.lisp#L36 +[3668]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/command.lisp#L37 +[5c1f]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/command.lisp#L40 +[8619]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/command.lisp#L63 +[f674]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/core.lisp#L1 +[59bf]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/core.lisp#L23 +[874c]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/entities/core.lisp#L36 +[a4ec]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L1 +[7ae0]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L23 +[bc81]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L24 +[cc59]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L31 +[4c62]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L32 +[d441]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L40 +[1293]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L41 +[3d88]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L46 +[4efb]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L47 +[4c4e]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L52 +[662b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L62 +[9865]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L67 +[48eb]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/inline-keyboard.lisp#L73 +[30c4]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/markup.lisp#L1 +[5956]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/markup.lisp#L7 +[8976]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L1 +[8101]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L101 +[966a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L105 +[b31c]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L109 +[d05a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L112 +[90fe]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L116 +[dbcc]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L118 +[386a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L122 +[561a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L126 +[1b71]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L148 +[7efa]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L149 +[722a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L155 +[b0ba]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L156 +[19dc]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L161 +[80e8]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L167 +[9560]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L168 +[0d27]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L173 +[14c1]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L174 +[7089]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L179 +[7abc]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L186 +[23b7]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L191 +[b814]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L196 +[2f7d]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L202 +[91fb]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L204 +[6155]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L205 +[67d0]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L210 +[c017]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L216 +[80d3]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L218 +[cf60]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L220 +[1ed9]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L222 +[4140]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L224 +[0955]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L227 +[40ce]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L228 +[4e01]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L232 +[1c7e]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L236 +[c695]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L240 +[6ae3]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L257 +[859b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L258 +[fb99]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L270 +[adb6]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L272 +[8971]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L274 +[fc2e]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L276 +[9d8e]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L277 +[a7dc]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L287 +[c4d1]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L289 +[2664]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L291 +[f363]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L293 +[cf83]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L296 +[e514]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L297 +[33af]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L307 +[ab63]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L336 +[dabd]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L355 +[42d6]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L415 +[8be4]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L458 +[27cb]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L501 +[d99d]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L544 +[f4a9]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L567 +[47c6]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L610 +[6f83]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L653 +[fe2c]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L711 +[5695]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L755 +[c070]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L762 +[f658]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L798 +[95dd]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L805 +[d7db]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L98 +[2212]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/message.lisp#L99 +[f220]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/network.lisp#L1 +[5070]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/network.lisp#L19 +[7d33]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/network.lisp#L22 +[579b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/network.lisp#L29 +[91c3]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/pipeline.lisp#L1 +[f88b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/pipeline.lisp#L8 +[4a84]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response-processing.lisp#L1 +[25bf]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response-processing.lisp#L12 +[4559]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response-processing.lisp#L16 +[3476]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response-processing.lisp#L8 +[c9b7]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L1 +[4218]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L110 +[6554]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L124 +[da69]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L31 +[f7f8]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L32 +[c566]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L37 +[6a83]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L38 +[5c41]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L42 +[18d5]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L46 +[dda9]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L50 +[e4f8]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L54 +[3134]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L55 +[f39d]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L61 +[0fff]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/response.lisp#L96 +[e6ee]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L1 +[209e]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L25 +[645c]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L26 +[83b1]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L28 +[947a]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L30 +[ddc3]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L38 +[a390]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/update.lisp#L97 +[276b]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/utils.lisp#L1 +[4225]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/utils.lisp#L17 +[9d84]: https://github.com/40ants/cl-telegram-bot/blob/34362851f9d29da514b0dd7c39a3a4478fec3fc9/src/utils.lisp#L24 [5798]: https://github.com/40ants/cl-telegram-bot/issues [b588]: https://github.com/sovietspaceship [891d]: https://github.com/svetlyak40wt @@ -1314,6 +1704,7 @@ And data is a plist with data, describing the entity. [5186]: https://quickdocs.org/kebab [7f8b]: https://quickdocs.org/log4cl [c41d]: https://quickdocs.org/serapeum +[ef7f]: https://quickdocs.org/str [fc0e]: https://quickdocs.org/trivial-backtrace * * *