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)
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)
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)
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')
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
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)
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()
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
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)
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()
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)
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()
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()
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)
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)
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)
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()
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)
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)
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()
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()
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)
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()
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()
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)
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()
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()
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)
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()
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()
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()
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, "Извини, но я начинаю подозревать в тебе самозванца...")
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)
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)