A friendly Telegram bot to hide spoilers sent.
Me 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.
You can see how many spoilers have been sent so far here:
note: all of the spoilers are just stored for one week period!
By default all the commands are in English, but you can see if the same command is available in your language:
First of all, talk to @ispoilerbot.
note: urls are automatically shortened.
Basically 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.
The inline mode works in any chat conversation:
@ispoilerbot spoiler to be sent here as text
Example:
@ispoilerbot L dies!
And you can also send a spoiler name it about what it is:
@ispoilerbot spoiler to be sent here as text "spoiler name"
Example:
@ispoilerbot L dies! "Death Note"
The heavy spoilers with:
And those lewd spoilers with -- I've added this option in a kind of future proofing if Apple changes it's policies again.
If you have any other questions about it just use it the help command:
/help
You can build yourself a bot similar to this one, I've wrote a tutorial about it in my Podesearch Bot just follow the procedures listed in BUILDING.md.
This bot is up and running at Heroku 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. You can also deploy yourself this bot into Heroku through:
Since there's a Travis CI integration and Codecov. All of the tests were written with Jest.
To run all tests just:
npm test
All of the schedule implementations are not tested since they only works as a "timer" to do some actions other actions previously implemented. And those in stats also, since because those are files stats for the badge of spoilers sent.
If you ran into some errors related to package dependencies and want to know how to handle it, read the Security info.
I've added a integration with Snyk 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).
When 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.
- dotenv
- emoji-regex
- mongoose
- node schedule
- telegraf
- telegraf-i18n
- telegraf-session-local
- tiny-shortener
Plain and simple Typescript and the Microsoft linter standards for it.
I've made all the artwork for it, Boku No Hero was my inspiration.
You can see more in the img folder.
Please, 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.
So, whether is code or not you can help me out making this code more accessible by reading the CONTRIBUTING.md.
I would love to say that SemVer 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.
Since 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 tab.
- Only me for now.
Consider buy me a coffee:
Or even becoming a patron:
Like many Open-Source Software (OSS) the MIT license is used, more about it in LICENSE.