{"id":21033158,"url":"https://github.com/josephuspaye/memelord","last_synced_at":"2025-04-12T13:40:57.042Z","repository":{"id":55538771,"uuid":"293555313","full_name":"JosephusPaye/memelord","owner":"JosephusPaye","description":"A Slack bot to automatically tally up reactions to posts in your meme channel and award a winner!","archived":false,"fork":false,"pushed_at":"2024-02-25T12:47:43.000Z","size":363,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T08:14:03.603Z","etag":null,"topics":["createweekly","memes","slack","slack-bot"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/JosephusPaye.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-09-07T14:46:29.000Z","updated_at":"2024-07-03T23:22:51.000Z","dependencies_parsed_at":"2024-11-19T12:52:26.494Z","dependency_job_id":"ab73c211-eafe-44c9-bc31-f91f81a48fd8","html_url":"https://github.com/JosephusPaye/memelord","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/JosephusPaye%2Fmemelord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosephusPaye%2Fmemelord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosephusPaye%2Fmemelord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JosephusPaye%2Fmemelord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JosephusPaye","download_url":"https://codeload.github.com/JosephusPaye/memelord/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248574333,"owners_count":21126994,"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":["createweekly","memes","slack","slack-bot"],"created_at":"2024-11-19T12:52:18.982Z","updated_at":"2025-04-12T13:40:57.020Z","avatar_url":"https://github.com/JosephusPaye.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meme Lord\n\n\u003ca href=\"https://slack.com/oauth/v2/authorize?client_id=580442220775.1325584195287\u0026scope=channels:history,chat:write,commands,incoming-webhook,reactions:read\u0026user_scope=\"\u003e\u003cimg alt=\"Add to Slack\" height=\"40\" width=\"139\" src=\"https://platform.slack-edge.com/img/add_to_slack.png\" srcSet=\"https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x\" /\u003e\u003c/a\u003e\n\n\u003cimg src=\"./memelord.png\" alt=\"Meme Lord icon\" width=\"112\" height=\"112\" align=\"left\" style=\"margin-right: 24px\" /\u003e\n\nMeme Lord is a Slack bot that can be used to automatically tally up reactions to posts in your meme channel and award a winner! It makes a great companion when doing meme reviews.\n\nThis project is part of [#CreateWeekly](https://twitter.com/JosephusPaye/status/1214853295023411200), my attempt to create something new publicly every week in 2020.\n\n## Features\n\n-   Create dividers to separate group of posts (for a weekly meme review for example)\n-   Automatically tally up and sort unique user reactions to each post\n-   Award up to three winners\n-   View a leaderboard of previous winners\n\n## How to install\n\n\u003ca href=\"https://slack.com/oauth/v2/authorize?client_id=580442220775.1325584195287\u0026scope=channels:history,chat:write,commands,incoming-webhook,reactions:read\u0026user_scope=\"\u003e\u003cimg alt=\"Add to Slack\" height=\"40\" width=\"139\" src=\"https://platform.slack-edge.com/img/add_to_slack.png\" srcSet=\"https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x\" /\u003e\u003c/a\u003e\n\n-   Click the button above to install Meme Lord into your Slack workspace. During installation, give the app permission to access your meme channel (e.g. _#random_). The app should appear in the sidebar of your Slack workspace after successful installation.\n-   Go to your meme channel on Slack and invite Meme Lord by typing `/invite @memelord` and confirming\n-   You are now ready to use Meme Lord. See the commands below for how to use.\n\n## Commands\n\n### `/divide`\n\nCreate a divider for a new set of posts. This divider will be used when you run `/tally` without an argument.\n\n### `/tally`\n\nTally reactions to posts since the last divider, or if specified, the given start and end messages.\n\n#### Format\n\n-   `/tally` - counts all messages since the last divider\n-   `/tally [start message]` - counts all messages since the given message link\n-   `/tally [start message] [end message]` - counts all messages between the given message links\n\n#### Arguments\n\n-   `[start message]` - the link of a message to use as start divider. If specified, counts all messages since that message (excluding the message).\n-   `[end message]` - the link of a message to use as end divider. If specified in addition to `[start message]`, counts all messages between the start and end messages (excluding them).\n\n### `/award`\n\nAward one or more users as winners, and add them to the leaderboard. Can automatically pick winners for first, second, and third place based on unique reaction count.\n\n#### Format\n\n-   `/award` - automatically picks winners by tallying messages since the last divider.\n-   `/award [start message]` - automatically picks winners by tallying messages since the given message link.\n-   `/award [start message] [end message]` - automatically picks winners by tallying messages between the given message links.\n-   `/award [@first] [@second] [@third]` - manually specify winners by user name. See below for syntax.\n\n#### Manual award syntax\n\n-   `\u003c@first\u003e` (required) - the first place winner or winners. Up to three first place winners may be specified by separating with a comma: `@firstA,@firstB,@firstC`.\n-   `[@second]` - the second place winner or winners. Up to three second place winners may be specified in the same manner as first place.\n-   `[@third]` - the third place winner or winners. Up to three third place winners may be specified in the same manner as first and second places.\n\n### `/leaderboard`\n\nShow the leaderboard of previous winners.\n\n## Privacy\n\nIf you use the Meme Lord app from the Slack directory, the following details are sent to and stored on our servers. They are necessary to run the app.\n\n-   The name and identifier of the Slack workspace\n-   The name and identifier of the channel the app was installed into, as well as the app's secret access token\n-   The user identifier of the app in your workspace\n-   The user identifiers (not names) of winners and the user running the command when you run `/award`. These are stored for the leaderboard.\n-   The message identifier of the last divider when you run `/divide`\n\nYou can run the app on your own server (requires Node.js and MongoDB) if you don't wish to expose the above data. See below for how to do so.\n\n## Self hosting\n\nYou can make changes and host the app on your own server. You'll need Git, Node.js, and MongoDB on the server.\n\n-   [Create](https://api.slack.com/apps/new) an app on Slack\n    -   On the **Basic Information** page of the app's settings, under **Add features and functionality**, enable incoming webhooks, slash commands and bots\n    -   On the **OAuth \u0026amp; Permissions** page, add the following scopes: `app_mentions:read`, `channels:history`, `chat:write`, `commands`, `incoming-webhook`, `reactions:read`\n    -   Add `https://\u003capp url on your server\u003e/install/auth` as the OAuth redirect URL\n    -   On the **Slash Commands** page, add the `/divide`, `/tally`, `/award`, and `/leaderboard` commands, and set them to post to `https://\u003capp url on your server\u003e/api/messages`\n-   Clone this repository to your server and run `yarn` to install dependencies\n-   Copy the `.env.example` file to `.env` and fill out the credentials from Slack\n-   You may also set the `RESTRICT_AWARD_TO` variable to restrict who can run the `/award` command. See `.env.example` for an example.\n-   Build the source code by running `yarn build`\n-   Ensure that the Mongo daemon is running\n-   Start the app by running `yarn start`. The app will listen on port 3000. Expose this port using a webserver proxy if you need to.\n-   Install the app into your workspace by going to `https://\u003capp url on your server\u003e/install`\n-   Go to your meme channel on Slack and invite Meme Lord by typing `/invite @memelord`\n-   You are now ready to use Meme Lord. See the commands above for how to use.\n\n## Licence\n\n[MIT](LICENCE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosephuspaye%2Fmemelord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosephuspaye%2Fmemelord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosephuspaye%2Fmemelord/lists"}