{"id":18987298,"url":"https://github.com/cabelitos/pinata-libre","last_synced_at":"2026-05-15T20:03:28.230Z","repository":{"id":151119933,"uuid":"322733458","full_name":"cabelitos/pinata-libre","owner":"cabelitos","description":null,"archived":false,"fork":false,"pushed_at":"2021-01-24T22:48:08.000Z","size":6690,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-31T06:26:53.557Z","etag":null,"topics":["bot","emoji","leaderboard","slack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/cabelitos.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-19T00:18:44.000Z","updated_at":"2021-01-22T00:16:32.000Z","dependencies_parsed_at":"2023-06-27T01:34:05.698Z","dependency_job_id":null,"html_url":"https://github.com/cabelitos/pinata-libre","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cabelitos/pinata-libre","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabelitos%2Fpinata-libre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabelitos%2Fpinata-libre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabelitos%2Fpinata-libre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabelitos%2Fpinata-libre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cabelitos","download_url":"https://codeload.github.com/cabelitos/pinata-libre/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cabelitos%2Fpinata-libre/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33077956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bot","emoji","leaderboard","slack"],"created_at":"2024-11-08T16:38:54.562Z","updated_at":"2026-05-15T20:03:28.194Z","avatar_url":"https://github.com/cabelitos.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Piñata Libre ![pinata](./icon/pinatax64.png)\n\nThis project is a clone of [HeyTaco](https://www.heytaco.chat/) slack app, but open and free.\n\n## Features\n\n* No awards limits per day\n* Leaderboards.\n* Bot can join multiple channels.\n* Unified leaderboard for every channel.\n* Supports any emoji (as long that it was added before. See _Bot commands_).\n* Emoji reactions counts as awards.\n* Awards to a slack group will be distributed to all users of that group.\n\n## Distributing awards\n\nIn order to award an award to someone, just tag the person and put\nan emoji in the message that the bot will add it to the leaderboard.\n(Remember that the bot __must__ be present in the channel).\n\n## Bot commands\n\n* @[botname] leaderboard: Show the current leaderboard on the channel\n* @[botname] add-emoji :emojiCode: : adds an emoji(s) to the allowed list. It can be provided one or multiple emojis in the same command.\nExample:\n```\n@PinataLibre add-emoji :taco: :new_moon_with_face:\n```\n\n## Enabling the Bot\n\n* Visit https://api.slack.com/apps and click on the \"Create new App button\" and choose the name/workspace\n* Open Interactivity \u0026 Shortcuts set it \"on\" the the endpoint URL and click on \"Save Changes\".\n* Open Event Subscriptions set it to \"on\", set the URL endpoint and add subscribe to the following bot events: `app_home_opened`,  `app_mention`, `member_joined_channel`, `message.channels`, `reaction_added`, `reaction_removed`. After this click on save changes.\n* Open OAuth \u0026 Permissions configure the Redirect URLs, click on save URLS and add the following scopes: `users.profile:read`, `groups:read`, `chat:write`, `channels:read`.\n* Open App Home and enable `Home Tab`\n* You're good to go.\n\u003e More info at: https://slack.dev/node-slack-sdk/tutorials/local-development\n\n## Running\n\nThis project uses sqlite to store all data and no database configuration is needed.\n```sh\nyarn install \u0026\u0026 cp .env.example .env\n```\n\nOpen the `.env` file and change the contents of the variables: `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`, `SLACK_SIGN_SECRET` and `SLACK_STORE_SECRET`\n\u003e Tip: The variable `SLACK_STORE_SECRET` can have any value that you want and all other variables are obtained on the Slack app page under the `Basic Information` menu.\n\nAfter the env is configure one should start `ngrok` that will expose your computer to the Internet, this is needed since Slack sends events\nvia Webhooks and your computer must be accessible to the outside world (Keep in mind that by default ngrok will point to `http://localhost:3000`).\n```sh\nyarn start-ngrok\n```\n\nOnce ngrok is running, you should to the slack app page and visit the `Interactive \u0026 Shortcuts` menu, enabled it and put the URL on the `Request URL` input:\n```\nhttps://whatever-url-that-ngrok-provided/slack/interactions\n```\n\nThen you should visit the `Event subscription` menu, enabled it and put the URL and put the URL on the `Request URL` input:\n```\nhttps://whatever-url-that-ngrok-provided/slack/events\n```\n\nAnd the last one is OAuth \u0026 Permissions, under `Redirect URLs` put the variable\n```\nhttps://whatever-url-that-ngrok-provided/slack/oauth_redirect\n```\n\u003e Tip: Everytime you restart ngrok you __MUST__ redo all these steps, since ngrok always provide new URLs.\n\nNow that everything is set-up, run:\n```sh\nyarn start\n```\n\nTo install the app on your workspace visit http://localhost:3000/install (keep in mind that `port` in the URL shoudl reflect the `SERVER_PORT` env variable).\n\nYou're ready\n\n## Bot in action\n\n![bot-demo](./demo/demo.gif)\n\n## TODO, bugs and new features\n\nPlease visit [the issues page](https://github.com/cabelitos/pinata-libre/issues)\n## Credits\n\nPiñata icon provided by [Freepik](https://www.flaticon.com/br/autores/freepik) from [Flaticon](https://www.flaticon.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcabelitos%2Fpinata-libre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcabelitos%2Fpinata-libre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcabelitos%2Fpinata-libre/lists"}