Example #1
0
def cron_unlock_users():
    while True:
        User.objects(is_blocked=True).update(is_blocked=False)
        minute = 60
        hour = 60 * minute
        day = 24 * hour
        time.sleep(2 * day)
Example #2
0
 def get(self, telegram_id=None):
     if telegram_id:
         user = User.objects(telegram_id=telegram_id)
         return json.loads(user.to_json())
     else:
         users = User.objects()
         return json.loads(users.to_json())
Example #3
0
 def post(self):
     try:
         UserSchema().load(request.json)
     except ValidationError as e:
         return str(e)
     user = User(**request.json)
     user.save()
     return UserSchema().dump(user)
Example #4
0
def cron_unlock_users():
    """
    Функция, которая предназначена для переодичной разблокировки заблокированных пользователей.
    1. Обработка всех юзеров;
    2. Два дня сон;
    3. Обрабртка всех юзеров;
    4. ...
    """
    while True:
        User.objects(is_block=True).update(is_block=False)
        minute = 60
        hour = 60 * minute
        day = 24 * hour
        time.sleep(2 * day)
Example #5
0
    def send_message(self):
        users = self._users.filter(is_blocked=False)
        blocked_ids = []
        for u in users:
            try:
                bot.send_message(u.telegram_id, **self._message_data)
            except ApiException as e:
                if e.error_code == 403:
                    blocked_ids.append(u.telegram_id)
                else:
                    raise e

            time.sleep(0.1)

        User.objects(telegram_id=blocked_ids).update(is_blocked=True)
Example #6
0
 def post(self):
     try:
         NewsSchema().load(request.json)
     except ValidationError as e:
         return str(e)
     news = extra_models.News(**request.json)
     news.save()
     s = sending_news.Sender(User.objects(), text=news)
     s.send_message()
     return NewsSchema().dump(news)
Example #7
0
 def send_message(self):
     """
     По созданному объекту делает рассылку юзерам. Во избежания блокировки перегрузки сервера собщениями,
     используем time.sleep()
     """
     blocked_ids = [
     ]  # создаем список юзеров, которых отлавливаем в процессе отправки сообщения
     users = self._users.filter(is_block=False)
     for u in users:
         try:
             bot.send_message(u.telegram_id, **self._message_data)
         except ApiException as e:
             # print(dir(e))   # вначале проверим где именно лежит исключение 403, так как ApiException вляется
             # параметром ошбки. Для этого вызываем метод дир, который покажет все содержимое от ApiException
             if e.error_code == 403:
                 blocked_ids.append(u.telegram_id)
             else:
                 raise e
         time.sleep(0.1)
     User.objects(telegram_id__in=blocked_ids).update(is_block=True)
Example #8
0
 def post(self):
     try:
         NewsSchema().load(request.json)
     except ValidationError as e:
         return {'text': str(e)}
     news = News(**request.json)
     news.save()
     news.reload()
     show_news = f' {news.title}\n{news.body}'
     s = Sender(User.objects(), text=show_news)
     s.send_message()
     news.reload()
     return NewsSchema().dump(news)
Example #9
0
 def get(self, id=None):
     if id:
         return UserSchema().dump(User.objects.get(telegram_id=id))
     else:
         return UserSchema().dump(User.objects(), many=True)
Example #10
0
        reply_markup=kb
    )


@bot.callback_query_handler(lambda c: json.loads(c.data)['tag'] == constants.NAME_TAG)
def handle_change_name(call):
    telegram_id = json.loads(call.data)['id']
    user = User.objects.get(telegram_id=telegram_id)
    user.modify(is_status_change=constants.FIRST_NAME)
    bot.send_message(
        call.message.chat.id,
        'Напишите имя'
    )


@bot.message_handler(func=lambda message: User.get_status_change(message.chat.id) == constants.FIRST_NAME)
def user_entering_name(message):
    first_name = f'{message.text}'
    user = User.objects.get(telegram_id=message.chat.id)
    user.modify(is_status_change=0, first_name=first_name)
    data = user.formatted_data()
    kb = inline_kb_from_dict(constants.SETTINGS_KB, user.telegram_id)
    bot.send_message(message.chat.id, data, reply_markup=kb)


@bot.callback_query_handler(lambda c: json.loads(c.data)['tag'] == constants.PHONE_TAG)
def handle_change_phone(call):
    telegram_id = json.loads(call.data)['id']
    user = User.objects.get(telegram_id=telegram_id)
    user.modify(is_status_change=constants.PHONE)
    bot.send_message(
Example #11
0
from shop.bot.sending_news import Sender
from shop.models.shop_models import User

s = Sender(User.objects(), text='Рассылка')

s.send_message()
Example #12
0
 def delete(self, telegram_id):
     user = User.objects(telegram_id=telegram_id)
     user.delete()
     text = f'Пользователь удален'
     return text
Example #13
0
 def put(self, telegram_id):
     user = User.objects(telegram_id=telegram_id)
     user.update(**request.json)
     user.reload()
     return json.loads(user.to_json())