Merge branch 'master' into changelog

This commit is contained in:
Abigail Gold 2019-11-06 00:47:39 -05:00
commit 5e427b0140
No known key found for this signature in database
GPG Key ID: 80A676456AB6B045
9 changed files with 134 additions and 35 deletions

1
.dockerignore Normal file
View File

@ -0,0 +1 @@
data/

1
.gitignore vendored
View File

@ -7,6 +7,7 @@ cty.json
cty.zip
botenv/
data/
#########################################################

35
Dockerfile Normal file
View File

@ -0,0 +1,35 @@
FROM python:3-alpine
COPY . /app
WORKDIR /app
ENV PYTHON_BIN python3
RUN \
echo "**** install build packages ****" && \
apk add --no-cache --virtual=build-dependencies \
g++ \
git \
gcc \
libxml2-dev \
libxslt-dev \
libressl-dev \
python3-dev && \
echo "**** install runtime packages ****" && \
apk add --no-cache \
libressl \
py3-lxml \
py3-pip \
python3 && \
echo "**** install pip packages ****" && \
pip3 install -U pip setuptools wheel && \
pip3 install -r requirements.txt && \
echo "**** clean up ****" && \
apk del --purge \
build-dependencies && \
rm -rf \
/root/.cache \
/tmp/* \
/var/cache/apk/*
CMD ["/bin/sh", "run.sh", "--pass-errors", "--no-botenv"]

View File

@ -1,31 +1,24 @@
# A quick installation script for discord bots.
#
# A quick installation script for painless discord bots.
# v1.1.0
# Copyright (c) 2019 0x5c
# Released under the terms of the MIT license.
#
# https://github.com/0x5c/discord.py-quickinstall
# Part of:
# https://github.com/0x5c/quick-bot-no-pain
#### Setup ####
.DEFAULT_GOAL := help
## Variables ##
### Variables ###
# Those are the defaults; they can be over-ridden if specified
# at en environment level or as 'make' arguments.
BOTENV ?= botenv
PY3DOT ?= 7
PIP_OUTPUT ?= q
PYTHON_BIN ?= python3.7
PIP_OUTPUT ?= -q
# Define some rules as phony
.PHONY: help install clean onlyenv
#### Targets ####
## Support targets ##
### Support targets ###
.PHONY: help
help:
@echo ""
@echo "\033[97m>>>>>> Default dummy target <<<<<<"
@ -35,16 +28,17 @@ help:
@echo "\033[0m"
## Actual install/setup targets ##
### Actual install/setup targets ###
# Main install target
.PHONY: install
install: $(BOTENV)/req_done options.py keys.py
# Virual environment setup
$(BOTENV)/success:
ifneq ("$(wildcard ./$(BOTENV).)",)
@echo "\033[94m--> Creating the virtual environment...\033[0m"
@python3.$(PY3DOT) -m venv $(BOTENV)
@$(PYTHON_BIN) -m venv $(BOTENV)
@touch $(BOTENV)/success
endif
@ -52,17 +46,21 @@ endif
$(BOTENV)/req_done: requirements.txt $(BOTENV)/success
@echo "\033[34;1m--> Installing the dependencies...\033[0m"
@. $(BOTENV)/bin/activate; \
pip install -${PIP_OUTPUT} -U pip setuptools wheel; \
pip install -${PIP_OUTPUT} -U -r requirements.txt
pip install ${PIP_OUTPUT} -U pip setuptools wheel; \
pip install ${PIP_OUTPUT} -U -r requirements.txt
@touch $(BOTENV)/req_done
data:
mkdir data
# Copying templates
options.py keys.py:
options.py keys.py: | data
@echo "\033[34;1m--> Copying template files...\033[0m"
@cp -nv ./templates/template_$@ ./$@
@touch ./$@
@cp -nv ./templates/template_$@ ./data/$@
@touch ./data/$@
# Deletes the python cache and the virtual environment
.PHONY: clean
clean:
@echo "\033[34;1m--> Removing python cache files...\033[0m"
rm -rf __pycache__
@ -70,8 +68,9 @@ clean:
rm -rf $(BOTENV)
## Dev targets ##
### Dev targets ###
## Weird dev targets ##
### Special targets ###
.PHONY: onlyenv
onlyenv: $(BOTENV)/success

11
README-DOCKER.md Normal file
View File

@ -0,0 +1,11 @@
A sample `docker-compose.yml` file:
```yaml
version: '3'
services:
bot:
image: "classabbyamp/discord-qrm-bot:latest"
container_name: "qrmbot"
volumes:
- "./data:/app/data:rw"
```

View File

@ -4,6 +4,26 @@ A discord bot with ham radio functionalities.
An independent rewrite of qrmbot-discord.
## Running
### Docker
See [README-DOCKER.md](./README-DOCKER.md)
### Without Docker
Prep the environment. For more information on extra options, see the [quick-bot-no-pain Makefile documentation](https://github.com/0x5c/quick-bot-no-pain/blob/master/docs/makefile.md).
```
$ make install
```
Run. For more information on options, see the [quick-bot-no-pain run.sh documentation](https://github.com/0x5c/quick-bot-no-pain/blob/master/docs/run.sh.md).
```
$ run.sh
```
## Copyright
Copyright (C) 2019 Abigail Gold, 0x5c

7
docker-compose.yml Normal file
View File

@ -0,0 +1,7 @@
version: '3'
services:
bot:
build: .
container_name: "qrmbot"
volumes:
- "./data:/app/data:rw"

View File

@ -15,8 +15,8 @@ from discord.ext import commands, tasks
import info
import options as opt
import keys
from data import options as opt
from data import keys
# --- Settings ---

41
run.sh
View File

@ -1,7 +1,7 @@
#!/bin/bash
#!/bin/sh
# A wrapper script for painless discord bots.
# v1.0.0
# v1.2.0
# Copyright (c) 2019 0x5c
# Released under the terms of the MIT license.
# Part of:
@ -9,13 +9,34 @@
# If $BOTENV is not defined, default to 'botenv'
if [[ -z ${BOTENV+x} ]]; then
if [ -z "$BOTENV" ]; then
BOTENV='botenv'
fi
# Argument handling # ? TODO: Argument passing ?
if [[ $1 == '--pass-errors' ]]; then
_PASS_ERRORS=1
# Argument handling
_PASS_ERRORS=0
_NO_BOTENV=0
while [ ! -z "$1" ]; do
case $1 in
--pass-errors)
_PASS_ERRORS=1
;;
--no-botenv)
_NO_BOTENV=1
;;
--)
shift
break
;;
esac
shift
done
# If $PYTHON_BIN is not defined, default to 'python3.7'
if [ $_NO_BOTENV -eq 1 -a -z "$PYTHON_BIN" ]; then
PYTHON_BIN='python3.7'
fi
@ -31,7 +52,7 @@ code_handling() {
return # The bot whishes to be restarted (returns to the loop).
;;
*)
if [[ $_PASS_ERRORS -eq 0 ]]; then # The bot crashed and:
if [ $_PASS_ERRORS -eq 0 ]; then # The bot crashed and:
echo "$_message: restarting"
return # ...we should return to the loop to restart it.
else
@ -47,7 +68,11 @@ echo "$0: Starting bot..."
# The loop
while true; do
./$BOTENV/bin/python3 main.py
if [ $_NO_BOTENV -eq 1 ]; then
"$PYTHON_BIN" main.py $@
else
./$BOTENV/bin/python3 main.py $@
fi
err=$?
_message="$0: The bot exited with [$err]"
code_handling