Looking back at 2020

1. Jan 2021 | KaratekHD | CC-BY-SA-3.0

Looking back at 2020

2020 has been a tough year. The global pandemic made it possible to work very much on my personal projects, so let’s talk about that. Also some “Thank Yous” will be given.

Celebrating Nemesis Anniversary

At January 2nd, 2020, we introduced Nemesis. Nemesis is my very own Telegram group management bot, written in Python. Back then, the very popular bot BanhammerMarie went offline in favour of a closed source, proprietary alternative I did not want to use. I first wanted to clone Marie in Java, but scraped that idea soon. So I forked Marie, and over the time, some new features were introduced.

Features arrived in 2020

Patches to version 1.x

Multi Language support

Our first real change was support for multiple languages. In theory, it is now possible to use different languages in chats using /lang, but we do not have the translations yet. Any help is appreciated, so I you want, go ahead and check out our translation portal.

Import and Export

We also added support for importing settings from the proprietary bot @MissRose_bot we wanted to replace in our groups. This should make it much easier for newcomers to migrate their chats over to Nemesis. In addition, it is now possible to export some of Nemesis settings to a nice and readable .toml file.

Version 2.0

Later the year, the first major update of Nemesis, version 2.0, was released. This version brought a lot of new features and improvements, so let’s take a look.

Migration to python-telegram-bot 12.x and 13.x

Nemesis now completely uses version 12.x of the python-telegram-bot api. Originally written for version 11.x, this transition took a lot of time, but it allows us to keep the bot running, as using an old version of the api would make it more difficult to add new features later. Some time after, we also took the transition to 13.x, which was a lot smoother then migrating to its predecessor.

Downloading stickers and creating custom packs

Another new feature is the ability to download Stickers as .png files and to create your own sticker packs! Did not try it out yet? Go ahead and send /help to the bot and let it show you how to do so! It only works with static, not animated, stickers at the moment though.

Reputation system

Also, it is now possible to vote on messages by replying to them with + or -. You can enable this feature by typing /reputation on.

Secret messages

The last feature I want to mention is the possibility to send secret messages in groups, called “whispers”. In order to enable this, it was necessary to use InlineQuerys, which actually was a pretty painful process. BUt it works now, and Nemesis replaces another bot in our groups, @whisperBot, enabling me greater privacy, since I do not need to trust a third party in order to send secret messages.

Features to come in 2021

I’ve got some ideas for new features, so here they are. Any feedback is appreciated.

REST based API

This one is not particularly useful for the user, but enables us to build great tools based on Nemesis. Building a REST Api allows us to build applications integrated into Nemesis, such as a fully functional web based administration panel.

Leveling system

Another feature to come is leveling, similar to Combot. This way it will finally be possible to manage a group with only Nemesis, without needing another bot.


Same as above, it will be possible to get rid of Combot and do all of the management with Nemesis. Statistics will be generated based on the time of day, the sender and the message type. The message itself won’t be saved in any way, keeping your messages private. Statistics will be disabled by default.

Performance Improvements

Currently, Nemesis is not really scalable and won’t work well if the number of users grows. In order to change that, it will be necessary to change the way the bot handels database queries and processes data, as well as optimizing it to use multiple threads and cache data in memory.

GUtilities Reloaded

In 2019, we were working on creating Minecraft plugins for a multiplayer network we wanted to call “GamelMC”. This project was later scrapped, and all the code written was archived. However, in 2020, I used some of the old code and ported one plugin to Minecraft 1.16.4. The plugin adds basic functionality to the server, such as chat formatting, chat clearing, fancy kick messages, teamchat and a lot more. The source code is available here.


Back in late 2019, I discovered a mobile game which some of my friends played as well. Together with @ttzug I worked on creating a bot for that game, but this project was scrapped. The project was to bulky, and the game turned out not being really good. In addition, personal reasons made me quitting that game.

Contribution to other Open Source projects

Corona Warn Companion

Screenshot This is an app which helps you better understand the warnings the official Corona-Warn-App in Germany. Let me quote from it’s README:

!!! quote The app reads the Rolling Proximity IDs recorded by your device from the Exposure Notifications database (this is only possible with root permissions, which is why official Exposure Notifications apps, such as Corona-Warn-App, cannot display these details). The app downloads the Diagnosis Keys from the official German Corona-Warn-Server and other countries’ servers, as selected by you. For Germany, it downloads the keys published daily for the last few days, and the keys published every hour for today. Only keys for the days found in step 1 are shown and counted.

However, the application was not able to read data from the FOSS version of the Corona Warn App, so I added that. Anyway, the companion app is really cool, so if your device is rooted, you should definitely check it out! Here is the link.


YaST is the installation and configuration tool for openSUSE and the SUSE Linux Enterprise distributions. It features an easy-to-use interface and powerful configuration capabilities. I just did some small bugfixes, and am pretty proud on my first contribution to a FOSS project.

Thank you!

Now its time to thank some people. First of all, huge thank you to the amazing people who keep Nemesis running. Namely:

Name Role
@GenosseSeverus Co-Owner of Nemesis
@Luna_Loony Administrator
@ttzug Support User

Speaking of GenosseSeverus, make sure to check out their Telegram Themes: Sharry Themes

Another thank you goes to Paul Larsen for building the amazing base of Nemesis.

Happy new year!

Categories: Meta

Tags: rewind

Share this post: