12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/bin/bash
- #
- set -e # Exit immediately if any command exits with a non-zero status
- check_venv() { # Check if the venv module is available
- if python3 -c "import venv" &> /dev/null; then
- return 0
- else
- echo "The 'venv' module is not available. Please ensure you are using Python 3.3 or later."
- return 1
- fi
- }
- create_venv() {
- python3 -m venv env
- }
- activate_venv() {
- source env/bin/activate
- }
- install_dependencies() {
- pip install --upgrade pip || { echo "Failed to upgrade pip"; exit 1; }
- pip install gunicorn || { echo "Failed to install Gunicorn"; exit 1; }
- pip install -e . || { echo "Failed to install dependencies"; exit 1; }
- }
- initialize_db() { # Create the database. This also populates it with some goals and votes from the default rewards.py
- export FLASK_APP=ownchatbot
- if python -m flask init-db; then
- echo "Database initialized successfully."
- else
- echo "Failed to initialize the database. Please check for errors."
- exit 1 # Exit the script with a non-zero status
- fi
- }
- generate_key() {
- KEY=$(< /dev/urandom tr -dc 'A-Za-z0-9' | head -c 32)
- echo "$KEY"
- }
- update_config() { # Generate keys for SECRET_KEY and MGMT_AUTH
- local key_name="$1"
- local key_value="$2"
- local bak_file="instance/config.py.bak"
- # Update the config file
- if sed -i.bak "s|$key_name = ''|$key_name = '$key_value'|" "instance/config.py"; then
- echo "Updated $key_name successfully."
- rm "$bak_file" # Remove the .bak file if the update was successful
- else
- echo "Failed to update $key_name. Backup file remains."
- exit 1 # Exit the script with a non-zero status
- fi
- }
- read -p "This app includes an option to integrate Kofi donations and membership rewards into your stream. If you use this feature, you acknowledge that you alone are responsible for backing up and securing the OwnchatBot folder, so as not to lose any data related to rewards your viewiers earned by spending money on Kofi. The developer(s) of OwnchatBot assume no responsibility for any loss of such data. Do you agree to these terms? Type \"yes\" or \"no\": " agreement # Prompt the user to accept the agreement
- if [[ "$agreement" != "yes" ]]; then
- echo -e "\n\nAgreement declined by user. OwnchatBot not installed.\n\n"
- exit 0
- fi
- if check_venv; then
- create_venv
- else
- exit 1
- fi
- activate_venv
- install_dependencies
- initialize_db
- deactivate
- cp ownchatbot/defaults/*py instance/ # Copy the default config files into the instance folder
- SECRET_KEY=$(generate_key)
- update_config "SECRET_KEY" "$SECRET_KEY"
- MGMT_AUTH=$(generate_key)
- update_config "MGMT_AUTH" "$MGMT_AUTH"
- read -p "Please enter the port number you would like OwnchatBot to listen on: " OCB_PORT
- echo "
- You're ready to start OwnchatBot! Run:
- env/bin/python -m gunicorn --error-logfile ownchatbot.log -b 0.0.0.0:$OCB_PORT -w 1 'ownchatbot:create_app()'
- To configure your bot, go to:
- http://localhost:$OCB_PORT/mgmt?auth=$MGMT_AUTH
- "
|