Compare commits
11 Commits
12ce9b1906
...
d40dd2c81d
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d40dd2c81d | ||
![]() |
39e02f3759 | ||
c1ffaca96b | |||
![]() |
0e07ebdc61 | ||
![]() |
86a3b891f1 | ||
![]() |
f63ce9ee90 | ||
![]() |
2ebba22478 | ||
![]() |
7ce43cf4b6 | ||
![]() |
50d9d1c953 | ||
![]() |
ea6f5e2ca4 | ||
70d2f4ce52 |
@ -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
|
||||
|
@ -3,9 +3,7 @@ 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"))
|
||||
|
||||
@ -18,7 +16,5 @@ 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()
|
||||
|
@ -1,4 +1,5 @@
|
||||
import datetime
|
||||
import logging
|
||||
from random import choice
|
||||
|
||||
from telebot.types import Message, ReplyKeyboardRemove
|
||||
@ -13,6 +14,15 @@ 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
|
||||
@ -20,7 +30,6 @@ 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})
|
||||
@ -43,6 +52,14 @@ 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'],
|
||||
@ -145,6 +162,21 @@ 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:
|
||||
|
@ -13,12 +13,7 @@ def main_keyboard(telegram_id):
|
||||
kb.row("Ежедневные уведомления")
|
||||
alice_exp = platform.get_experiment('alice')
|
||||
try:
|
||||
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)
|
||||
from helpers.answer import User
|
||||
user = User(telegram_id)
|
||||
alice_exp_enabled = alice_exp['enabled'] and eval(alice_exp['condition'])
|
||||
except Exception as exc:
|
||||
|
@ -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)
|
||||
|
@ -22,6 +22,7 @@ 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()
|
||||
@ -32,7 +33,7 @@ class PlatformClient:
|
||||
sleep(30)
|
||||
self.fetch()
|
||||
|
||||
Thread(target=inner).start()
|
||||
Thread(target=inner, daemon=True).start()
|
||||
|
||||
def poll_data(self):
|
||||
self.fetch(with_exception=True)
|
||||
@ -63,6 +64,10 @@ 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,
|
||||
@ -70,6 +75,10 @@ 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':
|
||||
@ -98,18 +107,10 @@ 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 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']
|
||||
for key, value in kwargs.items():
|
||||
if value in self.staff_storage[key]:
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_config(self, name):
|
||||
return self.config_storage[name]
|
||||
|
Loading…
Reference in New Issue
Block a user