{"id":29079459,"url":"https://github.com/thedod/pollski","last_synced_at":"2026-04-28T10:36:52.269Z","repository":{"id":137830134,"uuid":"93581290","full_name":"thedod/pollski","owner":"thedod","description":"A Glitch Mastodon pollster bot","archived":false,"fork":false,"pushed_at":"2017-06-07T09:39:18.000Z","size":24,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-10T12:08:01.642Z","etag":null,"topics":["bot","glitch","mastodon","polls","vote"],"latest_commit_sha":null,"homepage":"https://botsin.space/@pollski","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thedod.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2017-06-07T01:57:24.000Z","updated_at":"2024-05-31T02:32:17.000Z","dependencies_parsed_at":"2023-05-04T20:15:53.234Z","dependency_job_id":null,"html_url":"https://github.com/thedod/pollski","commit_stats":{"total_commits":4,"total_committers":2,"mean_commits":2.0,"dds":0.5,"last_synced_commit":"ed10e4ec84ce6753ff6434484f0490e561884c12"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thedod/pollski","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedod%2Fpollski","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedod%2Fpollski/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedod%2Fpollski/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedod%2Fpollski/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thedod","download_url":"https://codeload.github.com/thedod/pollski/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thedod%2Fpollski/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261110584,"owners_count":23111061,"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":["bot","glitch","mastodon","polls","vote"],"created_at":"2025-06-27T17:05:58.815Z","updated_at":"2026-04-28T10:36:47.226Z","avatar_url":"https://github.com/thedod.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Pollski: a Mastodon pollster bot\n\n![logo](https://cdn.glitch.com/f0a98492-b168-4c48-9546-fc6646c830fb%2Fpollski.png?1496420994865)\n\nThis app controls the [Pollski](https://botsin.space/@pollski) mastodon bot.\n\nTo interact with the bot (vote, create polls, etc.), you toot\u003csup\u003e[1]\u003c/sup\u003e to\n`@pollski@botsin.space` from a\n[mastodon](https://en.wikipedia.org/wiki/Mastodon_(software))\naccount\u003csup\u003e[2]\u003c/sup\u003e,\nor — even simpler — reply to its toots.\n\n**Note**: When tooting to the bot, it is advised to set the toot's `visibility` to `direct` (otherwise, what you tell the bot becomes public).\n\n![visibilty: direct](https://cdn.glitch.com/f0a98492-b168-4c48-9546-fc6646c830fb%2Fvisibility-direct.jpg?1496750777298)\n\nIf you reply to a toot *by* the bot (except for *recommendation* toots — see below), `direct` is the default, since the bot always toots directly (except for recommendations, of course).\n\n### Corresponding with the bot\n\nThe only public toots in the bot's [timeline](https://botsin.space/@pollski/) are *recommendations* ([example](https://botsin.space/@pollski/202074)).\n\nIf you respond to such a toot with an empty toot (remember to set the `visibility` to `direct`):\n\n* If you haven't voted yet, you'll get in reply a toot like\n  ```\n  Why did the chicken cross the road?\n  (Reply with a number between 1 and 3)\n  1) To get to the other side.\n  2) The road tried to cross the chicken, but the chicken was faster.\n  3) Other...\n  ```\n  to which you can reply with 1, 2, or 3\n  (no need to set `visibility` to `direct`).\n  In return, the bot will show you the current poll results\n  (see example below).\n  \n* If you've already voted, you'll get poll results that look like this:\n  ```\n  Current results for WhyChicken by thedod@weho.st (5 votes):\n  Why did the chicken cross the road?\n\n  1) 0: To get to the other side.\n  2) 4 (80%): The road tried to cross the chicken, but the chicken was faster.\n  3) 1 (20%): Other...\n  ```\n  If you've changed your mind, you can reply to this with some *other* number\n  between 1 and 3, and get the updated poll results in return.\n  \n### Explicit Commands\n\nSo far, we've seen how to interact with a bot by replying to its toots.\nYou can also toot to the bot on your own initiative by using the commands described below (remember to set toot's `visibility` to `direct`).\n\n#### Poll\nExample: `@pollski@botsin.space poll WhyChicken`.\n\nThe robot replies depending on whether you have voted in the `WhyChicken` poll or not:\n\n* If you haven't voted yet, shows the question and choices,\n  and instructs how to vote.\n* Otherwise, shows current poll results.\n\n#### Vote\nExample: `@pollski@botsin.space vote WhyChicken 2`.\n\nYou can vote again if you change your mind, but you only count as a single vote 😉\n\n#### Create\n\nExample:\n\n```\n@pollski@botsin.space create WhyChicken\nWhy did the chicken cross the road?\nTo get to the other side.\nThe road tried to cross the chicken, but the chicken was faster.\nOther...\n```\n\nThe bot replies with the poll's description. In this example:\n\n```\nWhy did the chicken cross the road?\n(Reply with a number between 1 and 3)\n1) To get to the other side.\n2) The road tried to cross the chicken, but the chicken was faster.\n3) Other...\n```\n\n#### Recommend\n\nIn order to easily publicize a poll, you can toot:\n\n```\n@pollski@botsin.space recommend WhyChicken\nIt's a fun poll about https://en.wikipedia.org/wiki/Why_did_the_chicken_cross_the_road%3F\n```\n\nThe bot would then toot something like [this](https://botsin.space/@pollski/202074), and you can boost it to your followers.\n\nNote that you don't have to be the poll's creator in order to recommend it,\nthe poll can have several recommendation, and it's even OK if the\nrecommendation is biased.\nFor example, if you support a specific poll choice you can promote it like this:\n\n```\n@pollski@botsin.space recommend WhyChicken\nShow them chickens we're not amused! vote \"other\"!!!\n```\nif people don't like it, they can create their own recommendations urging\ntheir friends to vote for what they believe is best.\n\n----\n\nWhat if you have a reason to remove your recommendation (for example:\nyou've been told that your toot was incompatible with the server's code\nof conduct)? Read on.\n\n----\n\n#### Untoot\n\nIf, for some reason you want to remove a recommendation of yours,\nthere are 3 ways to do it:\n\n* The easiest is to reply to the recommendation with `untoot`\n  (it's your decision whether you want to set the reply's visibility\n  to `direct` or deliberately have this tiestamped and put\n  on public record).\n  \n* You can copy the recommendation toot's url and toot\n  `@pollski@botsin.space untoot https://botsin.space/users/pollski/updates/XXX`.\n  \n* You can simply toot `@pollski@botsin.space untoot XXX`\n  (where `XXX` is the recommendation's id).\n  \n#### Destroy\n\n`@pollski@botsin.space destroy MyRegretablePoll` would destroy a poll of yours.\n\n### Code of Conduct\n\n* Content of polls and recommendation should adhere to the\n  [botsin.space CoC](https://botsin.space/about/more), especially the\n  [Bots should punch up](https://www.crummy.com/2013/11/27/0)\n  rule.\n\n* If *anyone* manages to convince you should delete a poll or recommendation\n  of yours, please be kind and `destroy`/`untoot` the\n  offending poll/recommendation.\n  \n* If you believe the content of a poll or a recommendation is incompatible\n  with the code of conduct, *pretty please* try to convince the author of the\n  offending item to delete it (both polls and recommendations give credit\n  to the author) before involving me.\n  \n* As a last resort, you can [contact me](https://thedod.github.io/#Contact),\n  but pretty please try to resolve this between yourselves. I've added the\n  `destroy` and `untoot` commands especially with such cases in mind.\n\n### Privacy considerations\n\nIf you create a poll or recommend one, you get credited by the bot in related toots (without the `@` prefix, so that it wouldn't become a mastodon mention).\n\nThe bot does its best to keep private everything else: how you've voted, *whether* you've voted, or whether you've even *viewed* a poll.\n\nIt doesn't save the account names of voters (instead, it saves a keyed hash), but still — the bot's admin can login to Mastodon as the bot and view notifications (e.g. a vote) and outgoing direct statuses (e.g. confirmation of a vote). What the bot does in order to protect from accidental disclosures to a well meaning admin is:\n\n* Notifications are removed as soon as they're processed\n  (i.e. within 1-2 minutes).\n* Outgoing direct statuses are removed after 24 hours\n  (bot should give the recipients a reasonable amount of time to read them).\n* All direct statuses have a content warning, so that a well meaning admin\n  can avoid being accidentally exposed to the content of statuses during their\n  24h \"life span\".\n\nThis is not perfect, but AFAIK it's way better than any known alternative out there.\n\n## Create polls, vote, and be merry.\n\n##### Comments and ideas are [welcome](https://thedod.github.io/#Contact).\n\n----\n\n\u003csup\u003e[1]\u003c/sup\u003e \"Toot\" is Mastodon's equivalent to Twitter's \"tweet\".\n\n\u003csup\u003e[2]\u003c/sup\u003e If you want to open\na mastodon account and have no idea where, here's\n[a handy directory](https://instances.mastodon.xyz/).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedod%2Fpollski","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthedod%2Fpollski","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthedod%2Fpollski/lists"}