summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dockerignore2
-rw-r--r--Dockerfile17
-rw-r--r--backend_api.py5
-rw-r--r--bot.py18
-rw-r--r--botlogging.py22
-rw-r--r--docker-compose.yml7
-rw-r--r--rules.jpgbin1216722 -> 3760725 bytes
-rw-r--r--states.py14
8 files changed, 64 insertions, 21 deletions
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..5237f0f
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+venv
+db.sqlite3 \ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..8489469
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,17 @@
+FROM python:3.7-alpine
+
+WORKDIR /app
+COPY . .
+
+RUN apk add --update --no-cache --virtual .build-deps \
+ openssl-dev \
+ g++ \
+ libffi-dev && \
+ apk add --update --no-cache \
+ tzdata \
+ git && \
+ pip install --no-cache-dir -r requirements.txt && \
+ apk del .build-deps && \
+ rm -rf /var/cache/apk/*
+
+CMD [ "python3", "bot.py" ] \ No newline at end of file
diff --git a/backend_api.py b/backend_api.py
index a8270a4..94841f9 100644
--- a/backend_api.py
+++ b/backend_api.py
@@ -1,15 +1,12 @@
import requests
import urllib
from config import BACKEND_URL
-import logging
import json
import datetime as dt
from typing import Tuple, Dict
-
-logger = logging.getLogger(__name__)
-logger.setLevel(logging.DEBUG)
+from botlogging import logger
def make_request(method: str, url: str, **kwargs) -> Tuple[int, Dict]:
diff --git a/bot.py b/bot.py
index 9609bb9..92b8a12 100644
--- a/bot.py
+++ b/bot.py
@@ -4,8 +4,7 @@ from telegram import ReplyKeyboardMarkup, ReplyKeyboardRemove, InlineKeyboardMar
# Typing
from telegram import Update, User, Bot
-import logging
-from os import environ
+from os import getenv
import json
from config import TG_TOKEN, REQUEST_KWARGS
@@ -17,11 +16,7 @@ from keyboards import (
from utils import *
from states import States, AdminStates
-logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
-logger = logging.getLogger(__name__)
-logger.setLevel(logging.DEBUG)
-
-raiseExceptions = True
+from botlogging import logger
def start(bot: Bot, update: Update, user_data: dict):
@@ -77,7 +72,14 @@ def error(bot, update, error):
def main():
- updater = Updater(TG_TOKEN, request_kwargs=REQUEST_KWARGS)
+ is_prod = getenv('production', '')
+
+ if is_prod:
+ print('PRODUCTION ENVIRONMENT')
+ updater = Updater(TG_TOKEN)
+ else:
+ print('DEVELOPMENT ENVIRONMENT')
+ updater = Updater(TG_TOKEN, request_kwargs=REQUEST_KWARGS)
dp = updater.dispatcher
dp.add_error_handler(error)
diff --git a/botlogging.py b/botlogging.py
new file mode 100644
index 0000000..6dc9d37
--- /dev/null
+++ b/botlogging.py
@@ -0,0 +1,22 @@
+import logging
+
+
+fh = logging.FileHandler("logs/log.log")
+fh.setLevel(logging.DEBUG)
+
+ch = logging.StreamHandler()
+ch.setLevel(logging.DEBUG)
+
+log_format = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
+fh.setFormatter(log_format)
+ch.setFormatter(log_format)
+
+logging.basicConfig(
+ level=logging.DEBUG, handlers=[fh, ch],
+ format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
+)
+
+logger = logging.getLogger(__name__)
+logger.setLevel(logging.DEBUG)
+logger.addHandler(fh)
+logger.addHandler(ch) \ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..15fe287
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,7 @@
+version: '3'
+
+services:
+ tgquiz-bot:
+ build: .
+ container_name: tgquiz_bot
+ command: sh -c "python3 bot.py"
diff --git a/rules.jpg b/rules.jpg
index 3e40f8b..99ca7f7 100644
--- a/rules.jpg
+++ b/rules.jpg
Binary files differ
diff --git a/states.py b/states.py
index bb1455d..00203b0 100644
--- a/states.py
+++ b/states.py
@@ -9,16 +9,12 @@ import backend_api
from time import sleep
import datetime as dt
from decimal import Decimal
-import logging
# Typing
from telegram import Update, User, Bot
from typing import List
-
-logger = logging.getLogger(__name__)
-logger.setLevel(logging.DEBUG)
-raiseExceptions = True
+from botlogging import logger
def save_state(func):
@@ -476,7 +472,7 @@ class AdminStates:
for profile in profiles:
ids.append(int(profile["tg_id"]))
- return AdminStates.send_to_ids(ids, update.message.text, bot, update)
+ return AdminStates.send_to_ids(ids, "ОБЪЯВЛЕНИЕ ОТ МОДЕРАТОРОВ:", update.message.text, bot, update)
@staticmethod
@save_state
@@ -504,14 +500,14 @@ class AdminStates:
return ADMIN_TASK_PUBLISHED
else:
- return AdminStates.send_to_ids(ids, msg, bot, update)
+ return AdminStates.send_to_ids(ids, "СООБЩЕНИЕ ОТ МОДЕРАТОРОВ:", msg, bot, update)
@staticmethod
- def send_to_ids(ids: List[int], message: str, bot: Bot, update: Update):
+ def send_to_ids(ids: List[int], prefix: str, message: str, bot: Bot, update: Update):
errors = []
for tg_id in ids:
try:
- bot.send_message(tg_id, message)
+ bot.send_message(tg_id, f"*{prefix}*\n\n{message}", parse_mode="Markdown")
print(tg_id)
except Exception as e:
logger.debug(f"Got exception while announcing message: {e}")