/telegram-bot-getids

Telegram Bot that prints out detailed informations about users, chats and media.

Primary LanguageJavaScriptMIT LicenseMIT

GetIDsBot

Introduction

GetIDsBot is a chatbot for the Telegram Messaging Plattform which main purpose is to extract useful informations from messages that are normally hidden and to enhance them. This means...

  • converting file_sizes and durations to human readable formats.
  • interpolating account creation dates from the users chat_id.
  • displaying it all tree(1)'ish'.

Using this bot

Option A: Use the version we host at https://t.me/GetIDsBot

Option B: Host one yourself. You will need a bot token from the BotFather and a server with nodejs and npm installed to run it. Yes, bots are programs and they must run on some computer.

Account creation dates

Most people want to use this, so here is a bit of explanation for all of you: Telegram gives each chat (that is users, bots, groups and channels) a globally unique numerical id. These id numbers aren't given out sequentially, so two users signing up at the exact same time will probably have a difference of up to a few millions. Two possible reasons are:

  • Sharding: Telegram registrations won't all happen on the same server. To avoid giving out the same id twice, all registration servers reserve a range of ids from the central registry and periodically fetch new ones.
  • Obfuscation: You should not be able to guess the signup date from one's id.

This is still speculation, and we don't know for certain, but averaged out over a year or so, the IDs do still increase. There are some exceptions, but guessing is still possible.

We collected a bunch of ids for which we knew the rough creation dates, anonymized the dates and used some dark magic called "maths" to estimate a creation date.

Current state of development

Very whacky and alpha quality. But it somehow works, because it is js.

Development / Contribute

The original GetIDsBot was written in PHP. After I (Jonas) realized that PHP is horrible for anything other than easy deployment and basic templating, I got the urge to rewrite it in a better language. As you might have already seen, I failed. It is written in javascript. I hate javascript. But my Rust and Elixir skills are just mediocre at the time of writing, so here we go:

  • Fork this repo and clone it from your account, so you can crate Pull requests.
  • If you want to work on a feature, consider branching. I would consider feature-xy or fix-xy a decent naming sheme.
  • Run npm install in this repo.
  • Run the bloody thing with node index.js
  • Please use propper commit messages like adds italian translation or fixes rounding error. If you are not a git master like me, sublime merge might save your day.

Hall of shame

The following people sinned and wrote javascript for this project or did not stop the others from doing so:

License and Copyright

MIT for this project, some BSD and Apache License, Version 2.0 for it's dependencies. Copyright 2019 Jonas Zohren & other contributors.