I apologize that I didn't push the code to github from the start. I had done several improvements to sshJarvis from the initial code that I had submitted. I have updated the README.md file to reflect the changes that I have made to sshJarvis. I will start making regular optimization to sshJarvis and push the code to github. I hope I can consider the code that I have pushed to github. Thank you.
sshJarivs is a shift picking automation for telegram that has optimized algorithm based on the location/time/urgency with flexibility to adjust the shift picking according to your peference
sshJarvis is an automated bot designed to streamline the process of picking up available shifts in fast-paced group chats. It monitors messages in specified Telegram chats, identifies shift availability announcements, and automatically responds to claim the longest available shift.
- Monitors multiple Telegram chats simultaneously
- Parses shift information from unstructured text messages
- Identifies shifts based on configurable keywords and locations
- Prioritizes urgent and ASAP shifts
- Automatically responds to claim the longest available shift
- Customizable response delay to mimic human behavior
- Easy activation/deactivation through chat commands
- Python 3.x
- Telethon: Telegram client library
- asyncio: For asynchronous programming
- fuzzywuzzy: For fuzzy string matching
- zoneinfo: For handling time zones
- 
Chat Monitoring: The bot connects to specified Telegram chats using the Telethon library. 
- 
Message Parsing: When a new message is received, the bot checks for inclusion keywords that indicate shift availability. 
- 
Information Extraction: If a relevant message is found, the bot parses the message to extract: - Date of the shift
- Venue/Location
- Available shift times
- Urgency status
 
- 
Shift Selection: The bot identifies the longest available shift from the parsed information. 
- 
Response Generation: A response message is crafted based on the extracted information, following a predefined format. 
- 
Automated Reply: The bot sends the response message to the chat, effectively claiming the shift. 
- parse_shift_message(): Extracts shift information from raw message text.
- format_response(): Generates a properly formatted response for shift claiming.
- calculate_shift_duration(): Determines the duration of a given shift.
- get_longest_shift(): Identifies the longest shift from a list of available shifts.
- fuzzy_match(): Performs fuzzy string matching to identify locations despite potential typos or variations.
The bot can be customized through several variables:
- inclusion_keywords: List of phrases that indicate shift availability.
- inclusion_locations: List of venues where shifts are accepted.
- exclusion_locations: List of venues to ignore.
- relevant_roles: List of job roles the bot should respond to.
- chat_names: List of Telegram chat names to monitor.
- RESPONSE_DELAY: Time delay before sending a response (to mimic human behavior).
- Set up the required API credentials (api_idandapi_hash) for Telegram.
- Configure the bot settings (keywords, locations, etc.) as needed.
- Run the script to start the bot.
- In the configured "state" chat, send "namaste" to activate the bot or "bye" to deactivate it.
- Implement a database to store shift history and prevent duplicate responses.
- Add more sophisticated natural language processing for better message parsing.
- Develop a web interface for easy configuration and monitoring.
- Implement multi-user support with individual preferences.
pip install python-telegram-bot python-dotenv fuzzywuzzy python-Levenshtein
- 
Clone the repository: git clone https://github.com/sshresthh/sshjarvis.git cd sshjarvis
- 
Create a virtual environment: python3 -m venv venv source venv/bin/activate
- 
Install the required packages: pip install python-dotenv telethon fuzzywuzzy 
- 
Create a .env.localfile in the project root with your Telegram API credentials:TELEGRAM_API_ID=your_api_id_here TELEGRAM_API_HASH=your_api_hash_here
- 
Customize the bot settings in the script: - inclusion_keywords: List of phrases that indicate shift availability
- inclusion_locations: List of venues where shifts are accepted
- exclusion_locations: List of venues to ignore
- relevant_roles: List of job roles the bot should respond to
- chat_names: List of Telegram chat names to monitor
 
- 
Activate the virtual environment: source venv/bin/activate
- 
Run the script: python3 sshjarvis.py
This guide explains how to run your SSHJarvis bot continuously on a Google Cloud Platform (GCP) VM instance using tmux.
- Create a new VM instance in GCP if you haven't already.
- Ensure Python 3.x is installed on your instance.
SSH into your VM instance and run:
sudo apt update
sudo apt install tmux python3-pip
pip3 install python-dotenv telethon fuzzywuzzy python-Levenshtein  -s sshjarvisInside the tmux session:
python3 sshjarvis.pyPress Ctrl + B, then D. Your bot will continue running in the background.
You can now safely exit your SSH session. The bot will keep running.
- SSH into your VM instance
- List tmuxsessions:tmux ls 
- Reattach to your session:
tmux attach -t sshjarvis 
- Reattach to the tmuxsession
- Stop the Python script (Ctrl + C)
- Exit the tmuxsession:exit
If needed, you can forcefully terminate the session:
tmux kill-session -t sshjarvis- 
Logging: Implement comprehensive logging in your bot script to track its activities and any errors. 
- 
Monitoring: Set up monitoring alerts in GCP to notify you of high CPU usage or other issues. 
- 
Updates: Regularly update your bot script and dependencies. When updating: - Reattach to the tmuxsession
- Stop the current bot instance
- Pull the latest code (if using version control)
- Restart the bot
 
- Reattach to the 
- 
Security: - Keep your .env.rosanafile secure and never commit it to version control.
- Regularly update your VM instance and all installed packages.
 
- Keep your 
- 
Backup: Regularly backup your bot script and any important data. 
- If the bot crashes, reattach to the tmuxsession and check the output for error messages.
- Ensure your GCP firewall settings allow necessary outbound connections for the bot to function.
- If tmuxsessions persist after reboots, causing issues, you can clear all sessions with:tmux kill-server 
Remember to monitor your GCP usage to stay within free tier limits or your budget if using paid services.