{"id":19445673,"url":"https://github.com/s5bug/discocat","last_synced_at":"2025-09-13T15:05:38.470Z","repository":{"id":82075605,"uuid":"185120981","full_name":"s5bug/discocat","owner":"s5bug","description":"Mirror of https://gitlab.com/dscala/discocat","archived":false,"fork":false,"pushed_at":"2020-04-02T03:18:21.000Z","size":57,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-25T08:37:34.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/s5bug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2019-05-06T03:59:23.000Z","updated_at":"2020-04-02T03:18:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"bd0c3a6c-4229-4819-848b-fc491ef586bb","html_url":"https://github.com/s5bug/discocat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/s5bug/discocat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s5bug%2Fdiscocat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s5bug%2Fdiscocat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s5bug%2Fdiscocat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s5bug%2Fdiscocat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s5bug","download_url":"https://codeload.github.com/s5bug/discocat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s5bug%2Fdiscocat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274981876,"owners_count":25385328,"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","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-10T16:11:28.764Z","updated_at":"2025-09-13T15:05:38.424Z","avatar_url":"https://github.com/s5bug.png","language":"Scala","readme":"[![](https://img.shields.io/codacy/grade/8a52090e000f44d0b99f8fcdf80b6cff.svg?style=flat-square)](https://www.codacy.com/app/srn/discocat?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=sorenbug/discocat\u0026amp;utm_campaign=Badge_Grade)\n[![](https://img.shields.io/sonar/https/sonarcloud.io/sorenbug_discocat/violations.svg?format=long\u0026style=flat-square)](https://sonarcloud.io/dashboard?id=sorenbug_discocat)\n[![](https://img.shields.io/librariesio/github/sorenbug/discocat.svg?style=flat-square)](https://libraries.io/github/sorenbug/discocat)\n[![](https://img.shields.io/github/license/sorenbug/discocat.svg?style=flat-square)](https://www.gnu.org/licenses/lgpl-3.0.en.html)\n[![](https://img.shields.io/discord/390751088829005826.svg?style=flat-square)](https://discord.gg/TQZ5Brw)\n\n# discocat\n\nDiscocat is a Scala library that provides access to Discord's API built around [cats](https://typelevel.org/cats/) and [fs2](https://fs2.io/). It is under the LGPL v3.\n\n## What this license means for you\n\nIt means:\n  - When making changes to this library, they have to be made completely public.\n  - When making a bot, either:\n    - The bot's source must be made completely public.\n    - The bot must be able to display its usage of this library.\n  \n## Examples\n\nAll examples are written in terms of `IOApp` and `program[F[_]]`. These implicits are needed:\n  - `AsynchronousChannelGroup`\n  - `ConcurrentEffect[F]`\n  - `ContextShift[F]`\n  - `Timer[F]`\n\n### Ping\n\nA simple `!ping` -\u003e `Pong` bot:\n\n```scala\nfor {\n  t \u003c- Sync[F].delay(StdIn.readLine(\"Token? \"))\n  c \u003c- Client[F](t)\n  l \u003c- c\n    .login(\n      EventHandler[F] {\n        case MessageCreate(_, m) =\u003e\n          if (m.content == \"!ping\") {\n            c.request.post(s\"channels/${m.channelId}/messages\", Nil, Map(\"content\" -\u003e \"Pong!\")).drain\n          } else {\n            Stream.empty\n          }\n      }\n        :: Defaults.defaultEventHandler[F]\n        :: Nil\n    )\n    .compile\n    .drain\n} yield l\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs5bug%2Fdiscocat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs5bug%2Fdiscocat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs5bug%2Fdiscocat/lists"}