{"id":13509638,"url":"https://github.com/ccsteam/ex-telegram-client","last_synced_at":"2025-10-21T15:03:11.054Z","repository":{"id":62430423,"uuid":"67125528","full_name":"ccsteam/ex-telegram-client","owner":"ccsteam","description":"An Elixir wrapper which communicates with the Telegram-CLI.","archived":false,"fork":false,"pushed_at":"2016-10-04T09:33:47.000Z","size":43,"stargazers_count":14,"open_issues_count":0,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T17:18:03.044Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccsteam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-01T11:30:31.000Z","updated_at":"2023-01-28T06:15:20.000Z","dependencies_parsed_at":"2022-11-01T20:20:59.518Z","dependency_job_id":null,"html_url":"https://github.com/ccsteam/ex-telegram-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsteam%2Fex-telegram-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsteam%2Fex-telegram-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsteam%2Fex-telegram-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccsteam%2Fex-telegram-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccsteam","download_url":"https://codeload.github.com/ccsteam/ex-telegram-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246324202,"owners_count":20759093,"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":[],"created_at":"2024-08-01T02:01:10.778Z","updated_at":"2025-10-21T15:03:10.936Z","avatar_url":"https://github.com/ccsteam.png","language":"Elixir","funding_links":[],"categories":["Third Party APIs"],"sub_categories":[],"readme":"# Telegram Client\n\nA Elixir wrapper that communicates with the Telegram-CLI.\n\n## Installation\n\nIf [available in Hex](https://hex.pm/docs/publish), the package can be installed as:\n\n* Add `tg_client` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [{:tg_client, \"~\u003e 0.3.0\"]\nend\n```\n\n* Ensure `tg_client` is started before your application:\n\n```elixir\ndef application do\n  [applications: [:tg_client]]\nend\n```\n\n## Usage\n\n* Write your own EventHandler module.\n\n```elixir\ndefmodule EventHandler do\n  use GenEvent\n  require Logger\n\n  def handle_event(event, state) do\n    Logger.debug \"Unknown Event: \" \u003c\u003e inspect(event)\n    {:ok, state}\n  end\nend\n```\n\n* Set config.\n\n```elixir\nconfig :tg_client,\n  daemon: \"/usr/local/telegram-cli\",\n  key: \"/usr/local/share/telegram-cli/tg-server.pub\",\n  session_env_path: \"/tmp/telegram-cli/sessions\",\n  default_pool_size: 5,\n  default_pool_max_overflow: 10,\n  pool_name: :event_handler,\n  event_handler: {TgClient.Event.Handler, size: 10, max_overflow: 10}\n```\n\n## Authorization\n\n* Start session\n\n```elixir\n{:ok, _pid} = TgClient.Session.start_link(79251008050)\n```\n\n* Start session under Supervisor\n\n```elixir\n{:ok, _pid} = TgClient.start_session(79251008050)\n```\n\n* Connect to CLI\n\n```elixir\n{:ok, :connected} = TgClient.Session.connect(79251008050)\n```\n\n* Check session status\n\n```elixir\n{:ok, status} = TgClient.Session.current_status(79251008050)\n```\n\nwhen status in [:offline, :waiting_for_confirmation, :waiting_for_password, :connected]\n\n* Confirm\n\n```elixir\n:ok = TgClient.Session.confirm(79251008050, 22284)\n```\n\nhas effect only if status is :waiting_for_confirmation\n\n* Put password\n\n```elixir\n:ok = TgClient.Session.put_password(79251008050, \"secret_password\")\n```\n\nhas effect only if status is :waiting_for_password\n\n## Commands\n\nall commands has effect only if status is :connected\n\n* Dialog list\n\n```elixir\n{:ok, response} = TgClient.Session.send_command(79251008050, \"dialog_list\", [])\n```\n\nwhen response is:\n\n```json\n[\n   {\n      \\\"admin\\\":{\n         \\\"id\\\":\\\"$01000000000000000000000000000000\\\",\n         \\\"peer_type\\\":\\\"user\\\",\n         \\\"peer_id\\\":0,\n         \\\"print_name\\\":\\\"user#0\\\"\n      },\n      \\\"id\\\":\\\"$02000000e47cd0010000000000000000\\\",\n      \\\"flags\\\":1,\n      \\\"peer_type\\\":\\\"chat\\\",\n      \\\"peer_id\\\":30440676,\n      \\\"print_name\\\":\\\"йцу\\\",\n      \\\"title\\\":\\\"йцу\\\",\n      \\\"members_num\\\":3\n   },\n   {\n      \\\"id\\\":\\\"$010000005d7c21050ddae73d36d42000\\\",\n      \\\"peer_type\\\":\\\"user\\\",\n      \\\"flags\\\":196609,\n      \\\"peer_id\\\":86080605,\n      \\\"first_name\\\":\\\"Собакин\\\",\n      \\\"print_name\\\":\\\"Собакин_Кот\\\",\n      \\\"when\\\": \\\"2016-08-31 22:45:43\\\",\n      \\\"phone\\\":\\\"7800400300\\\",\n      \\\"last_name\\\":\\\"Кот\\\"\n   }\n]\n```\n\n* Contact list\n\n```elixir\n{:ok, response} = TgClient.Session.send_command(79251008050, \"contact_list\", [])\n```\n\nwhen response is:\n\n```json\n[\n   {\n      \\\"id\\\":\\\"$01000000946c090ddf6ba9457ce8c248\\\",\n      \\\"peer_type\\\":\\\"user\\\",\n      \\\"flags\\\":196609,\n      \\\"peer_id\\\":218721428,\n      \\\"first_name\\\":\\\"Дмитрий\\\",\n      \\\"print_name\\\":\\\"Дмитрий_Негру\\\",\n      \\\"when\\\": \\\"2016-05-20 18:12:40\\\",\n      \\\"phone\\\":\\\"7800400300\\\",\n      \\\"last_name\\\":\\\"Негру\\\"\n   }\n]\n```\n\n* Send message [peer, text]\n\n```elixir\n{:ok, response} = TgClient.Session.send_command(79251008050, \"msg\", [\"$010000001az3av003d8059e845e429e1\", \"hello\"])\n```\n\nwhen response is:\n\n```json\n{\n   \\\"result\\\":\\\"SUCCESS\\\"\n}\n```\n\n* Message history [peer, limit, offset]\n\n```elixir\n{:ok, response} = TgClient.Session.send_command(79251008050, \"history\", [\"$010000001az3av003d8059e845e429e1\", \"5\", \"0\"])\n```\n\nwhen response is:\n\n```json\n[\n   {\n      \\\"text\\\":\\\"hello\\\",\n      \\\"unread\\\":true,\n      \\\"event\\\":\\\"message\\\",\n      \\\"id\\\":\\\"010000001ae3ab00496c0100000000003d8059e845e429e1\\\",\n      \\\"from\\\":{\n         \\\"username\\\":\\\"badrequest\\\",\n         \\\"id\\\":\\\"$010000001ae3ab003d8059e845e429e1\\\",\n         \\\"peer_type\\\":\\\"user\\\",\n         \\\"flags\\\":524289,\n         \\\"peer_id\\\":11264794,\n         \\\"first_name\\\":\\\"Andrew\\\",\n         \\\"print_name\\\":\\\"Andrew_Noskov\\\",\n         \\\"when\\\":\\\"2016-09-01 14:06:33\\\",\n         \\\"phone\\\":\\\"79251008050\\\",\n         \\\"last_name\\\":\\\"Noskov\\\"\n      },\n      \\\"flags\\\":16643,\n      \\\"to\\\":{\n         \\\"username\\\":\\\"badrequest\\\",\n         \\\"id\\\":\\\"$010000001ae3ab003d8059e845e429e1\\\",\n         \\\"peer_type\\\":\\\"user\\\",\n         \\\"flags\\\":524289,\n         \\\"peer_id\\\":11264794,\n         \\\"first_name\\\":\\\"Andrew\\\",\n         \\\"print_name\\\":\\\"Andrew_Noskov\\\",\n         \\\"when\\\":\\\"2016-09-01 14:06:33\\\",\n         \\\"phone\\\":\\\"79251008050\\\",\n         \\\"last_name\\\":\\\"Noskov\\\"\n      },\n      \\\"out\\\":true,\n      \\\"service\\\":false,\n      \\\"date\\\":1472727693\n   }\n]\n```\n\n* Create secret chat [peer]\n\n```elixir\n{:ok, response} = TgClient.Session.send_command(79251008050, \"create_secret_chat\", [\"$010000001az3av003d8059e845e429e1\"])\n```\n\nwhen response is:\n\n```json\n{\n   \\\"flags\\\":1,\n   \\\"print_name\\\":\\\"!_Polya\\\",\n   \\\"id\\\":\\\"$010000001az3av003d8059e845e429e1\\\",\n   \\\"peer_type\\\":\\\"encr_chat\\\",\n   \\\"peer_id\\\":1901915394,\n   \\\"user\\\":{\n      \\\"flags\\\":196609,\n      \\\"id\\\":\\\"$010000001az3av003d8059e845e429e1\\\",\n      \\\"print_name\\\":\\\"Polya\\\",\n      \\\"peer_type\\\":\\\"user\\\",\n      \\\"last_name\\\":\\\"\\\",\n      \\\"peer_id\\\":65370635,\n      \\\"first_name\\\":\\\"Polya\\\",\n      \\\"when\\\":\\\"2016-09-01 13:35:34\\\",\n      \\\"phone\\\":\\\"79251008050\\\"\n   }\n}\n```\n\n## Configuration\n\n* Set config or pass default attributes\n\n```elixir\nconfig :tg_client,\n  daemon: \"/usr/local/telegram-cli\",\n  key: \"/usr/local/share/telegram-cli/tg-server.pub\",\n  session_env_path: \"/tmp/telegram-cli/sessions\",\n  default_pool_size: 5,\n  default_pool_max_overflow: 10,\n  pool_name: :event_handler,\n  event_handler: {TgClient.Event.Handler, size: 10, max_overflow: 10}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccsteam%2Fex-telegram-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccsteam%2Fex-telegram-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccsteam%2Fex-telegram-client/lists"}