Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Product Hunt Habrahabr Hacker News Spark Telegram Bot Store Reddit

First free open-source Telegram freelance market. Built by people for people.

About Arbeit Bot

Classic freelance markets have long been terrible: not only are they old, slow, expensive (on average they take ~22% of your money), but also profit-oriented and not customer-oriented. Heck, read this post about why upwork sucks! I mean, when I first started on Elance back in 2012 fees were around 10%, then they launched paid accounts, then raised fees to 15% and then finally raised them to the current figures when merging into Upwork.

@arbeit_bot β€” is freelance market, redesigned. Imagine if you didn't have to pay a dime to get job offers or the list of the best freelancers on the market. Imagine if you didn't get spammed with amateur job bids from sketchy companies or freelancers. Imagine if you could always contribute to your favourite freelance market and if all freelancer ranking algorithms were transparent. Imagine if you didn't have to copy-paste the same job bid from client to client. Imagined? Good, because that's what ArbeitBot is offering to you.

We are a completely non-profit organization driven by volunteer contributors who spend their spare time to make a difference in the freelancers' lives. We wanted to build a freelance market where the only person who matters is the client β€” not stockholders or greedy businessmen. But, if you found this text here, we would assume that you are aware of what ArbeitBot is and would want to help us out.

Well, first, please check out our development roadmap to be on track with all the current tasks that we are working on. Then, continue reading.

Want to contribute?

ArbeitBot is a completely non-profit and community-driven project which really depends on it's contributors. If you feel adventurous or just want to help out the project β€” please do so either by fixing issues from the list and creating a pull request or by submitting issues to our bug tracker.

The best option to add a feature to the codebase is to first open an issue with label Enhancement (to notify us that you are working on something) where you may also communicate with initial contributors, then fork this project and create a pull request.

If you want to fix a bug from the list of the issues, please comment under the issue that you are working on it, then fork the repository and create a pull request.

Please use Airbnb JavaScript Style Guide as the main tool to follow our project-wide code style.

We highly appreciate any help and that's why the most active contributors will get a 🐝 emoji beside their freelancer profile to stand out among other freelancers of the same category, like that:

@isamsky profile

By the way, did you know how @isamsky got his special symbol? He is the creator of our awesome logo!


So, you decided to help us out β€” good, good. First, ArbeitBot can be launched with the latest LTS release of Node.js β€” so go ahead and install it if you didn't do that yet. Secondly, we use MongoDB as our database, so go ahead and get it as well. The next step would obviously be to run npm i in the root folder of the project to install all the dependencies with Node Package Manager. Then you would want to setup some environment variables to support configuration abstraction.

Necessary environment variables

  • TELEGRAM_API_KEY β€” api key for your telegram bot (obtained from @BotFather)
  • MONGO_DB_URL β€” url of your mongo database (i.e. mongodb://localhost:27017/)
  • ADMIN_CHAT_ID β€” chat id of Telegram channel that should receive logs from bot
  • USE_WEBHOOKS β€” flag identifying if bot should use webhooks or should fetch updates every 1000 seconds (webhooks make bot faster but require custom server with SSL setup)
  • (Optional) WEBHOOK_CALLBACK_URL β€” url that should be used by Telegram servers for webhooks, should be https
  • (Optional) SSL_CERTIFICATE_PATH β€” path to ssl certificate for webhooks
  • (Optional) SSH_RSA_PATH β€” path to ssh private certificate for webhooks (should not be password encrypted)
  • (Optional) ARBEIT_BOT_PRODUCTION_URL β€” url of your production server for flightplan (if you use flightplan)

How to get ssl certificate and key

Fortunately, Telegram webhooks support self-signed SSL certificates. You can use this command on server to create self-signed ssl key that can be accepted by Telegram servers:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout key.key -x509 -days 365 -out crt.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Arbeit_bot/CN={DOMAIN}"

After execution you will have key.key (your ssl key) and crt.pem (your ssl certificate).

Important: please make sure to add your real server address instead of {DOMAIN} in this command. If you aren't using domain name, you can leave your IP there in the form of If you don't specify the correct address or domain here, you will not be able to receive any updates from Telegram servers.

I got it working, what's next?

Wonderful! After you got everything working well, please follow instructions from Want to contribute? We all hope to see you with the 🐝 emoji someday!

Where to seek help?

In case you need a hand to figure something out, please feel free to open an issue or check out Telegram channel @borodutch_support ❀️


ArbeitBot is released under the MIT license. See LICENSE for details. ArbeitBot development would not be possible without help of existing Node.js Telegram bot API written by @yagop. Thank you!


Code for @arbeit_bot Telegram bot







No releases published


No packages published