Compare commits

..

No commits in common. "d40dd2c81d18de47e4a6791a01d92141a2b18aa4" and "12ce9b1906643d0163000cfc4ab6fa045c532817" have entirely different histories.

6 changed files with 29 additions and 53 deletions

View File

@ -19,7 +19,7 @@ services:
condition: any
placement:
constraints:
- node.role == worker
# - node.role == worker
- node.labels.zone == ru
update_config:
parallelism: 1
@ -41,7 +41,7 @@ services:
condition: any
placement:
constraints:
- node.role == worker
# - node.role == worker
- node.labels.zone == ru
update_config:
parallelism: 1
@ -63,7 +63,7 @@ services:
condition: any
placement:
constraints:
- node.role == worker
# - node.role == worker
- node.labels.zone == ru
update_config:
parallelism: 1
@ -87,7 +87,7 @@ services:
condition: any
placement:
constraints:
- node.role == worker
# - node.role == worker
- node.labels.zone == ru
update_config:
parallelism: 1

View File

@ -3,7 +3,9 @@ import os
import telebot
from telebot.types import Message
import settings
from helpers.mongo import mongo
from helpers.sprint_platform import platform
bot = telebot.TeleBot(os.getenv("TELEGRAM_TOKEN"))
@ -16,5 +18,7 @@ def on_start(message: Message):
@bot.message_handler()
def do_action(message: Message):
if settings.STAGE == 'development' and not platform.is_staff(telegram_id=message.chat.id):
return
from helpers.answer import Answer
Answer(message).process()

View File

@ -1,5 +1,4 @@
import datetime
import logging
from random import choice
from telebot.types import Message, ReplyKeyboardRemove
@ -14,15 +13,6 @@ from helpers.sprint_platform import platform
from helpers.ruz import ruz
class User:
def __init__(self, telegram_id):
self.telegram_id = telegram_id
@property
def platform_staff(self):
return platform.is_staff(telegram_id=self.telegram_id)
class Answer:
user: dict
@ -30,6 +20,7 @@ class Answer:
message_text: str
def __init__(self, message: Message):
self.message = message
self.message = message
self.message_text = message.text or message.caption or ""
user = mongo.users_collection.find_one({"chat_id": message.chat.id})
@ -52,14 +43,6 @@ class Answer:
self.user = user
def process(self):
user = User(self.user['chat_id'])
try:
bot_enabled_exp = platform.get_experiment('bot_enabled')
if not bot_enabled_exp['enabled'] or not eval(bot_enabled_exp['condition']):
return
except Exception as exc:
logging.info(exc)
return
getattr(
self,
"handle_state_" + self.user['state'],
@ -162,21 +145,6 @@ class Answer:
self.set_state("reset")
return
elif self.message_text == "Подключение Алисы":
alice_exp = platform.get_experiment('alice')
telegram_id = self.user['chat_id']
try:
user = User(telegram_id)
alice_exp_enabled = alice_exp['enabled'] and eval(alice_exp['condition'])
except Exception as exc:
logging.info(exc)
alice_exp_enabled = False
if not alice_exp_enabled:
self.send_message(
'Эта функция еще не работает!',
reply_markup=main_keyboard(self.user['chat_id']),
parse_mode='Markdown'
)
return
if self.user.get('yandex_id', None) is None:
words = platform.get_config('words')
while True:

View File

@ -13,7 +13,12 @@ def main_keyboard(telegram_id):
kb.row("Ежедневные уведомления")
alice_exp = platform.get_experiment('alice')
try:
from helpers.answer import User
class User:
def __init__(self, telegram_id):
self.telegram_id = telegram_id
@property
def platform_staff(self):
return platform.is_staff(telegram_id=self.telegram_id)
user = User(telegram_id)
alice_exp_enabled = alice_exp['enabled'] and eval(alice_exp['condition'])
except Exception as exc:

View File

@ -39,7 +39,7 @@ class RUZ:
del data['stream_links']
def get_schedule(self, user: dict, begin_date: datetime.datetime):
start_date_str = begin_date.strftime("%Y-%m-%d")
start_date_str = begin_date.strftime("%Y.%m.%d")
search_str = settings.RUZ_API + f"v3/ruz/lessons?start={start_date_str}&offset=30&email={user['email']}"
try:
data = get(search_str)

View File

@ -22,7 +22,6 @@ class PlatformClient:
self.fetch_url = urllib.parse.urljoin(self.endpoint, 'fetch')
self.config_storage = {}
self.experiment_storage = {}
self.staff_storage = {}
self.poll_data()
if need_poll:
self.poll_data_in_thread()
@ -33,7 +32,7 @@ class PlatformClient:
sleep(30)
self.fetch()
Thread(target=inner, daemon=True).start()
Thread(target=inner).start()
def poll_data(self):
self.fetch(with_exception=True)
@ -64,10 +63,6 @@ class PlatformClient:
local_platform = json.loads(open('local_platform.json', 'r').read())
self.config_storage = local_platform['configs']
self.experiment_storage = local_platform['experiments']
self.staff_storage = {
key: set(value)
for key, value in local_platform['platform_staff'].items()
}
return
response_data = self.request_with_retries(self.fetch_url, {
'project': self.app_name,
@ -75,10 +70,6 @@ class PlatformClient:
}, with_exception)
self.config_storage = response_data['configs']
self.experiment_storage = response_data['experiments']
self.staff_storage = {
key: set(value)
for key, value in response_data['platform_staff'].items()
}
def fetch_configs(self, with_exception=False):
if self.stage == 'local':
@ -107,10 +98,18 @@ class PlatformClient:
self.experiment_storage[experiment] = response_data
def is_staff(self, **kwargs):
if self.stage == 'local':
local_platform = json.loads(open('local_platform.json', 'r').read())
local_staff = local_platform['staff']
for element in local_staff:
for key, value in kwargs.items():
if value in self.staff_storage[key]:
if element[key] == value:
return True
return False
response_data = self.request_with_retries(self.staff_url, kwargs)
if response_data is None:
return False
return response_data['is_staff']
def get_config(self, name):
return self.config_storage[name]