tuxbot-bot/autoinstall.sh
2019-07-28 18:02:44 +00:00

147 lines
3.6 KiB
Bash

#!/bin/bash
# This script is meant for easy install Tuxbot using curl/wget
printf "Welcome to Tuxbot's installation guide.\n"
printf "\nLog file is in ~/.tuxinstall.log\n"
# Command checking
if (( $EUID != 0 )); then
printf "\n\nError : Please run this script as ROOT"
exit 0
fi
if ! [ -x "$(command -v git)" ]; then
printf "\n\nError : Git is not installed"
exit 0
fi
if ! [ -x "$(command -v pip3.7)" ]; then
printf "\n\nError : pip3.7 is not installed (using pip3.7 command)\nPlease install it to continue"
exit 0
fi
# Tuxbot directory answer
read -p "In which directory Tuxbot should be installed ? : [/srv/]" na
na=${na:-"/srv/"}
# Cloning tuxbot USING GNOUS'S GIT MIRROR
printf "Cloning git repository, please wait... \n" &
git clone https://git.gnous.eu/gnouseu/tuxbot-bot $na/tuxbot-bot &> ~/.tuxinstall.log
sleep 1
printf "Tuxbot has been cloned to $na.\n" 5 50
sleep 1
printf "Installing pip modules, please wait...\n" 5 50 &
sleep 1
# Downloading PIP modules using pip3.7 cmd
pip3.7 install -U discord.py[voice] &> ~/.tuxinstall.log
cd $na/tuxbot-bot
pip3.7 install -r requirements.txt &> ~/.tuxinstall.log
sleep 1
printf "Tuxbot's python dependencies have been downloaded\n"
sleep 1
# Answers to generate config
function generateConfig {
DATE=`date +%Y-%m-%d`
read -p "Enter your Discord API Token : " cToken
read -p "Enter the bot client ID : " cID
read -p "Enter the log channel ID : " cLogID
read -p "Enter the main channel of your server : " cSrvID
read -p "What game tuxbot should display as playing (eg : 'Eat potatoes') : " cGame
read -p "What is you're discord user ID (for admin cmd) : " cAdmin
echo "------------"
read -p "MySQL's tuxbot user : " mSQLuser
read -p "MySQL's tuxbot password : " mSQLpass
read -p "MySQL's tuxbot database name : " mSQLdb
echo """
#Generated by Tuxbot install script
#$DATE
token = \"$cToken\"
client_id = \"$cID\"
log_channel_id = \"$cLogID\"
main_server_id = \"$cSrvID\"
game = \"$cGame\"
authorized_id = [\"$cAdmin\"]
prefix = [\".\"]
description = '.'
mysql = {
\"host\": \"localhost\",
\"username\": \"$mSQLuser\",
\"password\": \"$mSQLpass\",
\"dbname\": \"$mSQLdb\"
}
fonts = {
\"normal\": \"NotoSansCJK-Regular.ttc\",
\"bold\": \"NotoSansCJK-Bold.ttc\"
}
""" &> $na/tuxbot-bot/config.py
}
printf "Do you want to generate config file ?\n1 - Yes (selected)\n2 - No\n"
read -p "(1-2) : " initConf
initConf=${initConf:-"1"}
case $initConf in
1) generateConfig;;
esac
#Non login user
echo "Adding tuxbot non-login user..."
useradd -M tuxbot
sleep 1
#Chown all perms to the non login user
echo "Fixing permissions..."
chown tuxbot:tuxbot -R $na/tuxbot-bot/
sleep 1
#Create the service file
echo "Adding Tuxbot service & start it..."
echo """[Unit]
Description=Tuxbot, a discord bot
#After=network.target
[Service]
Type=simple
User=tuxbot
Restart=on-failure
Restart=always
RestartSec=1
WorkingDirectory=$na/tuxbot-bot/
ExecStart=/usr/bin/env python3.7 $na/tuxbot-bot/bot.py
StandardOutput=file:/var/log/tuxbot.log
[Install]
WantedBy=multi-user.target
""" &> /lib/systemd/system/tuxbot.service
systemctl daemon-reload
systemctl start tuxbot
sleep 1
echo "Activation of tuxbot at startup..."
sleep 1
systemctl enable tuxbot
#End message
echo """
Tuxbot should be correctly installed.
Please check if all is good by execute :
systemctl status tuxbot
And .ping command in discord.
Configuration file is $na/tuxbot-bot/config.py
Main tuxbot directory is $na/tuxbot-bot/
Any question ? => Make an issue on github
https://git.gnous.eu/gnouseu/tuxbot-bot
https://github.com/outout14/tuxbot-bot
"""