def get_languages_message_count(language_to_search=None):
     languages = Texts.objects().only('language').distinct(
             'language') if language_to_search is None else Texts.objects(language=language_to_search).only(
             'language')
     count = {}
     for language in languages:
         count[language] = Texts.objects(language=language).count()
     return count
def index(bot, update, args):
    if len(args) is 0:
        from models import Texts
        available_languages = Texts.objects().only('language').distinct('language')
        for language in available_languages:
            db.index_messages_by_language(language, True)
    else:
        language_chosen = args[0]
        logging.info(args)

        db.index_messages_by_language(language_chosen)
        bot.sendMessage(chat_id=update.message.chat_id, text="Messages indexed")
 def index_messages_by_language(language, indexed=False):
     texts_by_language = Texts.objects(language=language, indexed=indexed)
     message_2_index = ''
     for message in texts_by_language:
         message_2_index += "%s\n" % message.text
         message.update(indexed=True)
     try:
         os.makedirs('./messages')
     except OSError:
         pass
     with open('./messages/%s.txt' % language, 'a+') as messages_text:
         messages_text.write(message_2_index)
     return texts_by_language
Exemple #4
0
def notify_admins(self, order):
    admins = User.objects(bot=order.user.bot, is_admin=True)
    texts = Texts.objects(bot_id=str(order.user.bot.id)).first()

    if not admins:
        return

    for admin in admins:
        if order.user.username:
            username = f'@{order.user.username}'
        else:
            username = '******'
        message_text = texts['new_order_msg'].format(
            order.user.user_id, order.user.first_name, order.user.last_name,
            username, order.city_name, order.district_name, order.good_name,
            order.payment_name, order.code)
        self._bot.send_message(admin.user_id,
                               message_text,
                               parse_mode='markdown')
Exemple #5
0
def send_leads_summary(self, user):
    texts = Texts.objects().first()
    l_texts = LeadTexts.objects().first()
    if not user.tax:
        user.tax = defaults.tax
    l_requests = LeadRequest.objects(user=user)
    total = len(l_requests)
    today = len(
        [r for r in l_requests if r.date.date() == datetime.today().date()])
    pending = len([r for r in l_requests if not r.approved])
    approved = len([r for r in l_requests if r.approved])
    self._bot.send_message(
        user.user_id,
        l_texts['summary_msg'].format(user.tax, total, today, pending,
                                      approved, user.balance),
        reply_markup=keyboards.set_leads_keyboard(texts,
                                                  l_texts,
                                                  withdraw_btn=user.balance
                                                  and user.wallet),
        parse_mode='markdown')
Exemple #6
0
    def create_wallet(self, bot_id):
        if request.form:
            not_for_all = False
            wallet = request.form['greet_msg']
            for key in request.form:
                try:
                    if key != 'greet_msg':
                        bot_id = request.form[key]
                        text = Texts.objects(bot_id=bot_id)
                        if str(text) != "[]":
                            for i in text:
                                if str(i) != "None":
                                    i.greet_msg = wallet
                                    i.save()
                        else:
                            Texts(greet_msg=wallet,
                                  bot_id=bot_id,
                                  back_btn=BACKBTN,
                                  use_buttons_msg=USEBUTTONS,
                                  choose_good_msg=CHOOSEGOOD,
                                  choose_city_msg=CHOOSESITY,
                                  choose_district_msg=CHOOSEDISTRICT,
                                  choose_payment_msg=CHOOSEPAYMENT,
                                  done_btn=DONE,
                                  leads_btn=LEADS,
                                  new_order_msg=NEWORDER,
                                  selected_good_msg=SELECTED,
                                  selected_good_msg2=SELECTED2).save()

                except Exception as e:
                    print(e)
                    not_for_all = True
                    flash('К боту ' + request.form[key] +
                          ' не удалось привязать greet msg')
            if not not_for_all:
                flash('Greet msg успешно привязано')

        return self.render('MyMsg.html',
                           bot_id=bot_id,
                           bots=BotProfile.objects())
Exemple #7
0
    def create_dub(self, bot_id, bot_2):
        try:
            telebot.TeleBot(bot_2).get_me()
        except Exception:
            return 'ERROR, go back'
        bot_2 = loads(
            BotProfile.objects(token=bot_2).first().to_json())['_id']['$oid']

        text = Texts.objects(bot_id=bot_id).first()

        if not (text is None):
            text_dict = loads(text.to_json())

            dub_text = {}

            for key in text_dict:
                if key != '_id':
                    dub_text.update({key: text_dict[key]})

            dub_text['bot_id'] = bot_2

            new_text = Texts(**dub_text)
            new_text.save()

        cities = City.objects(bot_id=bot_id)

        if cities is not None:
            for city in cities:
                if not (city is None):
                    city_dict = loads(city.to_json())

                    dub_city = {}

                    for key in city_dict:
                        if key != '_id':
                            dub_city.update({key: city_dict[key]})

                    dub_city['bot_id'] = bot_2

                    new_city = City(**dub_city)
                    new_city.save()
                    goods = Good.objects(city_id=city.id.binary.hex())

                    for good in goods:
                        if good is not None:
                            Good(name=good.name,
                                 city_id=new_city.id.binary.hex(),
                                 price=good.price,
                                 description=good.description,
                                 photo=good.photo,
                                 districts=good.districts).save()

        payment = Payment.objects(bot_id=bot_id).first()

        if not (payment is None):
            payment_dict = loads(payment.to_json())

            dub_payment = {}

            for key in payment_dict:
                if key != '_id':
                    dub_payment.update({key: payment_dict[key]})

            dub_payment['bot_id'] = bot_2

            new_payment = Payment(**dub_payment)
            new_payment.save()
        return str(bot_2)
Exemple #8
0
 def get_texts(self):
     return Texts.objects(bot_id=str(self.bot_id)).first()