Пример #1
0
def pr_menu_sort(bot, update, user_data):
    query = update.callback_query
    user = Users.objects.get(telegram_id=query.from_user.id)
    if 'i_subcategory' in query.data:
        user_data['category_name'] = query.data[13:]
    else:
        pass
    user.params += '/Sorting'
    user.save()
    #user_data['category_name'] = query.data[13:]
    context = {'Lang': user.lang}
    msg = loader.get_template(
        'bot/Mutual_PR/Telegram/pr_menu/pr_menu_sort.html').render(context)
    keyboard = InlineKeyboardMarkup(
        [[
            ikb(user.GetButtons('Подписчики 🔼'),
                callback_data='inst_sorting_followers_up'),
            ikb(user.GetButtons('Подписчики 🔽'),
                callback_data='inst_sorting_followers_down')
        ],
         [
             ikb(user.GetButtons('Сначала новые 🕓'),
                 callback_data='inst_sorting_date_new'),
             ikb(user.GetButtons('Сначала старые 🕑'),
                 callback_data='inst_sorting_date_old')
         ], [ikb(user.GetButtons('«'), callback_data='back_inline')]])
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #2
0
def feedback(bot, update):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params += '/Feedback'
    user.save()
    keyboard = InlineKeyboardMarkup([
        [ikb(user.GetButtons('✉️ Написать сообщение'), callback_data='pa_feedback_create')],
        [ikb(user.GetButtons('«'), callback_data='back_inline')]
    ])
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/PersonalArea/Feedback/feedback.html').render(context)
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #3
0
def broadcast_menu(bot, update):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params += '/Broadcast'
    user.save()
    keyboard = InlineKeyboardMarkup([[
        ikb('Rus', callback_data='broadcast_Rus'),
        ikb('Eng', callback_data='broadcast_Eng')
    ], [ikb('Uzb', callback_data='broadcast_Uzb')]])
    user.SendMessage(bot=bot,
                     msg='Выберите локализацию для рассылки',
                     keyboard=keyboard,
                     save_massage_id=True)
Пример #4
0
def support(bot, update):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params += '/Support'
    user.save()
    keyboard = InlineKeyboardMarkup([[
        ikb(user.GetButtons('🤖 Проголосовать в StoreBot'),
            url='https://google.com')
    ], [ikb(user.GetButtons('«'), callback_data='back_inline')]])
    context = {'Lang': user.lang}
    msg = loader.get_template(
        'bot/PersonalArea/SupportProject/support.html').render(context)
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #5
0
def delete_ad_confirm(bot, update):
    query = update.callback_query
    user = Users.objects.get(telegram_id=query.from_user.id)
    ad = Ad.objects.get(id=query.data[12:])
    user.params += '/' + str(ad.id)
    keyboard = InlineKeyboardMarkup([[
        ikb(user.GetButtons('Да'), callback_data='pa_delete_ad_yes'),
        ikb(user.GetButtons('Нет'), callback_data='pa_delete_ad_no')
    ]])
    context = {'Lang': user.lang, 'Ad': ad}
    msg = loader.get_template(
        'bot/PersonalArea/DeleteAd/delete_ad_confirm.html').render(context)
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #6
0
def mutual_menu(bot, update):
    if update.message:
        user = Users.objects.get(telegram_id=update.message.chat.id)
    elif update.callback_query:
        user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params = '/Mutual'
    user.save()
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/Mutual_PR/mutual_menu.html').render(context)
    keyboard = InlineKeyboardMarkup([
        [ikb(user.GetButtons('Instagram'), callback_data='MP_instagram'),
         ikb(user.GetButtons('Telegram'), callback_data='MP_telegram')]
    ])
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #7
0
def options(bot, update):
    query = update.callback_query
    chat_id = query.message.chat_id
    d = StrictRedis()
    l = sorted(d.hkeys(chat_id))
    choice = query.data
    if choice == "Messages":
        counter = int(d.hget(chat_id, '#msg'))
        for i in range(0, counter):
            k = d.hget(chat_id, 'msg' + str(i))
            annc_sub, annc_by, annc_body = k.split('|')
            if i == counter - 1:
                bot.send_message(text=annc_sub + '\n\n' + annc_by + '\n\n' +
                                 annc_body,
                                 chat_id=chat_id,
                                 reply_markup=markup_options)
            else:
                bot.send_message(text=annc_sub + '\n\n' + annc_by + '\n\n' +
                                 annc_body,
                                 chat_id=chat_id)

        return
    elif choice == "Resources":
        num_courses = int(d.hget(chat_id, '#course'))
        course_markup = []
        temp = []
        t = []
        for i in range(0, num_courses, 2):
            if i + 1 < num_courses:
                course_markup.append([
                    ikb('{}'.format(d.hget(chat_id, 'c{}'.format(i))),
                        callback_data='{}'.format(
                            d.hget(chat_id, 'c{}'.format(i)))),
                    ikb('{}'.format(d.hget(chat_id, 'c{}'.format(i + 1))),
                        callback_data='{}'.format(
                            d.hget(chat_id, 'c{}'.format(i + 1))))
                ])
            else:
                course_markup.append([
                    ikb('{}'.format(d.hget(chat_id, 'c{}'.format(i))),
                        callback_data='{}'.format(
                            d.hget(chat_id, 'c{}'.format(i))))
                ])
        bot.send_message(text="Choose Subject --",
                         chat_id=chat_id,
                         reply_markup=ikm(course_markup))

    else:
        update.message.reply_text("Sorry Wrong Input!")
        return
Пример #8
0
def view_ad(bot, update):
    query = update.callback_query
    user = Users.objects.get(telegram_id=query.from_user.id)
    user.params += '/ViewAd'
    user.save()
    ad = Ad.objects.get(id=query.data[6:])
    keyboard = InlineKeyboardMarkup([[
        ikb(user.GetButtons('📲 Связаться с администратором'),
            url='https://t.me/' + ad.creator.username)
    ], [ikb(user.GetButtons('«'), callback_data='back_inline')]])
    context = {'Lang': user.lang, 'Ad': ad}
    msg = loader.get_template(
        'bot/Mutual_PR/Telegram/pr_menu/view_ad.html').render(context)
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #9
0
def received_information(bot, update, user_data):
    p = StrictRedis()
    text = update.message.text
    reg_pattern = re.compile(r"^[0-9]*$")
    category = user_data['choice']
    bot.send_chat_action(chat_id=update.message.chat_id,
                         action=ChatAction.TYPING)
    if (category == 'Reg. Number'):
        if (re.match(reg_pattern, text) and len(text) <= 8):
            user_data[category] = text
            lock = threading.Lock()
            with lock:
                p.hset(update.message.chat_id, 'umsReg', text)
                del user_data['choice']
                update.message.reply_text("Now click on Password",
                                          reply_markup=markup_setup)
                return CHOOSING
        else:
            update.message.reply_text("Please enter a valid %s!" %
                                      user_data['choice'])
        return CHOOSING
    else:
        user_data[category] = text
        lock1 = threading.Lock()
        with lock1:
            p.hset(update.message.chat_id, 'umsPass', text)
            del user_data['choice']
            update.message.reply_text(
                "Thanks for entering Password!",
                reply_markup=ikm([[ikb('Load Data', callback_data='load')]]))
            return LOAD
Пример #10
0
def term_selector(bot, update):
    query = update.callback_query
    chat_id = query.message.chat_id
    regNumber = database(chat_id, 'regNumber')
    umsPass = database(chat_id, 'umsPass')
    time_stamp = time()
    sess_start = database(chat_id, 'sess_start')
    if time_stamp - float(sess_start) <= 180:
        pickled_sess = db.hget(chat_id, 'sess_obj')
        sess = pickle.loads(pickled_sess)
    else:
        home_page = homeData(bot, update, regNumber, umsPass, chat_id, query)
        if home_page:
            sess = db.hget(chat_id, 'sess_obj')
            sess = pickle.loads(sess)
        else:
            return
    mte = Midterm(sess)
    mte.token_creator(mte.base_page)
    term_list = mte.term_list
    keyboared = []
    for index, item in enumerate(term_list):
        if item != None:
            keyboared.append(
                [ikb(item, callback_data='term_{}_{}'.format(item, index))])
    reply_keyboared_term = ikm(keyboared)
    bot.send_message(text="Choose Term -",
                     chat_id=chat_id,
                     reply_markup=reply_keyboared_term)
Пример #11
0
def received_information(bot, update, user_data):
    chat_id = update.message.chat_id
    text = update.message.text
    reg_pattern = re.compile(r"^[0-9]*$")
    category = user_data['choice']
    regNumber = None
    umsPass = None
    bot.send_chat_action(chat_id=update.message.chat_id,
                         action=ChatAction.TYPING,
                         timeout=3)
    if (category == 'Reg. Number'):
        if (re.match(reg_pattern, text) and len(text) <= 8):
            user_data[category] = text
            db.hset(chat_id, 'regNumber', text)
            del user_data['choice']
            update.message.reply_text("Now click on Password",
                                      reply_markup=markup_reg)
            return CHOOSING
        else:
            update.message.reply_text("Please enter a valid %s!" %
                                      user_data['choice'])
        return TYPING_REPLY
    else:
        user_data[category] = text
        umsPass = text
        db.hset(chat_id, 'umsPass', umsPass)
        del user_data['choice']
        update.message.reply_text(
            "Thanks for entering Password!",
            reply_markup=ikm([[ikb('Load Data', callback_data='load')]]))
        return LOAD
Пример #12
0
def delme(bot, update):
    chat_id = update.message.chat_id
    db.delete(chat_id, '{}-msg'.format(chat_id),
              '{}-courselist'.format(chat_id), '{}-mte'.format(chat_id))
    update.message.reply_text(
        'Your data is erased.\nPlease press "Setup" to register.',
        reply_markup=ikm([[ikb('Setup', callback_data='Setup')]]))
    return -1
Пример #13
0
def edit_subcategory(bot, update):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params += '/Subcategory'
    user.save()
    ad = Ad.objects.get(id=int(re.findall('Editing/(\d+)', user.params)[0]))
    ads = Ad.objects.filter(creator=user)
    button_list = []
    node = MutualPRCategory.objects.get(category_name=ad.category)
    subcategories = node.get_children()
    for sub in subcategories:
        #button_list.append(ikb(sub.category_name, callback_data='pa_edit_subcat_'+sub.category_name))
        button_list.append(ikb(user.GetButtons(sub.category_name), callback_data='pa_edit_subcat_'+sub.category_name))
    button_list.append(ikb(user.GetButtons('«'), callback_data='back_inline'))
    context = {'Lang': user.lang,
               'Ad': ad}
    msg = loader.get_template('bot/PersonalArea/EditAd/edit_subcategory.html').render(context)
    user.SendMessage(bot=bot, msg=msg, keyboard=InlineKeyboardMarkup(build_menu(button_list, n_cols=2)), save_massage_id=True)
Пример #14
0
def ad_category(bot, update):
    if update.callback_query:
        user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    elif update.message:
        user = Users.objects.get(telegram_id=update.message.chat.id)
    ad = Ad.objects.create(creator=user)
    user.params += '/CreateAd'
    user.params += '/' + str(ad.id)
    user.save()
    category = MutualPRCategory.objects.root_nodes()
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/PersonalArea/CreateAd/create_ad.html').render(context)
    keyboard = []
    for cat in category:
        keyboard.append([ikb(user.GetButtons(cat.category_name), callback_data='PA_create_ad_category_' + cat.category_name)])
    keyboard.append([ikb(user.GetButtons('«'), callback_data='back_inline')])
    user.SendMessage(bot=bot, msg=msg, keyboard=InlineKeyboardMarkup(keyboard), save_massage_id=True)
Пример #15
0
def personal_area(bot, update):
    if update.callback_query:
        user = Users.objects.get(
            telegram_id=update.callback_query.from_user.id)
    else:
        user = Users.objects.get(telegram_id=update.message.chat.id)
    user.params = '/PersonalArea'
    user.save()
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/PersonalArea/personal_area.html').render(
        context)
    keyboard = InlineKeyboardMarkup([[
        ikb(user.GetButtons('📢 Мои объявления'), callback_data='PA_my_ads'),
        ikb(user.GetButtons('✉️ Обратная связь'), callback_data='PA_feedback')
    ], [
        ikb(user.GetButtons('💵 Поддержать проект'), callback_data='PA_support')
    ]])
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #16
0
def ad_subcategory(bot, update):
    if update.callback_query:
        user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    elif update.message:
        user = Users.objects.get(telegram_id=update.message.chat.id)
    user.params += '/SubCategory'
    user.save()
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/PersonalArea/CreateAd/ad_subcategory.html').render(context)
    button_list = []
    ad = Ad.objects.get(id=int(re.findall('CreateAd/(\d+)', user.params)[0]))
    node = MutualPRCategory.objects.get(category_name=ad.category)
    subcategories = node.get_children()
    for sub in subcategories:
        button_list.append(ikb(user.GetButtons(sub.category_name), callback_data='Pa_subcategory_' + sub.category_name))
        #button_list.append(ikb(sub.category_name, callback_data='PA_subcategory_' + sub.category_name))
    button_list.append(ikb(user.GetButtons('«'), callback_data='back_inline'))
    user.SendMessage(bot=bot, msg=msg, keyboard=InlineKeyboardMarkup(build_menu(button_list, n_cols=2)), save_massage_id=True)
Пример #17
0
def my_ads(bot, update):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params += '/Ads'
    user.save()
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/PersonalArea/my_ads.html').render(context)
    keyboard = InlineKeyboardMarkup(
        [[
            ikb(user.GetButtons('📝 Создать объявление'),
                callback_data='PA_create_ad')
        ],
         [
             ikb(user.GetButtons('📠 Редактировать объявления'),
                 callback_data='PA_edit_ad')
         ],
         [
             ikb(user.GetButtons('🗑 Удалить объявление'),
                 callback_data='PA_delete_ad')
         ], [ikb(user.GetButtons('«'), callback_data='back_inline')]])
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #18
0
def edit_ads_menu(bot, update):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    if user.params == '/PersonalArea/Ads':
        user.params += '/Editing'
    else:
        user.DelEndParams(2)
        user.params += '/Editing'
    user.save()
    ads = Ad.objects.filter(creator=user)
    context = {'Lang': user.lang}
    msg = loader.get_template('bot/PersonalArea/EditAd/edit_ads_menu.html').render(context)
    button_list = []
    for ad in ads:
        if 'nstagram' in ad.channel_name:
            button_list.append(ikb('@' + ad.channel_name[22:] + ' 📸', callback_data='PA_edit_ad' + str(ad.id)))
        elif 't.me' in ad.channel_name:
            button_list.append(ikb('@' + ad.channel_name[13:] + ' 🚀', callback_data='PA_edit_ad' + str(ad.id)))

    button_list.append(ikb(user.GetButtons('«'), callback_data='back_inline'))
    user.SendMessage(bot=bot, msg=msg, keyboard=InlineKeyboardMarkup(build_menu(button_list, n_cols=2)), save_massage_id=True)
Пример #19
0
def edit(bot, update, user_data):
    if update.callback_query:
        query = update.callback_query
        user = Users.objects.get(telegram_id=query.from_user.id)
        if 'Subcategory' in user.params:
            ad = Ad.objects.get(id=user_data['ad_id'])
            user_data.clear()
            user.DelEndParams(2)
        else:
            if user.params == '/PersonalArea/Ads/Editing':
                ad = Ad.objects.get(id=query.data[10:])
            else:
                ad = Ad.objects.get(id=int(re.findall('Editing/(\d+)', user.params)[0]))
                user.DelEndParams()
    else:
        user = Users.objects.get(telegram_id=update.message.chat.id)
        ad = Ad.objects.get(id=user_data['ad_id'])
        #user_data.clear()
    user.params += '/' + str(ad.id)
    user.save()
    keyboard = InlineKeyboardMarkup([
        [ikb(user.GetButtons('Подкатегорию'), callback_data='pa_edit_ad_subcategory'),
         ikb(user.GetButtons('Адрес канала'), callback_data='pa_edit_ad_channel_name')],
        [ikb(user.GetButtons('Мин. количество'), callback_data='pa_edit_ad_min_count'),
         ikb(user.GetButtons('Комментарий'), callback_data='pa_edit_ad_comment')],
        [ikb(user.GetButtons('Отменить'), callback_data='pa_edit_ad_cancel'),
         ikb(user.GetButtons('💾 Сохранить'), callback_data='pa_edit_ad_save')]
    ])
    context = {'Lang': user.lang,
               'Ad': ad}
    msg = loader.get_template('bot/PersonalArea/EditAd/edit.html').render(context)
    user.SendMessage(bot=bot, msg=msg, keyboard=keyboard, save_massage_id=True)
Пример #20
0
def pr_menu(bot, update, user_data):
    query = update.callback_query
    user = Users.objects.get(telegram_id=query.from_user.id)
    user.params += '/AdsList'
    user.save()
    if query.data == 'inst_sorting_followers_up':
        ads = Ad.objects.filter(
            localization=user.lang,
            category='Instagram',
            subcategory=user_data['category_name']).order_by('min_count')
    elif query.data == 'inst_sorting_followers_down':
        ads = Ad.objects.filter(
            localization=user.lang,
            category='Instagram',
            subcategory=user_data['category_name']).order_by('-min_count')
    elif query.data == 'inst_sorting_date_new':
        ads = Ad.objects.filter(
            localization=user.lang,
            category='Instagram',
            subcategory=user_data['category_name']).order_by('pub_date')
    else:
        ads = Ad.objects.filter(
            localization=user.lang,
            category='Instagram',
            subcategory=user_data['category_name']).order_by('-pub_date')
    button_list = []
    for ad in ads:
        button_list.append(
            ikb('@' + ad.channel_name[22:] + ' min. ' + str(ad.min_count),
                callback_data='mp_ad_' + str(ad.id)))
    button_list.append(ikb(user.GetButtons('«'), callback_data='back_inline'))
    context = {'Lang': user.lang, 'Subcategory': user_data['category_name']}
    msg = loader.get_template(
        'bot/Mutual_PR/Telegram/pr_menu/pr_menu.html').render(context)
    user.SendMessage(bot=bot,
                     msg=msg,
                     keyboard=InlineKeyboardMarkup(
                         build_menu(button_list, n_cols=2)),
                     save_massage_id=True)
Пример #21
0
def send_msg(bot, update, user_data):
    user = Users.objects.get(telegram_id=update.message.chat.id)
    context = {'Lang': user.lang, 'Text': update.message.text}
    msg = loader.get_template('bot/Adminka/send_msg.html').render(context)
    keyboard = InlineKeyboardMarkup(
        [[ikb(user.GetButtons('Ответить'), callback_data='admin_msg_reply')]])
    bot.send_message(chat_id=user_data['user_id'],
                     text=msg,
                     reply_markup=keyboard)
    user_data.clear()
    user.SendMessage(bot=bot, msg='Сообщение отправлено', save_massage_id=True)
    sleep(1)
    MainMenu(bot, update)
Пример #22
0
def categories_menu(bot, update, user_data):
    user = Users.objects.get(telegram_id=update.callback_query.from_user.id)
    user.params += '/Instagram/Subcategory'
    user.save()
    node = MutualPRCategory.objects.get(id=2)
    subcategories = node.get_children()
    button_list = []
    for sub in subcategories:
        button_list.append(
            ikb('{}'.format(user.GetButtons(sub.category_name)) + ' (' +
                get_count_ads(sub.category_name, user_lang=user.lang) + ')',
                callback_data='i_subcategory' + sub.category_name))
        #button_list.append(ikb(sub.category_name + ' (' + get_count_ads(sub.category_name, user_lang=user.lang) + ')',
        #                      callback_data='i_subcategory' + sub.category_name))
    button_list.append(ikb(user.GetButtons('«'), callback_data='back_inline'))
    context = {'Lang': user.lang}
    msg = loader.get_template(
        'bot/Mutual_PR/Telegram/categories_menu.html').render(context)
    user.SendMessage(bot=bot,
                     msg=msg,
                     keyboard=InlineKeyboardMarkup(
                         build_menu(button_list, n_cols=2)),
                     save_massage_id=True)
Пример #23
0
def admin_menu(bot, update):
    user = Users.objects.get(telegram_id=update.message.chat.id)
    if user.telegram_id not in admin_list:
        user.SendMessage(bot=bot,
                         msg='Poshel naxoy otsudova 🖕',
                         save_massage_id=True)
        sleep(3)
        MainMenu(bot, update)
    else:
        user.params = '/Adminka'
        user.save()
        keyboard = InlineKeyboardMarkup(
            [[
                ikb('Удалить объяление', callback_data='admin_delete_ad'),
                ikb('Рассылка', callback_data='admin_broadcast')
            ],
             [
                 ikb('Написать пользователю', callback_data='admin_send_msg'),
                 ikb('Статистика', callback_data='admin_statistic')
             ]])
        user.SendMessage(bot=bot,
                         msg='Админка',
                         keyboard=keyboard,
                         save_massage_id=True)
Пример #24
0
def options(bot, update):
    print("Optins function starting......")
    query = update.callback_query
    chat_id = query.message.chat_id
    choice = query.data
    if choice == "Messages":
        msg_reader(bot, update, chat_id)

    elif choice == "Resources":
        regNumber = database(chat_id, 'regNumber')
        umsPass = database(chat_id, 'umsPass')
        course_db(bot, update, regNumber, umsPass, chat_id, query)
        course_markup = []
        temp = []
        t = []
        course_key = '{}-courselist'.format(chat_id)
        p = db.hkeys(course_key)
        num_courses = len(p)
        for i, item in enumerate(p):
            p[i] = item.decode('UTF-8')
        for i in range(0, num_courses, 2):
            key = '{}'.format(p[i])
            if i + 1 < num_courses:
                key1 = '{}'.format(p[i + 1])
                course_markup.append([
                    ikb(key, callback_data=key),
                    ikb(key1, callback_data=key1)
                ])
            else:
                course_markup.append([ikb(key, callback_data=key)])
        bot.send_message(text="Choose Subject --",
                         chat_id=chat_id,
                         reply_markup=ikm(course_markup))
    else:
        update.message.reply_text("Sorry Wrong Input!")
        return
Пример #25
0
 def msgDispatcher():
     lock = threading.Lock()
     with lock:
         chat_id = str(update.message.chat_id)
         if (chat_id in l) and (r.hget(chat_id, 'umsReg')) and (r.hget(
                 chat_id, 'umsPass')):
             update.message.reply_text('Welcome Back!',
                                       reply_markup=markup_options)
             return
         else:
             r.hmset(chat_id, data)
             update.message.reply_text(
                 "Hi Dear\n\n"
                 "I hope you are fine. My name is ToTa. "
                 "I am your personal bot to handle your daily tedious tasks of UMS. "
                 "\n\nI am created by Shekh Ataul.\nA.K.A -- DEVIL!"
                 "\n\nTo Get Started Press: Setup",
                 reply_markup=ikm([[ikb('Setup', callback_data='setup')]]))
             return
Пример #26
0
def start(bot, update):
    chat_id = update.message.chat_id
    if (db.hexists(chat_id,
                   'regNumber')) and (db.hexists(chat_id, 'umsPass') and
                                      (db.exists('{}-msg'.format(chat_id)))):
        user = update.message.from_user
        user_full_name = '{} {}'.format(user.first_name, user.last_name)
        update.message.reply_text('Welcome back {}'.format(user_full_name),
                                  reply_markup=markup_options)
        return
    else:
        update.message.reply_text(
            "Hi Dear\n\n"
            "I hope you are fine. My name is *ToTa*  "
            "I am your personal bot to handle your daily tedious tasks of UMS "
            "\n\nI am created by *Shekh Ataul*\nA.K.A -- *DEVIL!*"
            "\n\nTo Get Started Press: *Setup*",
            reply_markup=ikm([[ikb('Setup', callback_data='Setup')]]),
            parse_mode=ParseMode.MARKDOWN)
Пример #27
0
def res(bot, update):
    c = StrictRedis()
    query = update.callback_query
    chat_id = query.message.chat_id
    course = query.data
    regNumber = c.hget(chat_id, 'umsReg')
    umsPass = c.hget(chat_id, 'umsPass')
    try:
        homeUms = Verto(regNumber, umsPass)
        homeData = homeUms.initiater()
        if homeData != 'Incorrect Credentials':
            pass
        else:
            bot.edit_message_text(text='Incorrect Credentials',
                                  chat_id=chat_id,
                                  message_id=query.message.message_id)
            raise ValueError("Something Went Wrong")
    except ValueError as error:
        return
    else:
        courseIns = Resources(homeUms.session, course)
        resList = courseIns.reslist()
        for i, item in enumerate(resList):
            txt = item[-1]
            start = txt.find('$lblFileUplaodByTeacher')
            txt = txt[start - 5:start]
            if item[2] == u'\xa0':
                item[2] = ''
            res_num_markup = ikm([[
                ikb('Download',
                    callback_data='hot{}YinZ{}'.format(course, txt))
            ]])
            text_data = 'Course - {}\n{} \n\n {}\n\n {}'.format(
                course, item[0], item[1].strip(), item[2].strip())
            bot.send_message(text=text_data,
                             chat_id=chat_id,
                             reply_markup=res_num_markup)
            x = '|'.join(item)
            c.hset(chat_id, '{}_{}'.format(course, item[-1]), x)
Пример #28
0
def course_selected_data(bot, update):
    print('Course selected data Started')
    query = update.callback_query
    chat_id = query.message.chat_id
    course_selected = query.data
    regNumber = database(chat_id, 'regNumber')
    umsPass = database(chat_id, 'umsPass')
    time_stamp = time()
    sess_start = database(chat_id, 'sess_start')
    if time_stamp - float(sess_start) <= 180:
        pickled_sess = db.hget(chat_id, 'sess_obj')
        sess = pickle.loads(pickled_sess)
    else:
        home_page = homeData(bot, update, regNumber, umsPass, chat_id, query)
        if home_page:
            sess = db.hget(chat_id, 'sess_obj')
            sess = pickle.loads(sess)
        else:
            return
    course_data = Resources(sess, course_selected)
    course_data_list = course_data.course_content_list()
    for i, item in enumerate(course_data_list):
        txt = item[-1]
        start = txt.find('$lblFileUplaodByTeacher')
        txt = txt[start - 5:start]
        if item[2] == u'\xa0':
            item[2] = ''
        res_num_markup = ikm([[
            ikb('Download',
                callback_data='hot{}YinZ{}'.format(course_selected, txt))
        ]])
        text_data = 'Course - {}\n{} \n\n {}\n\n {}'.format(
            course_selected, item[0], item[1].strip(), item[2].strip())
        bot.send_message(text=text_data,
                         chat_id=chat_id,
                         reply_markup=res_num_markup)
        x = '|'.join(item)
        db.hset(chat_id, '{}_{}'.format(course_selected, item[-1]), x)
Пример #29
0
from telegram import InlineKeyboardButton as ikb
from telegram import InlineKeyboardMarkup as ikm
from telegram.error import NetworkError, TelegramError, Unauthorized
from telegram.ext import (CommandHandler, ConversationHandler, Filters,
                          CallbackQueryHandler, MessageHandler, Updater,
                          JobQueue)
from telegram import Update, ChatAction
import telegram
from user import Verto
from message import Message
from assingment import Resources
from multiprocessing import Pool

CHOOSING, TYPING_REPLY, TYPING_CHOICE, LOAD = range(4)
reply_keyboared_setup = [[
    ikb('Reg. Number', callback_data='Reg. Number'),
    ikb('Password', callback_data='Password')
]]
reply_keyboared_options = [[
    ikb('Messages', callback_data='Messages'),
    ikb('Resources', callback_data='Resources')
]]
markup_setup = ikm(reply_keyboared_setup)
markup_options = ikm(reply_keyboared_options)

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')


@run_async
Пример #30
0
from models import Base, User, Order, Catalog, Cart

now = datetime.datetime.now
# constant for sending 'typing...'
typing = telegram.ChatAction.TYPING


# keyboards

main_kbd_user = [[texts.catalog_btn_user, texts.cart_btn_user],
                 [texts.orders_btn_user, texts.info_btn_user]]



# inline keyboard for catalog
catalog_ikbd = [[ikb(texts.prev_btn, callback_data="<"), ikb(texts.next_btn, callback_data=">")],
                [ikb(texts.show_img_btn, callback_data="img")], [ikb(texts.to_cart_btn, callback_data="to_cart")]]

with open('data.json', 'r', encoding='utf8') as fp:
    catalog = Catalog(json.load(fp, object_pairs_hook=OrderedDict))

engine = create_engine('postgresql://%s:%s@%s:%s/%s' % (db_username, db_password, db_host, db_port, db_name))
Session = sessionmaker(bind=engine)
session = Session()
Base.metadata.create_all(engine)

# matplotlib font settings
font = {'family': 'DejaVu Serif', 'weight': 'normal', 'size': 24} # avail_font_names = [f.name for f in matplotlib.font_manager.fontManager.ttflist]
rc('font', **font)