{"id":24173382,"url":"https://github.com/fazendaaa/i-m-a-spoiler-bot","last_synced_at":"2025-09-20T17:33:06.170Z","repository":{"id":38233830,"uuid":"142658322","full_name":"Fazendaaa/I-m-a-Spoiler-Bot","owner":"Fazendaaa","description":"A friendly Telegram bot to hide spoilers sent.","archived":false,"fork":false,"pushed_at":"2024-12-04T15:15:24.000Z","size":157048,"stargazers_count":24,"open_issues_count":43,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-04T16:26:28.951Z","etag":null,"topics":["boku-no-hero-academia","bot","spoilers","telegraf","telegram","typescript"],"latest_commit_sha":null,"homepage":"https://fazendaaa.github.io/I-m-a-Spoiler-Bot/","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/Fazendaaa.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-28T07:52:15.000Z","updated_at":"2022-10-02T03:27:52.000Z","dependencies_parsed_at":"2024-12-04T16:33:18.172Z","dependency_job_id":null,"html_url":"https://github.com/Fazendaaa/I-m-a-Spoiler-Bot","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/Fazendaaa%2FI-m-a-Spoiler-Bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fazendaaa%2FI-m-a-Spoiler-Bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fazendaaa%2FI-m-a-Spoiler-Bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fazendaaa%2FI-m-a-Spoiler-Bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fazendaaa","download_url":"https://codeload.github.com/Fazendaaa/I-m-a-Spoiler-Bot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233678687,"owners_count":18712984,"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":["boku-no-hero-academia","bot","spoilers","telegraf","telegram","typescript"],"created_at":"2025-01-13T01:16:14.961Z","updated_at":"2025-09-20T17:32:57.475Z","avatar_url":"https://github.com/Fazendaaa.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/Fazenda","https://www.patreon.com/Fazenda/overview"],"categories":[],"sub_categories":[],"readme":"# I'm a Spoiler Bot\n\n\u003cdiv align = \"center\"\u003e\n\u003cbr\u003e\n\u003cimg src=\"./others/img/logo/logo.png\" height=260\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n[![Say Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg?longCache=true\u0026style=for-the-badge)](https://saythanks.io/to/Fazendaaa)\n\n\n[![English README](https://img.shields.io/badge/Language-EN-blue.svg?longCache=true\u0026style=for-the-badge)](./README.md)\n[![Portuguese README](https://img.shields.io/badge/Linguagem-PT-green.svg?longCache=true\u0026style=for-the-badge)](./documentation/readme/README_PT.md)\n\n[![Build Status](https://img.shields.io/travis/Fazendaaa/I-m-a-Spoiler-Bot.svg?style=flat-square)](https://travis-ci.org/Fazendaaa/I-m-a-Spoiler-Bot)\n[![codecov](https://img.shields.io/codecov/c/github/Fazendaaa/I-m-a-Spoiler-Bot.svg?style=flat-square)](https://codecov.io/gh/Fazendaaa/I-m-a-Spoiler-Bot)\n[![Codacy Badge](https://img.shields.io/codacy/grade/ce230276b4284f47a91e0ab6ef644736.svg?style=flat-square)](https://www.codacy.com/app/Fazendaaa/I-m-a-Spoiler-Bot?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=Fazendaaa/I-m-a-Spoiler-Bot\u0026amp;utm_campaign=Badge_Grade)\n[![Dependencies](https://david-dm.org/Fazendaaa/I-m-a-Spoiler-Bot.svg?style=flat-square)](https://codeclimate.com/github/Fazendaaa/I-m-a-Spoiler-Bot/master/package.json)\n[![Known Vulnerabilities](https://snyk.io/test/github/fazendaaa/podsearch_bot/badge.svg?targetFile=package.json)](https://snyk.io/test/github/fazendaaa/podsearch_bot?targetFile=package.json)\n[![Maintainability](https://api.codeclimate.com/v1/badges/3183be464438842a30b3/maintainability)](https://codeclimate.com/github/Fazendaaa/I-m-a-Spoiler-Bot/maintainability)\n\n\u003c/div\u003e\n\n\u003e A friendly Telegram bot to hide spoilers sent.\n\n## About\nMe and my friends were used to use a bot to send spoilers in the main group of anime discussions, but this bot doesn't works anymore. That's why I've decided to write my own version of this bot so we can continue to send each other messages without disturbing the others group members that haven't read manga chapter or watched the anime episode yet.\n\nYou can see how many spoilers have been sent so far here:\n\n![Spoilers sent](https://img.shields.io/badge/dynamic/json.svg?style=for-the-badge\u0026label=spoilers%20sent\u0026url=https%3A%2F%2Fispoiler.herokuapp.com%2Fstats.json\u0026query=%24.total\u0026colorB=orange)\n\n**note**: all of the spoilers are just stored for one week period!\n\n### Disclaimer\nBy default all the commands are in English, but you can see if the same command is available in your language:\n* [English](./others/locales/en.yaml)\n* [Portuguese](./others/locales/pt.yaml)\n* [Dutch](./others/locales/nl.yaml)\n* [Spanish](./others/locales/es.yaml)\n* [Turkish](./others/locales/tr.yaml)\n* [Italian](./others/locales/it.yaml)\n* [German](./others/locales/de.yaml)\n* [French](./others/locales/fr.yaml)\n* [Russian](./others/locales/ru.yaml)\n* [Chinese](./others/locales/zh.yaml)\n* [Japanese](./others/locales/jp.yaml)\n\n# How to use it\nFirst of all, talk to [@ispoilerbot](http://t.me/ispoilerbot).\n\n**note**: urls are automatically shortened.\n\n## Sending Spoilers\nBasically there are two kinds of spoiler, those of _light_ weight, that won't ask the user to confirm to see it, and those of **heavy** weight, that will will ask permission to be displayed.\n\nThe inline mode works in any chat conversation:\n\n```\n@ispoilerbot spoiler to be sent here as text\n```\n\nExample:\n\n```\n@ispoilerbot L dies!\n```\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./others/gif/help.1.gif\"/\u003e\n\u003c/div\u003e\n\nAnd you can also send a spoiler name it about what it is:\n\n```\n@ispoilerbot spoiler to be sent here as text \"spoiler name\"\n```\n\nExample:\n\n```\n@ispoilerbot L dies! \"Death Note\"\n```\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./others/gif/help.2.gif\"/\u003e\n\u003c/div\u003e\n\nThe heavy spoilers with:\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./others/gif/help.3.gif\"/\u003e\n\u003c/div\u003e\n\nAnd those lewd spoilers with -- I've added this option in a kind of future proofing if Apple changes it's [policies](https://www.businessinsider.com/apples-porn-policy-2013-1) again.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"./others/gif/help.4.gif\"/\u003e\n\u003c/div\u003e\n\n## Help\nIf you have any other questions about it just use it the help command:\n\n```\n/help\n```\n\n# How does it work?\nYou can build yourself a bot similar to this one, I've wrote a tutorial about it in my [Podesearch Bot](https://github.com/Fazendaaa/podsearch_bot) just follow the procedures listed in [BUILDING.md](https://github.com/Fazendaaa/podsearch_bot/blob/master/docs/building/BUILDING.md).\n\n# Deployment\nThis bot is up and running at [Heroku](http://heroku.com/) through the Github integration, that means that each new push to the ```master``` branch means that is the code serving the bot. You can see more about how does it run at the server by looking at the [Procfile](https://github.com/Fazendaaa/I-m-a-Spoiler-Bot/blob/master/Procfile). You can also deploy yourself this bot into Heroku through:\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Fazendaaa/I-m-a-Spoiler-Bot)\n\n## Testing\nSince there's a [Travis CI](http://travis-ci.org/) integration and [Codecov](https://codecov.io/). All of the tests were written with [Jest](https://facebook.github.io/jest/).\n\nTo run all tests just:\n\n```bash\nnpm test\n```\n\nAll of the [schedule](./src/lib/schedule) implementations are not tested since they only works as a \"timer\" to do some actions other actions previously implemented. And those in [stats](./src/lib/stats) also, since because those are files stats for the badge of spoilers sent.\n\nIf you ran into some errors related to package dependencies and want to know how to handle it, read the [Security](#security) info.\n\n# Security\nI've added a integration with [Snyk](https://snyk.io/) to ensure that all of my dependencies have no bugs or errors reported without fixing it first before Continuos integration (CI) to ensure the Continuos Development (CD).\n\n## Errors/Bugs in Dependencies\nWhen Snyk report some errors or bugs that can be fixed, just follow the CLI command to fix them before running -- more info at their [docs](https://github.com/snyk/snyk#cli).\n\n# Build with\n* [dotenv](https://github.com/motdotla/dotenv)\n* [emoji-regex](https://github.com/mathiasbynens/emoji-regex)\n* [mongoose](http://mongoosejs.com/)\n* [node schedule](https://github.com/node-schedule/node-schedule)\n* [telegraf](http://telegraf.js.org/#/)\n* [telegraf-i18n](https://github.com/telegraf/telegraf-i18n)\n* [telegraf-session-local](https://github.com/RealSpeaker/telegraf-session-local)\n* [tiny-shortener](https://github.com/Fazendaaa/tiny-shortener)\n\n# Code\nPlain and simple [Typescript](http://typescriptlang.org/) and the [Microsoft linter standards](https://github.com/Microsoft/tslint-microsoft-contrib) for it.\n\n# Artwork\nI've made all the artwork for it, [Boku No Hero](http://bokunoheroacademia.wikia.com/wiki/My_Hero_Academia_Wiki) was my inspiration.\n\n\u003cdiv align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"./others/img/logo/logo.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/spoiler/spoiler.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/assistant/assistant.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/name/name.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/light/light.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/heavy/heavy.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/warning/warning.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/lewd/lewd.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/dark/dark.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/error/error.png\" width=100/\u003e\n    \u003cimg src=\"./others/img/offline/offline.png\" width=100/\u003e\n\u003c/div\u003e\n\nYou can see more in the [img](./others/img) folder.\n\n# Contributing\nPlease, I'm not a native/fluent english speaker, so whether you see a variable name wrote the wrong way or even some comment where I've wrote something with the wrong \"past perfect way of life\" or something like that, please let me know it. Not always is just about the code, but rather making it more clear to other people to learn from it.\n\nSo, whether is code or not you can help me out making this code more accessible by reading the [CONTRIBUTING.md](./documentation/contributing/CONTRIBUTING.md). \n\n# Versioning\nI would love to say that [SemVer](https://semver.org/) or anything like that is used but, in my personal experience, this kind of approach doesn't work very well with me, the guy who could be committing in this project for two weeks in a roll and leave it for almost one year with no simple ```npm update```. So, no versioning system is used. \n\n# TODO\nSince I will be keeping this README up to date with any major change and I don't use any versioning system to log all the fixed bugs or previous projects updates, you can still have a taste of what comes next and what is being under analysis right in the [Projects](https://github.com/Fazendaaa/I-m-a-Spoiler-Bot/projects/) tab.\n\n# Authors\n* Only [me](https://github.com/Fazendaaa) for now.\n\nConsider buy me a coffee:\n\n[![Buy Me a Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/Fazenda)\n\nOr even becoming a patron:\n\n[![Patreon](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/Fazenda/overview)\n\n# License\nLike many Open-Source Software (OSS) the MIT license is used, more about it in [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffazendaaa%2Fi-m-a-spoiler-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffazendaaa%2Fi-m-a-spoiler-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffazendaaa%2Fi-m-a-spoiler-bot/lists"}