Commit 4ca6cf55 authored by Endogen's avatar Endogen
Browse files

Telegram bot for Monero-Jobs group

parent a6a9b7ca
Pipeline #227 canceled with stages
---
layout: fr
title: Telegram bot for Monero-Jobs group
author: Endogen
date: 19-07-25
amount: 3
milestones:
- name: Implementation complete
funds: 3
done:
status: unfinished
payouts:
- date:
amount:
---
# A Monero Jobs Bot for Telegram
## TL;DR
In my opinion, the Monero Jobs group on Telegram needs a bot to properly organize and manage (display, search, tag) entries so that users can concentrate on the content instead of going thru piles of offers and requests that are unstructured and mixed with discussions and other content. It would also make it easier for the moderators to manage the group.
I'm experienced with building Telegram bots and would program that bot in Python in about 3 weeks for 3 XMR.
## Why is a Jobs Bot needed?
Since i searched for work that would be payed in XMR and since I'm a heavy Telegram user, i discovered the [__Monero Jobs & Proposals__](https://t.me/MoneroJobs) group that indexes work offers and work requests as well as proposals and is managed by community members that mostly also manage the [Monero XMR](https://t.me/monero) group.
That group was exactly what I've searched for but i was kind of amazed to see that work offers and requests are managed solely by tagging. It means that the current system of listing entries is relying on the good will and understanding of the user that posts the entry.
Altho a pinned message is present in that group, we all know what happens on a daily basis: User doesn't read the pinned message, doesn't know how to properly post a request, posts a request without properly tagging it, admins have to intervene, potential request ends up in a discussion that involves a few users.
Admins are doing a great job in that TG group but i feel like the process of posting offers, requests and proposals could be structured better and the workload for admins could be significantly lowered if that group would have a bot that guides the user thru a workflow that ends in the creation of the desired entry.
The Monero community deserves a better solution then what is currently present.
## How could it be done better?
Telegram bots are really cool! It's possible to get in a private chat with a bot and interact with him. Depending on what the use case is, the bot can for example guide the user thru a workflow and ask questions that the user has to answer.
Something like "What would you like to do?" and then there would be three buttons that the user could press: "Request Work", "Offer Work" and "Create Proposal" (actually also "My Entries" if the user already created entries). Depending on what the user chooses, another question like "Enter a title" could come up etc.
Entered data would be saved in a database after the workflow is finished and a notification will be posted to the Monero Jobs TG group. I can also imagine to integrate possibilities to opt-in for getting notified about new entries in one of the areas etc.
This behavior would have the following advantages:
- User has a visual interface that guides him thru a workflow
- User can always go back and correct his last data entry (most users don't know that you can edit your own Telegram posts)
- User provides exactly the data that is needed
- User input can be verified. Max length for title & content, price has to be a numeric value, tags have to be provided, etc.
- The process of entering the needed data for the entry doesn't pollute the TG group itself
- Bot can notify members of the group (by posting in the group) that a new entry is present and show for example the title or other details. On a button click, interested users could display and read the full content in a structured way (always the same layout)
- Rating system for users if desired (altho that could possible be gamed. Not sure if it's really a good idea - has to be discussed)
- The bot would be added to the Monero Jobs group and interested users could search entries by some specific criteria like:
- Offer or Request with highest / lowest price
- Newest or oldest entries
- Users with highest rating and their entries
- Tags
- Category (soft skills, programming, administration, knowledge, ...)
What could be the data that has to be entered for a entry:
- User
- Timespan
- Price
- Title
- Description
- Tags
- Category
- Attachements (optionally)
- ???
The details would need to be discussed with the TG group moderators and the community. I'm willing to develop everything they what if it stays in the outlined boundaries.
## Why should it be me?
I really like programming bots for Telegram. I think it's fun and I've done a few already. I really enjoy it and since i totally love Monero, i think I'm a good match for this task :-)
I'm in love with Python and thus i would also implement this bot in Python. Specifically based on the the awesome [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) module.
Projects I've realized until now (all Python based)
- [Tansanit](https://github.com/Endogen/Tansanit) - CLI wallet for Bismuth (BIS) cryptocurrency
- [OpenCryptoBot](https://github.com/Endogen/OpenCryptoBot) - Telegram bot for cryptocurrency info (currently my most advanced software architecture)
- [Telegram-TradeOgre-Bot](https://github.com/Endogen/Telegram-TradeOgre-Bot) - Encrypted Telegram bot for the TradeOgre exchange
- [StelliteBot](https://github.com/Endogen/StelliteBot) - Simple Telegram bot to manage a TG group
- [TradeOgrePy](https://github.com/Endogen/TradeOgrePy) - API wrapper for the TradeOgre exchange
- [Telegram-Kraken-Bot](https://github.com/Endogen/Telegram-Kraken-Bot) - Interface for Kraken exchange. My first bot. Everything in one file and no OOP
(Currently I'm building a Telegram tipping bot for Bismuth cryptocurrency)
Links
- [GitHub](https://github.com/Endogen)
- [My Telegram handle '@endogen'](https://t.me/endogen)
- [StackOverflow Monero Profile](https://monero.stackexchange.com/users/5102/endogen) - I'm #8 in the year rank toplist right now
## Features and Costs
### Features
- Source code will be open source
- Bot will only save as much data as is needed to provide the service. User can choose to delete all saved data related to his account
- Admin interface to add new admins and administer the bot in general
- Restarting it, shutting it down, some stats like how many entries there are, etc.
- I will support the bot with bugfixes in the future if needed and desired
- I'm open to extend the bot with new functionality in the future (multisig escrow, ...)
- Data will be saved in a database (SQLite file based) so that it can be easily moved and also displayed on a website. The interface to the database would be abstract enough so that it could be easily switched to another database.
- Every available command will be a dynamically loaded plugin that can be disabled / enabled / independently updated. Commands could be:
- `/search`
- `/request`
- `/offer`
- `/proposal`
- `/admin`
- Apart from the mentioned commands, there would be an UI to manage own account, create new entries and list own entries
- Ridiculously easy update of plugins (every command will be a plugin) by drag and dropping the changed implementation (Python file) into a chat with the bot. That would of course only work for admins and no restart of the bot would be needed.
- Mature logging functionality with an additional command for the bot that would allow it to download (as a file download over Telegram) the latest logfile. Specific modules could easily be included / excluded from logging.
### Costs
I would really be happy to work on this bot and it should be finished in about three or four weeks (around 2 or 3 hours of work per day) and i would require __3 XMR__ to do it.
If such a bot is desired by the community and if i will be chosen to realize it and if it proves itself, then I'd also like to extend it in the future and possibly add escrow services that would involve the admins and a 2-of-3 multisig wallet and other features. But let's start simple.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment