{"id":19721298,"url":"https://github.com/meinside/clogram","last_synced_at":"2025-04-29T21:31:16.633Z","repository":{"id":37663948,"uuid":"226771003","full_name":"meinside/clogram","owner":"meinside","description":"A Telegram Bot Library for Clojure","archived":false,"fork":false,"pushed_at":"2025-04-14T07:57:26.000Z","size":188,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-14T08:44:40.825Z","etag":null,"topics":["clojure","telegram-bot"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meinside.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-12-09T02:49:54.000Z","updated_at":"2025-04-14T07:57:30.000Z","dependencies_parsed_at":"2024-01-03T08:37:59.979Z","dependency_job_id":"c54ee09f-c2e6-4091-9c60-cd3eec5f12db","html_url":"https://github.com/meinside/clogram","commit_stats":{"total_commits":71,"total_committers":3,"mean_commits":"23.666666666666668","dds":"0.14084507042253525","last_synced_commit":"a2b3157fc3f3b4213f473fd95dda2fd126eaa5c2"},"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meinside%2Fclogram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meinside%2Fclogram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meinside%2Fclogram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meinside%2Fclogram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meinside","download_url":"https://codeload.github.com/meinside/clogram/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251585795,"owners_count":21613279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","telegram-bot"],"created_at":"2024-11-11T23:13:56.469Z","updated_at":"2025-04-29T21:31:11.615Z","avatar_url":"https://github.com/meinside.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# clogram\n\n[![cljdoc badge](https://cljdoc.org/badge/dev.meinside/clogram)](https://cljdoc.org/d/dev.meinside/clogram/CURRENT)\n[![Clojars Project](https://img.shields.io/clojars/v/dev.meinside/clogram.svg)](https://clojars.org/dev.meinside/clogram)\n\nA Clojure(Script) library for Telegram Bot API.\n\n## Installation\n\nAdd `[dev.meinside/clogram \"0.30.0\"]` to the dependency of your project.clj file.\n\n## Usage\n\n### Interactively\n\n```clojure\n(require '[meinside.clogram :as cg])\n\n;; generate your bot token with this guide: https://core.telegram.org/bots#3-how-do-i-create-a-bot\n(def token \"0123456789:abcdefghijklmnopqrstuvwxyz\")\n\n;; create a new bot\n(def bot (cg/new-bot token\n                     :verbose? true))\n\n;; get updates from your bot\n(cg/get-update bot)\n\n;; send 'typing...' to chat id: 123456\n(cg/send-chat-action bot 123456 :typing)\n\n;; send a message to chat id: 123456\n(cg/send-message bot 123456 \"this is a message from bot\")\n```\n\n### Long-Polling\n\n#### Sample Application (Echo)\n\n```clojure\n;; clogram-sample/src/core.clj\n;;\n;; run with: $ lein run -m clogram-sample.core\n\n(ns clogram-sample.core\n  (:gen-class)\n  (:require [meinside.clogram :as cg]))\n\n(def token \"0123456789:abcdefghijklmnopqrstuvwxyz\")\n(def interval 1)\n(def verbose? false)\n;(def verbose? true)\n(def my-bot (cg/new-bot token :verbose? verbose?))\n\n(defn echo\n  \"echo function\"\n  [bot update]\n  (println \"\u003e\u003e\u003e received update:\" update)\n\n  (let [chat-id (get-in update [:message :chat :id])\n        reply-to (get-in update [:message :message-id])\n        text (get-in update [:message :text])]\n    ;; 'typing...'\n    (let [result (cg/send-chat-action bot chat-id :typing)]\n      (when (not (:ok result))\n        (println \"*** failed to send chat action:\" (:reason-pharse result))))\n\n    (if (= text \"/terminate\")\n      ;; process /terminate command\n      (do\n        (println \"\u003e\u003e\u003e received: /terminate\")\n\n        (cg/stop-polling-updates bot)) ;; stop polling\n\n      ;; or other texts\n      ;; and reply to the received message\n      (let [echoed-text (str \"echo: \" text)\n            result (cg/send-message bot chat-id echoed-text\n                     :reply-parameters {\"message_id\" reply-to})]\n        (when (not (:ok result))\n          (println \"*** failed to send message:\" (:reason-phrase result)))))))\n\n(defn -main\n  \"main function\"\n  [\u0026 _]\n  (println \"\u003e\u003e\u003e launching application...\")\n\n  ;; add shutdown hook\n  (.addShutdownHook (Runtime/getRuntime)\n                    (Thread. #(do\n                                (println \"\u003e\u003e\u003e terminating application...\")\n\n                                (cg/stop-polling-updates my-bot)))) ;; stop polling\n\n  ;; busy-wait for polling\n  (cg/poll-updates my-bot interval echo))\n\n```\n\n### Using Webhook\n\nTODO - Add guides here.\n\n## Todo\n\n- [x] Add functions for long-polling updates.\n- [ ] (WIP) Add tests.\n- [ ] Add functions for webhook.\n\n## License\n\nMIT\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeinside%2Fclogram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeinside%2Fclogram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeinside%2Fclogram/lists"}