131 lines
2.2 KiB
Bash
131 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
||
#COMMANDE:
|
||
#```bash
|
||
#bash revolt_bot.sh \
|
||
# -t 'JETON' \
|
||
# -s 'STATUT'
|
||
#```
|
||
#COMMANDE:
|
||
#```bash
|
||
#bash revolt_bot.sh \
|
||
# -t 'JETON' \
|
||
# -c 'SALON' \
|
||
# -m 'TEXTE'
|
||
#```
|
||
#NOTE : pour cURL et la partie Python
|
||
#```bash
|
||
#sudo apt install curl
|
||
#pip install py-ulid
|
||
#```
|
||
declare BOT_TOKEN
|
||
declare STATUS
|
||
declare CHANNEL_ID
|
||
declare MESSAGE
|
||
T_FLAG=0
|
||
S_FLAG=0
|
||
C_FLAG=0
|
||
M_FLAG=0
|
||
function presence()
|
||
{
|
||
#$1: 'Online'|'Idle'
|
||
echo 'Présence du bot :'
|
||
curl -H "x-bot-token: $BOT_TOKEN" \
|
||
-X 'PATCH' \
|
||
--data """
|
||
{
|
||
\"status\": {
|
||
\"text\": \"$1\",
|
||
\"presence\": \"$1\"
|
||
}
|
||
}
|
||
""" \
|
||
-w "\n%{http_code}\n" \
|
||
-- 'https://api.revolt.chat/users/@me'
|
||
echo
|
||
}
|
||
function message()
|
||
{
|
||
#$1: $CHANNEL_ID
|
||
#$2: $MESSAGE
|
||
ULID=$( python ./revolt_bot.py )
|
||
echo 'Message à mon salon :'
|
||
curl -H "x-bot-token: $BOT_TOKEN" \
|
||
--data """
|
||
{
|
||
\"content\": \"$2\",
|
||
\"nonce\": \"$ULID\"
|
||
}
|
||
""" \
|
||
-- "https://api.revolt.chat/channels/$1/messages/"
|
||
echo
|
||
}
|
||
#Premier examen si aide.
|
||
if [[ $1 == '-h' ]] || [[ $1 == '--help' ]]
|
||
then
|
||
echo -e """
|
||
$0 (-h|--help)
|
||
$0 (-t|--token) BOT_TOKEN (-s|--status) (on|off)
|
||
$0 (-t|--token) BOT_TOKEN (-c|--channel) CHANNEL_ID (-m|--message|--) MESSAGE
|
||
"""
|
||
exit 0
|
||
fi
|
||
#Examens suivants si pas d’aide.
|
||
#Balayage des arguments par paires.
|
||
for NB in {0..10}
|
||
do
|
||
case $1 in
|
||
('-t'|'--token')
|
||
if [[ $2 != "" ]]
|
||
then
|
||
BOT_TOKEN=$2
|
||
T_FLAG=1
|
||
fi
|
||
shift 2;;
|
||
|
||
('-s'|'--status')
|
||
case $2 in
|
||
('on')
|
||
STATUS='Online'
|
||
S_FLAG=1;;
|
||
('off')
|
||
STATUS='Idle'
|
||
S_FLAG=1;;
|
||
(*);;
|
||
esac
|
||
shift 2;;
|
||
|
||
('-c'|'--channel')
|
||
if [[ $2 != "" ]]
|
||
then
|
||
CHANNEL_ID=$2
|
||
C_FLAG=1
|
||
fi
|
||
shift 2;;
|
||
|
||
('-m'|'--message'|'--')
|
||
if [[ $2 == "" ]]
|
||
then
|
||
MESSAGE=""
|
||
else
|
||
MESSAGE=$2
|
||
fi
|
||
M_FLAG=1
|
||
shift 2;;
|
||
|
||
(*)
|
||
if [[ $T_FLAG == 1 ]] && [[ $S_FLAG == 1 ]]
|
||
then
|
||
presence $STATUS
|
||
exit 0
|
||
elif [[ $T_FLAG == 1 ]] && [[ $C_FLAG == 1 ]] && [[ $M_FLAG == 1 ]]
|
||
then
|
||
message $CHANNEL_ID $MESSAGE
|
||
exit 0
|
||
else
|
||
echo 'Erreur: mauvais arguments.'
|
||
echo 'Taper '$0' --help.'
|
||
exit 1
|
||
fi;;
|
||
esac
|
||
done
|