Le Bot Illégitime des Collaborateurs Illégitimes
Go to file
fomys 273d92ec5e Add version system
Remove BaseClass verification
2019-04-19 11:24:10 +02:00
assets Début de la nouvelle version du bot 2019-04-07 21:31:13 +02:00
config Début de la nouvelle version du bot 2019-04-07 21:31:13 +02:00
modules Add version system 2019-04-19 11:24:10 +02:00
.gitignore Ajout du rechargement des modules (ya pas encore la commande mais un déchargement/rechargement marche) et ajout de la dépendance oubliée 2019-04-07 23:39:48 +02:00
dependencies Début de la nouvelle version du bot 2019-04-07 21:31:13 +02:00
errors.py Add version system 2019-04-19 11:24:10 +02:00
main.py Add version system 2019-04-19 11:24:10 +02:00
Makefile Début de la nouvelle version du bot 2019-04-07 21:31:13 +02:00
Pipfile Add version system 2019-04-19 11:24:10 +02:00
README.md Début de la nouvelle version du bot 2019-04-07 21:31:13 +02:00

Bot discord Python pour le serveur officiel d'e-penser

Ce bot est un supplément au Bot JS

Installer le bot

user : git clone https://github.com/epenserdiscord/epenser-bot-py.git

Les dépendances seront installées au moment du lancement du bot. excepté python (faut pas abuser non plus), puisqu'on utilise la version rewrite de discord.py, il faut python >= 3.5.3

Lancer le bot

user : export DISCORD_TOKEN=token Remplacez par le token de votre bot.
user : cd path/to/epenser-bot-py/
user : while true ; do git fetch --all; git reset --hard origin/master; make; done

On peut aussi lancer le bot sans la boucle :

user : export DISCORD_TOKEN=token Remplacez par le token de votre bot.
user : cd path/to/epenser-bot-py/
user : make

Daemoniser le bot

Le bot est actuellement organisé de manière à ce que la commande /restart quitte le programme et ce qu'un script à part vienne le relancer après avoir, par exemple, mis à jour les sources. Par conséquent, nous avons besoin d'un tel script. Celui qui est utilisé actuellement est séparé en plusieurs parties pour gérer les deux sections (JS et Python) avec :

/home/epenser/run (marqué en executable)

#!/bin/bash
export DISCORD_TOKEN=token
export GITHUB_TOKEN=token
sleep 20  #C'est pour le réseau :3
bash /home/epenser/pybot.sh &
bash /home/epenser/jsbot.sh

On ne s'intéresse ici pas au jsbot.sh mais uniquement pybot.sh :

/home/epenser/pybot.sh

#!/bin/bash
set -o pipefail
cd /home/epenser/epenser-bot/epenser-bot-py/
while [ true ] ;do
date >> log
echo "---- git pull ----" >> log
echo >> log
git fetch --all 2>&1 | tee -a log
git reset --hard origin/master 2>&1 | tee -a log
echo >> log
./main.py 2>&1 | tee -a log
done

Le serveur utilisé pour hoster le bot est un raspberry sous raspbian. Il est donc sous systemd. Je ne me suis pas intéressé à Open-RC même si j'aurais pu.

/etc/init.d/epenser

#!/bin/sh -e
### BEGIN INIT INFO
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
DAEMON="/home/epenser/run"
daemon_OPT=""
DAEMONUSER="epenser"
daemon_NAME="run"

PATH="/sbin:/bin:/usr/sbin:/usr/bin"

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

d_start () {
log_daemon_msg "Starting system $daemon_NAME Daemon"
start-stop-daemon --background --name $daemon_NAME --start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $daemon_OPT
log_end_msg $?
}

d_stop () {
log_daemon_msg "Stopping system $daemon_NAME Daemon"
start-stop-daemon --name $daemon_NAME --stop --retry 5 --quiet --name $daemon_NAME
log_end_msg $?
}

case "$1" in

start|stop)
d_${1}
;;

restart|reload|force-reload)
d_stop
d_start
;;

force-stop)
d_stop
killall -q $daemon_NAME || true
sleep 2
killall -q -9 $daemon_NAME || true
;;

status)
status_of_proc "$daemon_NAME" "$DAEMON" "system-wide $daemon_NAME" && exit 0 || exit $?
;;
*)
echo "Usage: /etc/init.d/$daemon_NAME {start|stop|force-stop|restart|reload|force-reload|status}"
exit 1
;;
esac
exit 0

Pensez à remplacer les parties spécifiques.

(Il y a probablement des erreurs dans cette partie, j'ai jamais rien compris à systemD :( )

root : systemctl daemon-reload
root : systemctl enable epenser.service
root : systemctl add-wants $(systemctl get-default) epenser.service

En théorie, à partir de là, le service est installé. Si on redémarre le système, le service se lancera au démarrage. Seul problème : Impossible de l'arrêter. TODO : Modifier le script pour qu'on puisse l'arrêter.