diff --git a/userbot/install.sh b/userbot/install.sh deleted file mode 100644 index deed859..0000000 --- a/userbot/install.sh +++ /dev/null @@ -1,338 +0,0 @@ -#!/usr/bin/env bash - -# Define color codes -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[0;33m' -BLUE='\033[0;34m' -INPUT='\033[1;30m' -NC='\033[0m' # No Color - -PACKAGE_MANAGER="" - -# Ensure the script is run with root privileges -if [[ $UID != 0 ]]; then - printf "${YELLOW}This script requires root privileges.${NC}\n" # skipcq - printf "Please enter the root password to continue.\n" - exec sudo "$0" "$@" -else - printf "${YELLOW}Running with root privileges${NC}\n" # skipcq -fi - -# Detect available package manager -if command -v apt &>/dev/null; then - PACKAGE_MANAGER="apt" -elif command -v apk &>/dev/null; then - PACKAGE_MANAGER="apk" -elif command -v yum &>/dev/null; then - PACKAGE_MANAGER="yum" -elif command -v pacman &>/dev/null; then - PACKAGE_MANAGER="pacman" -else - printf "${RED}Unsupported package manager. Please use a compatible distribution or update the installer script.${NC}\n" # skipcq - exit 1 -fi - -if command -v termux-setup-storage; then - printf "${RED}For termux, please use https://raw.githubusercontent.com/The-MoonTg-project/Moon-Userbot/main/termux-install.sh${NC}\n" # skipcq - exit 1 -fi - -# Install necessary packages based on detected package manager -case "$PACKAGE_MANAGER" in -apt) - apt update -y - apt install python3 python3-venv git wget -y || exit 2 - ;; -apk) - apk update - apk add python3 py3-virtualenv git wget || exit 2 # Packages here may be wrong, to verify - ;; -yum) - yum update -y - yum install python3 python3-venv git wget -y || exit 2 # Packages here may be wrong, to verify - ;; -pacman) - pacman -S --noconfirm python python-virtualenv git wget || exit 2 - ;; -esac - -# Clone repository if not exists -if [[ -d "Moon-Userbot" && "$(basename "$PWD")" != "Moon-Userbot" ]]; then - cd Moon-Userbot || exit 2 -elif [[ "$(basename "$PWD")" == "Moon-Userbot" && -f ".env.dist" && -f "main.py" && -d "modules" ]]; then - printf "${BLUE}Already inside the Moon-Userbot repo, proceeding...${NC}\n" # skipcq -else - git clone https://github.com/The-MoonTg-project/Moon-Userbot || exit 2 - cd Moon-Userbot || exit 2 -fi - -if [[ -f ".env" ]] && [[ -f "my_account.session" ]]; then - printf "${GREEN}It seems that Moon-Userbot is already installed. Exiting...${NC}\n" # skipcq - exit -fi - -# Prompt user if they want to proceed with creating a virtual environment -printf "${YELLOW}It's recommended to use a virtual environment for Python projects.${NC}\n" # skipcq -printf "Note: If your drive resources are very limited, you might consider not creating a virtual environment, but it shouldn't be rejected otherwise unless you know what you're doing.\n" -printf "If you're unsure, it's better to create a virtual environment.\n" -printf "${INPUT}Would you like to create a virtual environment? (Y/n)${NC} > " # skipcq -read -r create_venv - -if [[ "$create_venv" != "n" ]] && [[ "$create_venv" != "N" ]]; then - # Create a virtual environment inside the cloned repository and activate it - python3 -m venv venv - . venv/bin/activate - - # Upgrade pip and install wheel and pillow - pip install -U pip wheel pillow -fi - -if [ -d ".venv" ]; then - . .venv/bin/activate -elif [ -d "venv" ]; then - . venv/bin/activate -fi - -# Install Python requirements -pip install -U -r requirements.txt || exit 2 -# Prompt for API_ID and API_HASH -printf "Enter API_ID and API_HASH\n" -printf "You can get it here -> https://my.telegram.org/\n" -printf "Leave empty to use defaults (please note that using default keys is a ${RED}very bad idea${NC} and significantly increases your ban chances)\n" # skipcq -read -r -p "API_ID > " api_id - -# Default API_ID and API_HASH -if [[ $api_id = "" ]]; then - printf "${RED}You have chosen to use the default API_ID and API_HASH, which is strongly discouraged.${NC}\n" # skipcq - printf "${YELLOW}Please type${NC} '${BLUE}I agree${NC}'${YELLOW} to confirm that you understand the risks and still wish to proceed.${NC}\n" # skipcq - read -r -p "Confirmation > " confirmation - if [[ $confirmation = "I agree" ]]; then - api_id="2040" - api_hash="b18441a1ff607e10a989891a5462e627" - else - printf "${RED}Confirmation not provided. Exiting...${NC}\n" # skipcq - exit 1 - fi -else - read -r -p "API_HASH > " api_hash -fi -# Prompt for PM PERMIT warn limit -# PM PERMIT warn limit is the number of messages a user can receive from others before giving them a warning, requires `antipm` plugin to be enabled -printf "SET PM PERMIT warn limit\n" -# Now below is more clear version: -printf "The number of messages others can send you before receiving a warning, and eventually a ban or leave empty for default (3), requires antipm plugin to be enabled\n" -read -r -p "PM_LIMIT warn limit > " pm_limit - -if [[ $pm_limit = "" ]]; then - pm_limit="3" - printf "Limit not provided by user; set to default\n" -fi - -# Prompt for musicbot usage -printf "Do you want to use musicbot? (y/N)" -read -r musicbot -if [[ $musicbot = "y" ]]; then - printf "Enter SECOND_SESSION_STRING to be used by musicbot\n" - read -r -p "SECOND_SESSION > " second_session - if [[ $second_session = "" ]]; then - printf "SECOND_SESSION not provided by user\n" - second_session="" - fi -fi - -# Prompt for various API keys -printf "Enter APIFLASH_KEY for webshot plugin\n" -printf "You can get it here -> https://apiflash.com/dashboard/access_keys\n" -read -r -p "APIFLASH_KEY > " apiflash_key - -if [[ $apiflash_key = "" ]]; then - printf "NOTE: API Not set; you'll get errors with webshot & ws module\n" -fi - -printf "Enter RMBG_KEY for remove background module\n" -printf "You can get it here -> https://www.remove.bg/dashboard#api-key\n" -read -r -p "RMBG_KEY > " rmbg_key - -if [[ $rmbg_key = "" ]]; then - printf "NOTE: API Not set; you'll not be able to use remove background modules\n" -fi - -printf "Enter VT_KEY for VirusTotal\n" -printf "You can get it here -> https://www.virustotal.com/\n" -read -r -p "VT_KEY > " vt_key - -if [[ $vt_key = "" ]]; then - printf "NOTE: API Not set; you'll not be able to use VirusTotal module\n" -fi - -printf "Enter GEMINI_KEY if you want to use AI\n" -printf "You can get it here -> https://makersuite.google.com/app/apikey\n" -read -r -p "GEMINI_KEY > " gemini_key - -if [[ $gemini_key = "" ]]; then - printf "NOTE: API Not set; you'll not be able to use Gemini AI modules\n" -fi - -printf "Enter COHERE_KEY if you want to use AI" -printf "You can get it here -> https://dashboard.cohere.com/api-keys\n" -read -r -p "COHERE_KEY > " cohere_key - -if [[ $cohere_key = "" ]]; then - printf "NOTE: API Not set; you'll not be able to use Coral AI modules\n" -fi - -while true; do - # Prompt for database type and database URL if MongoDB is selected - printf "${YELLOW}Choose database type:${NC}\n" # skipcq - printf "[1] MongoDB db_url\n" - printf "[2] MongoDB localhost\n" - printf "[3] Sqlite (default)\n" - read -r -p "> " db_type - - case $db_type in - 1) - printf "Please enter db_url\n" - printf "You can get it here -> https://mongodb.com/atlas\n" - read -r -p "> " db_url - db_name=Moon_Userbot - db_type=mongodb - break - ;; - 2) - if ! command -v apt &>/dev/null; then - printf "This option requires apt package manager, which is not available on your system.\n" - printf "Please choose a different database type.\n" - continue - fi - - if systemctl status mongodb; then - wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | apt-key add - - source /etc/os-release - printf "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu %s/mongodb-org/5.0 multiverse\n" "${UBUNTU_CODENAME}" | tee /etc/apt/sources.list.d/mongodb-org-5.0.list - apt update - apt install mongodb -y - systemctl daemon-reload - systemctl enable mongodb - fi - systemctl start mongodb - - db_url=mongodb://localhost:27017 - db_name=Moon_Userbot - db_type=mongodb - break - ;; - 3) - db_name=db.sqlite3 - db_type=sqlite3 - break - ;; - *) - printf "${RED}Invalid choice!${NC}\n" # skipcq - ;; - esac -done - -# Generate .env file with collected variables -cat >.env < " install_type - - case $install_type in - 1) - if ! command -v apt &>/dev/null; then - printf "This option requires apt package manager, which is not available on your system.\n" - printf "Please choose a different installation type.\n" - continue - fi - - if ! command -v pm2 &>/dev/null; then - curl -fsSL https://deb.nodesource.com/setup_17.x | bash - apt install nodejs -y - npm install pm2 -g - su -c "pm2 startup" $SUDO_USER - env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $SUDO_USER --hp /home/$SUDO_USER - fi - su -c "pm2 start main.py --name Moon --interpreter python3" $SUDO_USER - su -c "pm2 save" $SUDO_USER - - printf "${GREEN}============================\\n" # skipcq - printf "Great! Moon-Userbot installed successfully and running now!\n" - printf "Installation type: PM2\n" - printf "Start with: \"pm2 start Moon\"\n" - printf "Stop with: \"pm2 stop Moon\"\n" - printf "Process name: Moon\n" - printf "============================${NC}\n" # skipcq - break - ;; - 2) - cat >/etc/systemd/system/Moon.service <