Exemplo n.º 1
0
Arquivo: bot.py Projeto: artvekin/test
def test_callback(call):
	mid = call.from_user.id
	data = call.data
	if utils.check_users(mid):
		if data == "ss restart":
			utils.start_sms_service()
			bot.send_sticker(mid, utils.get_random_sticker_cool(), reply_markup=markup)
		elif data == "thanks":
			markup = utils.generate_markup()
			bot.send_sticker(mid, utils.get_random_sticker(), reply_markup=markup)
		elif data == "conn":
			markup = utils.generate_markup()
			bot.send_message(mid, "ssh odroid@"+config.host + " -p " + str(config.outport), reply_markup=markup)
		elif data == "status":
			response = utils.parse_status()
			if response['status'] == "graph":
				try:
					photo = open(response['filename'], 'rb')
					bot.send_photo(mid, photo)
					try:
						os.remove(response['filename'])
					except Exception as e:
						bot.send_message(mid, "can't delete graph file", reply_markup=markup)
				except Exception as e:
					bot.send_message(mid, "can't open graph file", reply_markup=markup)
			elif response['status'] == "text":
				text = ''
				for line in response['text']:
					text += str(line) + "\n"
				bot.send_message(mid, text, reply_markup=markup)
			else:
				bot.send_message(mid, response['text'], reply_markup=markup)
		else:
			bot.send_sticker(mid, "BQADAgAD5gADDBrwAiHi-1ZEBxPNAg", reply_markup=markup)
Exemplo n.º 2
0
def taxes(message):
    if message.text.find("Все") + 1:
        markup = generate_markup("back.txt")
        requ = api.getTariffs()
        mesa = ""
        for req in requ:
            mes = "Название : {}\nКоличество смс : {}\nЦена пакета смс : {}\nКоличество минут : {}\nЦена пакета минут :{}\nПакет интернета : {}\nЦена пакета интернета : {}\nПодробнее : {}\n\n".format(
                req['name'], req['smsPackageSize'], req['smsPrice'],
                req['callPackageSize'], req['callPrice'],
                req['internetPackageSize'], req['internetPrice'], req['url'])
            mesa += mes
        bot.send_message(message.chat.id, mesa, reply_markup=markup)

    if message.text.find("Мой") + 1:
        markup = generate_markup("back.txt")
        set_state(message.chat.id, config.States.S_MY_TAX.value)
        req = api.tariff(get_msisdn(message.chat.id),
                         get_token(message.chat.id))
        mes = "Название : {}\nКоличество смс : {}\nЦена пакета смс : {}\nКоличество минут : {}\nЦена пакета минут :{}\nПакет интернета : {}\nЦена пакета интернета : {}\nПодробнее : {}".format(
            req['name'], req['smsPackageSize'], req['smsPrice'],
            req['callPackageSize'], req['callPrice'],
            req['internetPackageSize'], req['internetPrice'], req['url'])

        bot.send_message(
            message.chat.id,
            mes +
            "\nЕсли хотите сменить тариф напишите 'сменить тариф на ...'",
            reply_markup=markup)
Exemplo n.º 3
0
def profile(message):
    keyboard_hider = telebot.types.ReplyKeyboardRemove()
    if message.text == "Выйти":
        set_state(message.chat.id, config.States.S_START.value)
        bot.send_message(
            message.chat.id,
            'Я буду скучать( \nНо ты можешь еще раз: \n1) Залогиниться \n2) Узнать обо мне',
            reply_markup=keyboard_hider)
    elif message.text.find("тариф") + 1:
        set_state(message.chat.id, config.States.S_TAXES.value)
        markup = generate_markup("taxes.txt")
        bot.send_message(message.chat.id,
                         'Ты хочешь посмотреть:',
                         reply_markup=markup)
    elif message.text.find("аккаунт") + 1:
        set_state(message.chat.id, config.States.S_ACCINFO.value)
        markup = generate_markup("accinf.txt")
        mes = api.inform_about_sub(get_msisdn(message.chat.id))
        ms = ""
        for key in mes:
            ms += "{} : {}\n".format(key, mes[key])

        bot.send_message(message.chat.id,
                         ms + '\nТы хочешь посмотреть:',
                         reply_markup=markup)
    elif message.text.find("услуг") + 1:
        set_state(message.chat.id, config.States.S_SERVICES.value)
        markup = generate_markup("services.txt")
        bot.send_message(message.chat.id,
                         'Ты хочешь посмотреть:',
                         reply_markup=markup)
Exemplo n.º 4
0
def remind():
    for x in db_entries:
        try:
            if (x['need_remind'] and not x['done']):
                markup = utils.generate_markup(['+', 'Спроси в другой раз']) if x['reminds_today'] < 3 \
                    else utils.generate_markup(['+', 'Беру на себя всю ответственность'])

                name = ', ' + x['chat_first_name'].encode(
                    'utf-8') if x['chat_first_name'] else ''

                mes_text = 'Привет' + name + '! Отчет уже написан?' if x['reminds_today'] == 0 \
                    else 'Это снова я. Как твой отчет, готов?' if x['reminds_today'] == 1 \
                    else 'Время уже позднее, про отчет не забудь. Или уже написан?' if x['reminds_today'] == 2 \
                    else 'Не забудь про отчет. На сегодня беспокою тебя в последний раз. ' \
                         'Напиши мне + когда будет готово. Спокойной ночи)' if x['reminds_today'] == 3 \
                    else 'Отчет готов?'

                db_worker.upd_col('reminds_today',
                                  int(x['reminds_today']) + 1, x['chat_id'])
                bot.send_message(x['chat_id'], mes_text, reply_markup=markup)
        except Exception as e:
            db_worker.upd_col('errors', int(x['errors']) + 1, x['chat_id'])
            logging.error(e)

    logging.info(u'Napomni module ended')
Exemplo n.º 5
0
def game(message):
    global test
    if (message.text == 'Dopeclvb') or (message.text == 'Погнали!'):
        if test:
            game.k = 1
            test = False
        db_worker = SQLighter(config.database_name)
        row = db_worker.select_single(game.k)
        markup = utils.generate_markup(row[2], row[3])
        bot.send_voice(message.chat.id, row[1], reply_markup=markup)
        utils.set_user_game(message.chat.id, row[2])
        db_worker.close()
    elif (message.text == 'Pharaoh') or (message.text == 'Давай следующий!'):
        if test:
            game.k = 1
            test = False
        db_worker = SQLighter(config.database_name)
        row = db_worker.select_single(game.k)
        markup = utils.generate_markup(row[2], row[3])
        bot.send_voice(message.chat.id, row[1], reply_markup=markup)
        utils.set_user_game(message.chat.id, row[2])
        db_worker.close()
    else:
        answer = utils.get_answer_for_user(message.chat.id)
        if not answer:
            bot.send_message(
                message.chat.id,
                'Чтобы начать игру, наберите любую из команд /...')
        else:
            keyboard_hider = types.ReplyKeyboardRemove()
            if message.text == answer:
                bot.send_message(message.chat.id,
                                 'Чертовски правильный ответ',
                                 reply_markup=keyboard_hider)
            else:
                bot.send_message(message.chat.id,
                                 'Эх, надо бы подучить треки, неверно',
                                 reply_markup=keyboard_hider)
            utils.finish_user_game(message.chat.id)
            markup_d = types.ReplyKeyboardMarkup(one_time_keyboard=True,
                                                 resize_keyboard=True)
            item1_d = types.KeyboardButton('Погнали!')
            item2_d = types.KeyboardButton('Выход:(')
            markup_d.add(item1_d, item2_d)
            if game.k < utils.get_rows_count():
                game.k += 1
                bot.send_message(message.chat.id,
                                 'Готов к следующему треку?',
                                 reply_markup=markup_d)
            else:
                bot.send_message(message.chat.id,
                                 'Больше треков нет, выхожу из игры')
                test = True
Exemplo n.º 6
0
Arquivo: bot.py Projeto: viktorvm/bot
def start(message):
    try:
        db_worker = SQLighter(config.database_name)
        if db_worker.select_single(message.chat.id):
            markup = utils.generate_markup(['Забудь про меня'])
            bot.send_message(message.chat.id, 'Не волнуйся, я тебя не забыл. Ты у меня уже на заметке, '
                                              'напоминаю каждый день про отчет:)', reply_markup=markup)
        else:
            markup = utils.generate_markup(['Да. То, что нужно!'])
            bot.send_message(message.chat.id, 'Привет! Я бот, который поможет тебе не забыть писать ежедневный отчет! '
                                          'Напоминать тебе об этом?', reply_markup=markup)
    except Exception as e:
        logging.error(e)
Exemplo n.º 7
0
def game_1_6(message):
    # Подключаемся к БД
    message_namber = message.text
    answer_number = message_namber.split('/')
    #keyboard_hider = types.ReplyKeyboardRemove()
    db_worker = SQLighter(config.database_name)
    # Получаем случайную строку из БД
    row = db_worker.select_single(
        random.randint(1, utils.get_rows_count(answer_number[1])),
        answer_number[1])
    # Формируем разметку
    markup = utils.generate_markup(row[4], row[5], answer_number[1])
    if answer_number[1] == '3' or answer_number[1] == '5':
        # Отправляем вводную часть вопроса
        bot.send_message(message.chat.id, row[2])
        # Отправляем картинку
        bot.send_photo(message.chat.id, row[1])
    if answer_number[1] == '4' or answer_number[1] == '6':
        # Отправляем вводную часть вопроса с форматированием
        bot.send_message(message.chat.id, row[2], parse_mode='HTML')
        # Отправляем основную часть вопроса с форматированием
        bot.send_message(message.chat.id, row[1], parse_mode='HTML')
    # Отправляем вопрос и заменяем кдавиатуру на варианты ответа
    bot.send_message(message.chat.id, row[3], reply_markup=markup)

    # Включаем "игровой режим"... ждем ответа от пользователя
    utils.set_user_game(message.chat.id, row[4], row[6])
    # Отсоединяемся от БД
    db_worker.close()
Exemplo n.º 8
0
def prediction(message,text):
    user_id = message.chat.id
    error_streak = 0
    if user_id in unright_detect:
        error_streak = unright_detect[user_id]


    analyze_text = text
    if (error_streak > 0):
        analyze_text = stored_messages[user_id][-2]+' ' + analyze_text
    if (error_streak > 1):
        analyze_text = stored_messages[user_id][-3] + ' ' + analyze_text

    #print(analyze_text)
    predictions = robo_bitch.predict(analyze_text.lower())
    if(len(predictions) == 0):
        reaction_on_unimp_messages(message)
    else:
        if(len( predictions) == 1):
            markup = utils.generate_markup('да', 'нет')
            bot.send_message(message.chat.id, config.prediction_message % predictions[0][1],reply_markup=markup)
            start_waiting_answer_from_user(message.chat.id, int(predictions[0][0]))
        else:
            text,markup = form_list(predictions)
            bot.send_message(message.chat.id,text,reply_markup=markup)
            start_waiting_answer_from_user(user_id,predictions)
            text, markup = form_list(predictions, start_text=config.more_point_text)
            keyboard_choose_notifications[user_id] = models.motification(user_id, text, config.first_notify_time, markup)
            pass
Exemplo n.º 9
0
def query_handler(call):
    global n
    global score
    global name
    bot.answer_callback_query(callback_query_id=call.id, text='...')
    answer = ''
    r_ans = str(views.select_point(models.db, n, 'right_answer'))
    r_ans = re.sub(r"[(,)]", "", r_ans)
    r_ans = r_ans[2:-2]
    #print(r_ans)
    if call.data == r_ans:
        answer = 'верный'
        #print(str(views.select_point(models.db,n,'score'))[2 : -3])
        score = score + int(
            str(views.select_point(models.db, n, 'score'))[2:-3])
    else:
        answer = 'неверный'
    bot.send_message(
        call.message.chat.id,
        'Ответ ' + call.data + ' ' + answer + '. Текущий счет: ' + str(score))
    n = n + 1

    if n < 6:
        row = views.select_point(models.db, n, 'question')
        row_r = views.select_point(models.db, n, 'right_answer')
        row_w = views.select_point(models.db, n, 'wrong_answers')
        markup = utils.generate_markup(row_r, row_w)
        bot.send_message(call.message.chat.id, row, reply_markup=markup)
    else:
        bot.send_message(call.message.chat.id,
                         'Игра окончена. Итоговый счет: ' + str(score))
        views.add_user(models.db, name, score)
Exemplo n.º 10
0
def game(message):
    db = MySQLer(config.db_config)
    rows = db.join_select_all()

    # выбираем в качестве правильного ответа
    # рандомную строку из бд (file_id, song_name)
    i = rand(0, db.rows_count('files') - 1)
    right_answer = rows[i]

    # выбираем 3 рандомных неправильных ответа
    wrong_answers = []
    indexes = [i]
    while len(wrong_answers) != 3:
        j = rand(0, db.rows_count('files') - 1)
        if j not in indexes:
            wrong_answers.append(rows[j][0])
            indexes.append(j)

    print(right_answer, wrong_answers)

    # сохраняем правильный ответ
    # для текущего юзера
    utils.set_user_game(message.chat.id, right_answer[0])
    # генерируем клавиатуру
    markup = utils.generate_markup([right_answer[0]] + wrong_answers)

    bot.send_voice(message.chat.id, right_answer[1], reply_markup=markup)

    db.close_connection()
Exemplo n.º 11
0
def user_entering_name(message):
    if "Назад" == message.text:
        dbworker.set_state(message.chat.id, config.States.SELECT_RULES.value)
    elif "Электрички" == message.text:
        markup = utils.generate_markup(["Минск -- Моло", "Моло -- Минск", "Назад"])
        bot.send_message(message.chat.id, "Выберите маршрут!", reply_markup=markup)
        dbworker.set_state(message.chat.id, config.States.SELECT_RULES.value)
Exemplo n.º 12
0
def game(message):
    db_worker = SQLighter(config.database_name)
    row = db_worker.select_single(random.randint(1, utils.get_rows_count()))
    markup = utils.generate_markup(row[2], row[3])
    bot.send_voice(message.chat.id, row[1], reply_markup=markup)
    utils.set_user_game(message.chat.id, row[2])
    db_worker.close()
Exemplo n.º 13
0
def game(message):
    db_worker = SQLLiter(config.DB_NAME)
    row = db_worker.fetch_single_record(row_number=random.randint(1, utils.get_rows_count()[0]))[0]
    markup = utils.generate_markup(right_answer=row[2], wrong_answers=row[3])
    bot.send_voice(chat_id=message.chat.id, voice=row[1], reply_markup=markup)
    utils.set_user_game(chat_id=message.chat.id, right_answer=row[2])
    db_worker.close_connection()
Exemplo n.º 14
0
Arquivo: bot.py Projeto: artvekin/test
def test_callback(call):
    mid = call.from_user.id
    data = call.data
    if utils.check_users(mid):
        if data == "ss restart":
            utils.start_sms_service()
            bot.send_sticker(mid,
                             utils.get_random_sticker_cool(),
                             reply_markup=markup)
        elif data == "thanks":
            markup = utils.generate_markup()
            bot.send_sticker(mid,
                             utils.get_random_sticker(),
                             reply_markup=markup)
        elif data == "conn":
            markup = utils.generate_markup()
            bot.send_message(mid,
                             "ssh odroid@" + config.host + " -p " +
                             str(config.outport),
                             reply_markup=markup)
        elif data == "status":
            response = utils.parse_status()
            if response['status'] == "graph":
                try:
                    photo = open(response['filename'], 'rb')
                    bot.send_photo(mid, photo)
                    try:
                        os.remove(response['filename'])
                    except Exception as e:
                        bot.send_message(mid,
                                         "can't delete graph file",
                                         reply_markup=markup)
                except Exception as e:
                    bot.send_message(mid,
                                     "can't open graph file",
                                     reply_markup=markup)
            elif response['status'] == "text":
                text = ''
                for line in response['text']:
                    text += str(line) + "\n"
                bot.send_message(mid, text, reply_markup=markup)
            else:
                bot.send_message(mid, response['text'], reply_markup=markup)
        else:
            bot.send_sticker(mid,
                             "BQADAgAD5gADDBrwAiHi-1ZEBxPNAg",
                             reply_markup=markup)
Exemplo n.º 15
0
def game(message):
    if use_inline_markup:
        markup = utils.generate_inline_markup(config.buttons_for_inline)
    else:
        markup = utils.generate_markup(config.buttons)
    bot.send_message(message.chat.id,
                     config.pre_button_reaction,
                     reply_markup=markup)
Exemplo n.º 16
0
def acc_info(message):
    if message.text.find("Платежи") + 1:
        markup = generate_markup("payments.txt")
        set_state(message.chat.id, config.States.S_PAYMENTS.value)
        bot.send_message(message.chat.id,
                         "Хочешь узнать информацию про:",
                         reply_markup=markup)

    if message.text.find("Мой") + 1:
        markup = generate_markup("back.txt")
        set_state(message.chat.id, config.States.S_MY_TAX.value)
        req = api.tariff(get_msisdn(message.chat.id),
                         get_token(message.chat.id))
        mes = "Название : {}\nКоличество смс : {}\nЦена пакета смс : {}\nКоличество минут : {}\nЦена пакета минут :{}\nПакет интернета : {}\nЦена пакета интернета : {}\nПодробнее : {}".format(
            req['name'], req['smsPackageSize'], req['smsPrice'],
            req['callPackageSize'], req['callPrice'],
            req['internetPackageSize'], req['internetPrice'], req['url'])

        bot.send_message(
            message.chat.id,
            mes + "\nЕсли хочешь сменить тариф напиши 'сменить тариф на ...'",
            reply_markup=markup)

    if message.text.find("Мои") + 1:
        markup = generate_markup("back.txt")
        set_state(message.chat.id, config.States.S_MY_SERVICES.value)
        req = api.getServices(get_msisdn(message.chat.id),
                              get_token(message.chat.id))
        print(req)
        mes = "Подключенные услуги\n"
        for serv in req:
            mes += "название : {} описание : {} цена {}\n".format(
                serv["name"], serv["description"], serv["subscriptionFee"])
        bot.send_message(
            message.chat.id,
            mes + "\nЕсли хочешь отключить услугу напиши 'отключить ...",
            reply_markup=markup)

    if message.text.find("информац") + 1:
        keyboard_hider = telebot.types.ReplyKeyboardRemove()
        set_state(message.chat.id, config.States.S_CHANGEINFO_ENTERNAME.value)
        bot.send_message(
            message.chat.id,
            "Введи имя \n(-, если хочешь оставить без изменений):",
            reply_markup=keyboard_hider)
Exemplo n.º 17
0
def main_message_handler(request):
    state = botConfig.getStateByName(db.get_current_state(request.chat.id))
    transition = state.getTransitionByText(request.text)
    if transition:
        bot.send_message(request.chat.id,
                         transition.getText(),
                         reply_markup=utils.generate_markup(
                             transition.getKeyboardBtn()))
        db.set_state(request.chat.id, transition.getNextState())
        transition.execute()
Exemplo n.º 18
0
def change_key(message):
    inf_user.update(keyword=message.text)
    set_state(message.chat.id, config.States.S_PROFILE.value)
    markup = generate_markup("Profile.txt")
    bot.send_message(message.chat.id,
                     "Я запомнил пароль " + inf_user["keyword"] +
                     ". Данные сохранены",
                     reply_markup=markup)
    api.changeAbonentInfo(get_msisdn(message.chat.id),
                          get_token(message.chat.id), inf_user)
Exemplo n.º 19
0
def payments(message):
    if message.text.find("Бала") + 1:
        req = api.balance(get_msisdn(message.chat.id),
                          get_token(message.chat.id))
        markup = generate_markup("Profile.txt")
        set_state(message.chat.id, config.States.S_PROFILE.value)
        bot.send_message(message.chat.id,
                         "Баланс : " + str(req["money"]),
                         reply_markup=markup)
    if message.text.find("Начисления") + 1:
        tod = datetime.datetime.today()
        mpa = tod.replace(month=1, day=1, microsecond=0)
        tod = tod.replace(microsecond=0)
        req = api.getCharges(get_msisdn(message.chat.id),
                             get_token(message.chat.id),
                             from1=mpa.isoformat(sep="T"),
                             to=tod.isoformat(sep="T"))
        mes = ""
        for date in req[-20:]:
            mes += "дата :{} \nколичество : {} \nчего: {} \nцена: {}\n\n".format(
                date["date"], date["volume"], date["type"], date["fee"])
        markup = generate_markup("Profile.txt")
        set_state(message.chat.id, config.States.S_PROFILE.value)
        bot.send_message(message.chat.id,
                         "Выписка за месяц: \n" + mes,
                         reply_markup=markup)
    if message.text.find("Выписк") + 1:
        tod = datetime.datetime.today()
        mpa = tod.replace(month=1, day=1, microsecond=0)
        tod = tod.replace(microsecond=0)
        req = api.payment(get_msisdn(message.chat.id),
                          get_token(message.chat.id), mpa.isoformat(sep="T"),
                          tod.isoformat(sep="T"))
        markup = generate_markup("Profile.txt")
        mes = ""
        for date in req:
            mes += "дата :{} \nКоличество пополнения: {}\n\n".format(
                date["date"], date["value"])
        set_state(message.chat.id, config.States.S_PROFILE.value)
        bot.send_message(message.chat.id,
                         "Недавние платежи\n" + mes,
                         reply_markup=markup)
Exemplo n.º 20
0
def schedule_on_day_answer(message):
    """ Метод возвращает кастомную клавиатуру с датами """
    db_worker = SQLighter(config.db_name)
    dates_from_db = db_worker.get_dates()
    dates = []
    for date in dates_from_db:
        dates.append(date[0])

    markup = utils.generate_markup(dates)
    bot.send_message(message.chat.id, 'Выберите дату: ', reply_markup=markup)
    db_worker.close()
Exemplo n.º 21
0
def game(call):
    if call.data == "game":
        db_worker = SQLighter(database_name)
        row = db_worker.select_single(random.randint(1,
                                                     utils.get_rows_count()))
        markup = utils.generate_markup(row[2], row[3])
        img = open("pictures/" + row[1] + '.jpg', 'rb')
        bot.send_photo(call.message.chat.id, img, reply_markup=markup)
        utils.set_user_game(call.message.chat.id, row[2])
        img.close()
        db_worker.close()
Exemplo n.º 22
0
def generic_menu(menu_name, update: Update):
    settings = utils.get_settings()
    if menu_name in settings:
        menu = settings[menu_name]
        buttons = []
        for button in menu['keyboard']:
            buttons.append(get_button_text(button))
        buttons = ReplyKeyboardMarkup(utils.generate_markup(buttons))
        log_message(
            update.effective_message.reply_text(menu['text'],
                                                reply_markup=buttons))
        db_user.set_action(user_id=update.effective_user.id, action=menu_name)
Exemplo n.º 23
0
def game(message):
    # Подключаемся к БД
    db_worker = SQLighter(config.database_name)
    # Получаем случайную строку из БД
    row = db_worker.select_single(random.randint(1, utils.get_rows_count()))
    # Формируем разметку
    markup = utils.generate_markup(row[2],row[3])
    # Отправляем аудиофайл с вариантами ответа
    bot.send_voice(message.chat.id, row[1], reply_markup=markup)
    # Включаем "игровой режим"
    utils.set_user_game(message.chat.id, row[2])
    # Отсоединяемся от БД
    db_worker.close()
Exemplo n.º 24
0
def game(message):
    # Подключаемся к БД
    db_worker = SQLighter(config.database_name)
    # Получаем случайную строку из БД
    row = db_worker.select_single(random.randint(1, utils.get_rows_count()))
    # Формируем разметку
    markup = utils.generate_markup(row[2], row[3])
    # Отправляем аудиофайл с вариантами ответа
    bot.send_voice(message.chat.id, row[1], reply_markup=markup, duration=20)
    # Включаем "игровой режим"
    utils.set_user_game(message.chat.id, row[2])
    # Отсоединяемся от БД
    db_worker.close()
Exemplo n.º 25
0
Arquivo: bot.py Projeto: Padking/tgbot
def play_attempt(call: CallbackQuery):
    status = utils.get_user_one_note_choise(call.message.chat.id)
    if call.data and status:
        # Получаем информацию о ноте
        note_info = call.data
        category_name = utils.get_user(call.message.chat.id, chosen_category=True)
        # Проверка выбора разыгранной/неразыгранной ноты:
        note_info = note_info.split(',')
        encoded_note_name = note_info[0]
        # если строка начинается с "Нота", значит нота разыграна
        if note_info[0].startswith("Нота"):
            bot.send_message(call.message.chat.id, f"{utils.choice_random_message('1.7.1')}")
            dbworker.set_state(call.message.chat.id, config.States.S_ENTER_NOTE.value)
        elif len(encoded_note_name) == 4 and len(note_info) == 3: # снижаем вероятность, если вдруг введён подменный текст в callback
            # Устанавливаем запрет на выбор ещё одной ноты пока пользователь ожидает цену выбранной
            utils.set_user_one_note_choise(call.message.chat.id, sign=False)
            # Получаем маркировку и колбэк-текст для всех нот в пределах категории
            text = utils.get_user_text(call.message.chat.id, category_name)
            c_data = utils.get_user_callback(call.message.chat.id, category_name)
            # Преобразуем маркировку и коллбэк-текст для выбранной ноты
            new_text_and_c_data = utils.modify_params(note_info, text, c_data)
            # Генерируем клаву с нотами
            keyboard_n_edited = utils.generate_inline_markup(new_text_and_c_data[0], new_text_and_c_data[1])
            # Сохраняем обновлённый текст для формирования клавы
            utils.set_user_text(call.message.chat.id, category_name, new_text_and_c_data[0], sign=False)
            utils.set_user_callback(call.message.chat.id, category_name, new_text_and_c_data[1], sign=False)
            # Здесь сохраняем в хранилище новый вид клавы
            utils.set_user_cats_and_notes(call.message.chat.id, category_name, attincat=None, note_kb=keyboard_n_edited)
            # Сообщаем цену разыгрываемой ноты пользователю
            bot.edit_message_text("<b>А цена ноты составит..</b>", chat_id=call.message.chat.id, message_id=call.message.message_id, parse_mode='HTML', reply_markup=keyboard_n_edited)
            
            # Получаем file_id и note_name из БД
            price = int(note_info[1])
            # Запоминаем цену выбранной ноты
            utils.set_user(call.message.chat.id, price=price)
            file_id, note_name = SQLighter(config.database_name).select_file_id_and_full_note_name(encoded_note_name)
            # Получаем 3 НЕправильных ответа
            wrong_answers = SQLighter(config.database_name).select_from_single_column(column_name="note_name", note_name=encoded_note_name, note_num=3)
            # Формируем разметку:
            wrong_answers = [n+',' for note in wrong_answers for n in note]
            wrong_answers = "{}{}{}".format(*wrong_answers).strip(',')
            markup = utils.generate_markup(note_name, wrong_answers)
            # Удаляем клаву с нотами после задержки (чтобы пользователь смог увидеть цену)
            time.sleep(1.5)
            bot.delete_message(call.message.chat.id, call.message.message_id)
            # Отправляем аудиофайл с вариантами ответа
            bot.send_voice(call.message.chat.id, file_id, reply_markup=markup)
            # Включаем "игровой режим" - записываем ожидаемый правильный ответ от пользователя
            utils.set_user(call.message.chat.id, estimated_answer=note_name)
            dbworker.set_state(call.message.chat.id, config.States.S_ENTER_ANSWER.value)
Exemplo n.º 26
0
def game(message):
    cid = message.chat.id
    uid = message.from_user.id
    chat_type = message.chat.type
    db_worker = SQLighter(config.database_name)
    row = db_worker.select_single(random.randint(1, utils.get_rows_count()))
    markup = utils.generate_markup(row[2],row[3])
    if chat_type == "private":
        bot.send_voice(cid, row[1], reply_markup=markup)
        utils.set_user_game(cid, row[2])
    elif (chat_type == "group")|(chat_type == "supergroup"):
        bot.send_voice(cid, row[1], reply_markup=markup, reply_to_message_id=message.message_id)
        utils.set_user_game(uid, row[2])
    db_worker.close()
Exemplo n.º 27
0
 def send_question_from_db(self, message, step):
     db_worker = SQLLighter(config.database_name)
     utils.count_rows_for_step(step)
     row = db_worker.select_single_for_step(random.randint(1, utils.get_rows_count()), step)
     markup = utils.generate_markup(row[2], row[3])
     utils.set_user_game(message.chat.id, row[0],row[2])
     q_id = utils.get_q_id_for_user(message.chat.id)
     check_chat = db_worker.count_rows_question_for_chat(message.chat.id, q_id)
     if check_chat == 0:
         self.bot.send_message(message.chat.id, row[1], reply_markup=markup)
         db_worker.save_question_result(message.chat.id, row[0])
     else:
         self.bot.send_message(message.chat.id, text='Вы уже отвечали на вопросы тестирования. Повторная попытка!')
         utils.finish_user_game(message.chat.id)
     db_worker.close()
Exemplo n.º 28
0
def username(message):
    global init
    global name
    if init == 1:
        name = message.text
        init = 0
        #views.add_user(models.db,name)
        global n
        n = 1
        #views.init(models.db)
        row = views.select_point(models.db, n, 'question')
        row_r = views.select_point(models.db, n, 'right_answer')
        row_w = views.select_point(models.db, n, 'wrong_answers')
        markup = utils.generate_markup(row_r, row_w)
        bot.send_message(message.chat.id, row, reply_markup=markup)
Exemplo n.º 29
0
def next_song(message):
    db_worker = SQLighter(config.database_name)
    user = db_worker.get_user(message.chat.id)
    song_order = user[3]
    score = user[2]
    rownum = utils.get_rows_count()
    if song_order >= rownum+1:
        db_worker.reset_user(message.chat.id)
        bot.send_message(message.chat.id, 'Упс! Песни закончились и ваш результат {} угаданных из {}! Чтобы начать игру заново, введите команду /game'.format(score, rownum))
    else:
        song = db_worker.select_single(song_order)
        markup = utils.generate_markup(song[2], song[3])
        bot.send_voice(message.chat.id, song[1], reply_markup=markup)
        utils.set_user_game(message.chat.id, song[2])
    db_worker.close()
Exemplo n.º 30
0
def game(message):
    message_namber = message.text
    answer_number = message_namber.split('/')
    keyboard_hider = types.ReplyKeyboardRemove()
    db_worker = SQLighter(config.database_name, '6')
    # Получаем случайную строку из БД
    row = db_worker.select_single(1, '6')
    # Формируем разметку
    markup = utils.generate_markup(row[4], row[5], '6')
    # Отправляем картинку с сообщением с вариантами ответа
    bot.send_message(message.chat.id, row[2], parse_mode='HTML')
    bot.send_message(message.chat.id,
                     row[1],
                     parse_mode='HTML',
                     reply_markup=markup)
    db_worker.close()
Exemplo n.º 31
0
def game(message):
    db = DBase(config.database_name)
    g = utils.get_rows_count()
    L = list(range(1, g + 1))
    random.shuffle(L)
    LL = []
    for i in range(4):
        row = db.select_single(L[i])
        LL.append(row[2])
    markup = utils.generate_markup(LL)
    ans = db.select_single(L[0])
    bot.send_voice(message.chat.id,
                   ans[1],
                   reply_markup=markup,
                   reply_to_message_id=message.message_id)
    utils.set_user_game(message.chat.id, ans[2], message.chat.username)
    db.close()
Exemplo n.º 32
0
def pas(message):
    headers = {'accept': 'application/json', 'X-API-Token': message.text}
    r = requests.get(host + "subscribers/" + get_msisdn(message.chat.id) +
                     "/balance",
                     headers=headers)
    inf = r.json()
    if r.status_code == 200:
        set_token(message.chat.id, message.text)
        mes = "Отлично, ты в списке. Можешь пройти. \nТвой баланс: {} \nТвои остатки по пакетам: \n\tсмс: {} \n\tинтернет: {} \n\tминуты: {}\nЧто ты хочешь узнать?".format(
            inf["data"]["money"], inf["data"]["sms"], inf["data"]["internet"],
            inf["data"]["call"])
        markup = generate_markup("Profile.txt")
        bot.send_message(message.chat.id, mes, reply_markup=markup)
        set_state(message.chat.id, config.States.S_PROFILE.value)
    else:
        bot.send_message(
            message.chat.id,
            "Извини, но я начинаю подозревать в тебе самозванца...")
Exemplo n.º 33
0
Arquivo: bot.py Projeto: artvekin/test
import cherrypy
import config
import utils
import subprocess
import os
import logging
from sys import path
from random import shuffle
import webhook

bot = telebot.TeleBot(config.token)

logger = telebot.logger
telebot.logger.setLevel(logging.DEBUG)

markup = utils.generate_markup();

class WebhookServer(object):
	@cherrypy.expose
	def index(self):
		if 'content-length' in cherrypy.request.headers and \
					'content-type' in cherrypy.request.headers and \
					cherrypy.request.headers['content-type'] == 'application/json':
			length = int(cherrypy.request.headers['content-length'])
			json_string = cherrypy.request.body.read(length).decode("utf-8")
			update = telebot.types.Update.de_json(json_string)
			bot.process_new_updates([update])
			return 'hi'
		else:
			raise cherrypy.HTTPError(403)
Exemplo n.º 34
0
Arquivo: bot.py Projeto: artvekin/test
def thanks(message):
	if utils.check_users(message.chat.id):
		markup = utils.generate_markup()
		bot.send_sticker(message.chat.id, utils.get_random_sticker(), reply_markup=markup)