diff --git a/Dockerfile b/Dockerfile index 90fd46c..d1921ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,6 @@ RUN adduser \ USER covidbot WORKDIR /home/covidbot/ ENV PATH="${PATH}:/home/covidbot/.local/bin" -RUN echo "${PATH}" COPY Pipfile Pipfile diff --git a/Dockerfile_report b/Dockerfile_report new file mode 100644 index 0000000..05809e5 --- /dev/null +++ b/Dockerfile_report @@ -0,0 +1,33 @@ +# Pull Python 3.8.1 on alpine +FROM python:3.8.1-alpine + +RUN apk --no-cache add gcc \ + musl-dev \ + python3-dev + +# Create a new user to run as and set the working directory +ENV USER=covidreport +ENV UID=991 +ENV GID=991 + +RUN addgroup -g "${GID}" covidreport +RUN adduser \ + --disabled-password \ + --gecos "" \ + --home "/home/covidreport" \ + --ingroup "${USER}" \ + --uid "${UID}" \ + "${USER}" + +USER covidreport +WORKDIR /home/covidreport/ +ENV PATH="${PATH}:/home/covidreport/.local/bin" + +COPY Pipfile Pipfile + +RUN pip install pipenv +RUN pipenv install Pipfile + +COPY covid_report.py covid_report.py + +ENTRYPOINT [ "pipenv", "run", "python", "covid_report.py" ] \ No newline at end of file diff --git a/covid_bot.py b/covid_bot.py index 52195a2..26ad7b4 100644 --- a/covid_bot.py +++ b/covid_bot.py @@ -1,37 +1,10 @@ #!/bin/python -import discord -from discord.ext import commands -from lib.parse_data import update_data, get_covid_data, covid_db -from re import match -from datetime import datetime -from asyncio import sleep - - -class MyClient(discord.Client): - async def on_ready(self): - print('Logged on as', self.user) - - async def on_message(self, message): - # don't respond to ourselves - if(message.author == self.user): - return - - if(message.content == '!ping'): - await message.channel.send('pong') - - report_match = match(r'(!report )([a-zA-Z\-\_\. ]+)', message.content) - if(report_match): - with open('.keys/report_channel_id') as cid: - channel = self.get_channel(int(cid.readline().strip())) - if(report_match.group(2).upper() == 'KEYS'): - await channel.send(covid_db.keys()) - else: - await channel.send(get_covid_data(report_match.group(2).upper())) +from lib.covidBot import covidBot if(__name__ == '__main__'): with open('.keys/bot_api.key') as key: discord_api_key = key.readline().strip() - client = MyClient() + client = covidBot() client.run(discord_api_key) diff --git a/covid_report.py b/covid_report.py new file mode 100644 index 0000000..d9d35a3 --- /dev/null +++ b/covid_report.py @@ -0,0 +1,12 @@ +#!/bin/python + +from discord import Client +from lib.covid_report_lib import background_task + + +if(__name__ == '__main__'): + with open('.keys/bot_api.key') as key: + discord_api_key = key.readline().strip() + client = Client() + client.loop.create_task(background_task(client)) + client.run(discord_api_key) diff --git a/docker-compose.yml b/docker-compose.yml index b2effcd..c5ac9b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,3 +11,13 @@ services: volumes: - ./lib:/home/covidbot/lib - ./.keys:/home/covidbot/.keys + covidreport: + build: + context: . + dockerfile: Dockerfile_report + image: covidreport:latest + user: covidreport + container_name: covidreport_container_service + volumes: + - ./lib:/home/covidreport/lib + - ./.keys:/home/covidreport/.keys diff --git a/lib/covidBot.py b/lib/covidBot.py new file mode 100644 index 0000000..4c94f6a --- /dev/null +++ b/lib/covidBot.py @@ -0,0 +1,23 @@ +from discord import Client +from re import match +from lib.parse_data import update_data, get_covid_data, covid_db + + +class covidBot(Client): + async def on_ready(self): + print('Logged on as', self.user) + + async def on_message(self, message): + # don't respond to ourselves + if(message.author == self.user): + return + + if(message.content == '!ping'): + await message.channel.send('pong') + + report_match = match(r'(!report )([a-zA-Z\-\_\. ]+)', message.content) + if(report_match): + if(report_match.group(2).upper() == 'KEYS'): + await message.channel.send(covid_db.keys()) + else: + await message.channel.send(get_covid_data(report_match.group(2).upper())) diff --git a/daily_report.py b/lib/covid_report_lib.py similarity index 59% rename from daily_report.py rename to lib/covid_report_lib.py index a8c953a..9665660 100644 --- a/daily_report.py +++ b/lib/covid_report_lib.py @@ -1,9 +1,9 @@ #!/bin/python -import discord -from discord.ext import commands -from parse_data import update_data, get_covid_data, covid_db -from re import match +try: + from parse_data import update_data, get_covid_data +except: + from lib.parse_data import update_data, get_covid_data from datetime import datetime from asyncio import sleep @@ -15,17 +15,9 @@ async def background_task(client): while not client.is_closed(): current_hour_and_minute = [int(t) for t in str( datetime.now().time()).split(':')[:-1]] - if(current_hour_and_minute[0] == 12 and (current_hour_and_minute[1] == 0)): + if(current_hour_and_minute[0] == 4 and (current_hour_and_minute[1] == 34)): update_data() await channel.send('Daily report from: https://www.worldometers.info/coronavirus/') await channel.send(get_covid_data('USA')) await channel.send(get_covid_data('TOTAL')) await sleep(60) - - -if(__name__ == '__main__'): - with open('.keys/bot_api.key') as key: - discord_api_key = key.readline().strip() - client = discord.Client() - client.loop.create_task(background_task(client)) - client.run(discord_api_key)