[]clojars []cljdoc-link
A Clojure library for interacting with the Telegram Bot API.
Get started using the telegrambot-lib.
Leiningen/Boot Project file
[telegrambot-lib "0.1.1"]
In the REPL
(require '[telegrambot-lib.core :as tbot])
In your application
(ns my-app.core
(:require [telegrambot-lib.core :as tbot]))
Pre-Reqs:
The bot api auth token can be given to the bot instance by either:
This method looks for "bot-token" or "BOT_TOKEN" from the environment.
(def mybot (tbot/create))
This method requires passing the token as an argument at creation time.
(def mybot (tbot/create my-token))
Verify your bot instance is working with the "get-me" function.
(tbot/get-me mybot)
;; returns something like this
{:ok true,
:result
{:id 123,
:is_bot true,
:first_name "mybot",
:username "my_roboto",
:can_join_groups true,
:can_read_all_group_messages false,
:supports_inline_queries false}}
Current ClojureDocs documentation is here.
All of the Telegram Bot API functions in this library are imported into the telegrambot-lib.core namespace.
This makes them available by their non-namespaced names and are all listed within the "import-vars" function (in telegram-lib.core).
Additionally, there is a generic 'call' function that may be used to send a request to any endpoint if the function does not exist yet.
;; generic call example
(tbot/call mybot "getMe")
;; generic call example with content
(tbot/call mybot "sendMessage" {:chat_id 789 :text "Hello Bot World!"})
TLDR: Send a map, get a map.
Currently, if the functions require content passed, it is accepted in the form of a Clojure hash map.
This may change in the future with more explicit required/optional fields when calling the functions.
For now, refer to the Telegram Bot API Documentation for which fields are required per API resource.
Example:
(tbot/send-message mybot {:chat_id 789 :text "Hello Bot World!"})
Responses from the API are parsed back into a Clojure hash map.
Example:
{:ok true,
:result
{:message_id 7,
:from {:id 123, :is_bot true, :first_name "mybot", :username "my_roboto"},
:chat {:id 789, :first_name "Bill", :last_name "Howe", :username "myusername", :type "private"},
:date 1602717364,
:text "Hello Bot World!"}}
(tbot/get-updates mybot)
;; response
{:ok true, :result [{:update_id 761420707, :message {:message_id 9, :from {:id 789, :is_bot false, :first_name "Bill", :last_name "Howe", :username "myusername", :language_code "en"}, :chat {:id 789, :first_name "Bill", :last_name "Howe", :username "myusername", :type "private"}, :date 1602815917, :text "oh hi"}}]}
(tbot/send-message mybot {:chat_id 789 :text "oh hi yourself."})
;; response
{:ok true, :result {:message_id 10, :from {:id 123, :is_bot true, :first_name "mybot", :username "my_roboto"}, :chat {:id 789, :first_name "Bill", :last_name "Howe", :username "myusername", :type "private"}, :date 1602816282, :text "oh hi yourself."}}
Copyright © 2020 Bill Howe
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.
This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.
Can you improve this documentation? These fine people already did:
wdhowe & Bill HoweEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close