Example #1
2
def send_test_messages(message):
        fullt = message.text[7:len(message.text)].split(',') # text1 text2 text3  #sidea = message.text[7:len(message.text)] 
        if len(fullt[0].strip(' ')) < 2:
           bot.send_message(message.chat.id, 'Неправильный синтаксис команды. /addya [значение]')
           return
        db_worker = SQLighter(config.database_name)
        db_worker.TableExists(message.chat.id)        
        for text in fullt:
           sidea = text.strip(' ')
           side, lang = Utils.yatranslate(sidea) #lang=1 eng, lang=0 ru sidea  какой первый язык
           if lang == 1:
                 sideb = side
           else:
                 sideb = sidea
                 sidea = side
           if sidea == sideb :
              bot.send_message(message.chat.id, 'Корректный перевод не удался. Возможно ошибка в написании: '+sidea+' <> '+sideb)
        # здесь проверяем есть ли запись в базе, если нет то добавляем sidea всегда ENG
           SideA_in_DB = db_worker.FindSideA(sidea,message.chat.id)
           if len(SideA_in_DB) == 0: # если не нашел запись в базе
                db_worker.AddCardstoDB(str(db_worker.getlastid(message.chat.id)+1),sidea.lower(),sideb.lower(),message.chat.id) # создаем новую запись id last+1
                Utils.count_rows(message.chat.id)
                bot.send_message(message.chat.id, 'Новая карточка ['+sidea+' - '+sideb+'] успешно добавлена. Текущее кол-во карточек: '+str(Utils.count_rows(message.chat.id)))
           else:
                # если нашел то добавить перевод в уже существующую (если еще нет такого перевода!!!!)
                SideA_in_DB = SideA_in_DB[0]
                if Utils.FindSideB(sideb,SideA_in_DB[2]) == 1:
                   bot.send_message(message.chat.id, 'Карточка ['+sidea+' - '+SideA_in_DB[2]+ '] уже существует')   
                else:    
                   db_worker.UpdateSideB(SideA_in_DB[0],(SideA_in_DB[2]+'; '+sideb.lower()),message.chat.id)
                   Utils.count_rows(message.chat.id)
                   bot.send_message(message.chat.id, 'Карточка ['+sidea+' - '+SideA_in_DB[2]+'; '+sideb+'] успешно обновлена. Текущее кол-во карточек: '+str(Utils.count_rows(message.chat.id)))
        db_worker.close()
Example #2
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()
Example #3
0
File: bot.py Project: Padking/tgbot
def choose_category(message):
    # Добавляем исполнителя, о котором написал пользователь
    SQLighter(config.database_name).update_for_user(message.chat.id, message.text, column_name="performer")
    bot.send_message(message.chat.id, f"{utils.choice_random_message('1.4')} {message.text}")
    time.sleep(1)
    bot.send_message(message.chat.id, f"{utils.choice_random_message('1.5')}")
    # Получаем имена категорий
    categories = SQLighter(config.database_name).select_from_single_column(category_num=4)
    # Создаём клаву с категориями
    keyboard_c = utils.generate_inline_markup(categories, categories, category=True)
    # Сохраняем клаву с категориями на время игры
    utils.set_user(message.chat.id, cat_kb=keyboard_c)
    # Формируем "табло игры" - соответствие 4-х нот конкретной категории
    for category in categories: # попробовать уйти от цикла
        # Получаем 4 ноты с ценами
        note_and_price = SQLighter(config.database_name).select_from_multiple_column("category_name", *category)
        # Подготовка содержимого параметра callback_data объекта InlineKeyboardButton
        note_price_ind = utils.encode_notes(*note_and_price)
        # Запоминаем содержимое параметров text & callback_data
        label_text = [('Нота 1', ), ('Нота 2', ), ('Нота 3', ), ('Нота 4', )]
        utils.set_user_text(message.chat.id, *category, label_text, sign=True)
        utils.set_user_callback(message.chat.id, *category, note_price_ind, sign=True)
        # Создаём клаву с нотами
        keyboard_n = utils.generate_inline_markup(label_text, note_price_ind)
        # Сохраняем клаву с нотами и количеством попыток в пределах категории
        utils.set_user_cats_and_notes(message.chat.id, *category, attincat=0, note_kb=keyboard_n)
    bot.send_message(message.chat.id, f"{utils.choice_random_message('1.6')}", reply_markup=keyboard_c)
    dbworker.set_state(message.chat.id, config.States.S_ENTER_CATEGORY.value)
def delete_address(bot, update):
    chat_id = update.message.chat_id
    coin_address = update.message.text
    if coin_address == 'cancel':
        bot.send_message(chat_id=update.message.chat_id,
                         text='Cancel',
                         reply_markup=main_markup)
        return MAIN_MENU
    else:
        try:
            split_string = coin_address.split(
            )  # Separation of the received line
            coin = split_string[0]
            address = split_string[2]
            # Delete from DB
            db_worker = SQLighter(database_name)
            answer = db_worker.delete_row('users_address', chat_id, coin,
                                          address)
            db_worker.close()
            update.message.reply_text(answer, reply_markup=main_markup)
            return MAIN_MENU
        except:
            update.message.reply_text(
                'Invalid input format. The string format should be:\n`coin - address`',
                parse_mode='MARKDOWN',
                reply_markup=cancel_markup)
            return DELETE_ADDRESS
def count_handler(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)

    if message.text.isdigit() and int(message.text) >= 1:
        request[uid]['count'] = int(message.text)
        request[uid]['price'] = db.get_product_info(request[uid]['name'])['price'][request[uid]['size']]
        if len(db.get_product_info(request[uid]['name'])['price']) != 1:
            if request[uid]['size'] == 0:
                request[uid]['name'] += " , Большая "
            elif request[uid]['size'] == 1:
                request[uid]['name'] += " , Маленькая "

        db.save_to_recycle(uid, request[uid]['name'], request[uid]['price'], request[uid]['count'],
                           int(request[uid]['price']) * int(request[uid]['count']))
        text = db.get_messages('added_to_recycle')[0] + "\n\n" + db.get_messages('start_more')[0]
        step[uid]['cur'] = 'start'
        step[uid]['path'] = ['start']
        del request[uid]
        m = markup(db, step[uid]['cur'], uid)
        db.close()
        bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
Example #6
0
	def activity(self):
		db_worker = SQLighter(config.database_name)
		rows = db_worker.count_rows()
		rand_val = rand.randint(1, rows)
		msg = db_worker.select_single(rand_val)
		self.bot.send_message(msg[2], msg[1])
		db_worker.close()
def cmd_save_text(message):
    if len(message.text) > 1000:
        bot.send_message(message.chat.id, config.lang.s_error_note_too_long)
        return None
    global offset_storage

    # Check, if message starts with bot mention. If yes -> remove it
    if message.text.startswith(r'@'):
        message.text = ' '.join(message.text.split()[1:])

    # Convert user's time to server's local time to set "at" command taking offset into account
    time_to_set = utils.convert_user_time_to_at_command(utils.get_time_storage().get(str(message.chat.id)), offset_storage.get(key=str(message.chat.id)))
    logger.debug('User {0!s} is going to set time: {1!s}'.format(
        str(message.from_user.username) + ' (' + str(message.chat.id) + ')', time_to_set))
    # Get Unixtime to set to SQLite DB
    unixtime_to_save_to_db = utils.convert_user_time_to_local_timestamp(utils.get_time_storage().get(str(message.chat.id)), offset_storage.get(str(message.chat.id)))
    # Set "at" command and recieve Job ID from it
    job_id = systemtools.set_new_at_job(message.chat.id, time_to_set, message.text.replace('"', r'\"'))
    # Probably this is not the best choice, because some errors can have "job" word in them
    # If not job id provided (error happened or something else)
    if not job_id:
        bot.send_message(message.chat.id, config.lang.s_error_could_not_save_note)
        return None
    logger.info('Successfully set reminder #{0!s} at {1!s}'.format(job_id, time_to_set))
    # Insert new row in table
    mydb = SQLighter(config.database_schedules_file)
    mydb.insert(message.chat.id, unixtime_to_save_to_db, job_id)
    mydb.close()
    bot.send_message(message.chat.id, config.lang.s_common_note_added.format(
        utils.get_time_storage().get(str(message.chat.id))))
    # After setting note, reset to START
    set_new_state(message.chat.id, StateMachine.States.STATE_START)
Example #8
0
def start(bot, update, chat_data):
    ch_id = update.message.chat_id
    db_worker = SQLighter(config.database_name)
    cur_user = (ch_id, )
    print(cur_user)
    exist = db_worker.searh_user()
    print(exist)
    if cur_user in exist:
        print("С возвращением!")
    else:
        db_worker.new_user(update.message.chat_id)

    markup = telegram.ReplyKeyboardMarkup(config.start_keyboard)
    bot.send_message(chat_id=update.message.chat_id,
                     text='This is tomato timer. Please, choose any option.',
                     reply_markup=markup)
    dp.remove_handler(not_started)
    dp.add_handler(
        RegexHandler("^(Work)$",
                     work_timer,
                     pass_chat_data=True,
                     pass_job_queue=True))
    dp.add_handler(
        RegexHandler("^(Rest)$",
                     rest_timer,
                     pass_chat_data=True,
                     pass_job_queue=True))
    dp.add_handler(
        RegexHandler("^(Send Feedback)$",
                     feedback_handler,
                     pass_chat_data=True))
    dp.add_handler(RegexHandler("^(Settings)$", settings_handler))
    dp.add_handler(RegexHandler("^(Stop)$", unset, pass_chat_data=True))
Example #9
0
def start_message(message):
    # обрезка команды в тексте пользователя
    short_url_account = message.text[7:]
    # проверка на правильность ввода команды
    if len(short_url_account) == 0:
        bot.send_message(message.chat.id, 'Введите адрес аккаунта')
        return
    # проверка на ввод полной ссылки или краткой
    if '/' or ' ' in short_url_account:
        short_url_account = str_clear(short_url_account)
    # проверка на существование аккаунта
    if check_account(short_url_account) == False:
        bot.send_message(message.chat.id, 'Неккоректный адрес аккаунта')
        return
    # запись имени пользователя
    username = message.from_user.username
    # запись имени отслежимаемого аккаунта
    track_accouunt = message.text[6:]
    # поиск ссылки последнего поста в html коде
    link_last_post = find_link_last_post(short_url_account)
    # поиск ссылки последней истории в html коде
    link_last_story = find_link_last_story(short_url_account)
    print('1-' + username + '\n')
    print('1-' + track_accouunt + '\n')
    print('1-' + link_last_post + '\n')
    print('1-' + link_last_story + '\n')

    bot.send_message(message.chat.id,
                     '1-' + username + '\n2-' + track_accouunt)
    # Подключаемся к БД
    db_worker = SQLighter(config.database_name)
    # Отсоединяемся от БД
    db_worker.close()
def game_7_18_not_9_10(message):
    #получаем сообщение пользователя
    message_namber = message.text
    #разбиваем сообщение на части, делитель - символ /
    answer_number = message_namber.split('/')
    # Подключаемся к БД
    db_worker = SQLighter(config.database_name)
    # Получаем случайную строку из БД по номеру таблицы взятую из сообщения answer_number
    row = db_worker.select_single(
        random.randint(1, utils.get_rows_count(answer_number[1])),
        answer_number[1])
    if answer_number[1] == '7' or answer_number[1] == '11' or answer_number[
            1] == '12':
        # Отправляем вводную часть вопроса
        bot.send_message(message.chat.id, row[2])
        # Отправляем картинку
        bot.send_photo(message.chat.id, row[1])
    elif answer_number[1] == '8':
        # Отправляем вводную часть вопроса с форматированием
        bot.send_message(message.chat.id, row[2], parse_mode='HTML')
        # Отправляем основную часть вопроса
        bot.send_message(message.chat.id, row[1])
    # Отправляем вопрос
    bot.send_message(message.chat.id, row[3])
    # Включаем "игровой режим"... ждем ответа от пользователя
    utils.set_user_game(message.chat.id, row[4], row[5])
    # Отсоединяемся от БД
    db_worker.close()
Example #11
0
def callback_query(call):
    chat_id = call.message.chat.id
    base = SQLighter(config.database_name)
    player = base.select_single(chat_id)
    i = int(call.data[0])
    j = int(call.data[1])
    if not utils.update_board(chat_id, i, j, True):
        bot.answer_callback_query(call.id, 'Выберите пустую ячейку!')
    else:
        if utils.check_win(chat_id):
            bot.send_message(chat_id, 'Поздравляю, ты победил(а)!')
            return
        elif player[2] == 8:
            bot.send_message(chat_id, 'Победила дружба!')
            return
        utils.bot_move(chat_id)
        if utils.check_win(chat_id):
            bot.send_message(chat_id, 'К сожалению, ты проиграл!')
            return
        elif player[2] == 7:
            bot.send_message(chat_id, 'Победила дружба!')
            return
        global prev_msg
        if prev_msg != '':
            bot.delete_message(chat_id, prev_msg)
        msg = bot.send_message(chat_id,
                               'Твой ход!',
                               reply_markup=utils.create_markup(chat_id))
        prev_msg = msg.message_id
Example #12
0
def send_new_posts_from_web(items, sourse_site):
    db = SQLighter(DATABASE)
    last_id = None
    for key, item in items['text'].items():
        if db.add_event((key, SOURCES[sourse_site])):
            body = '\n'.join(item)
            target_group = items['target_level'][key]
            target_news = items['target_news'][key]

            text = '#{}\n{} {}\n{}'.format(sourse_site, target_group,
                                           target_news, body)

            target_level = str(
                text_worker.get_target_group([body], described=False)[0])
            target_news = str(
                text_worker.get_news_group([body], described=False)[0])

            bot.send_message(
                CHANNEL_NAME,
                text,
                disable_notification=is_news_irrelevant(target_news))
            text_worker.write_text_to_json(key,
                                           target_level=target_level,
                                           target_news=target_news,
                                           text=[body])
        else:
            logging.info('New last_id (website) in public {!s} is {!s}'.format(
                sourse_site, key))
            break
        time.sleep(1)
    return
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()
Example #14
0
def count_rows():
    """Count amount of rows in database and save in storage.
    Then chose music among them"""
    db = SQLighter(database_name)
    rowsnum = db.count_rows()
    with shelve.open(shelve_name) as storage:
        storage["rows_count"] = rowsnum
def start_handler(message):
    uid = str(message.from_user.id)
    # cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    # print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)

    step[uid] = {'cur': '', 'path': []}
    step[uid]['path'].append('start')
    step[uid]['cur'] = 'start'

    full_name = message.from_user.first_name
    if message.from_user.last_name is not None: full_name += " " + message.from_user.last_name

    if not db.has_user(uid):
        username = '' if message.from_user.username is None else message.from_user.username
        db.save_user_info(uid, full_name, username, '')

    lst = db.get_messages(step[uid]['cur'])
    if lst:
        text = lst[0].format(full_name) + "\n" + lst[1]
        m = markup(db, step[uid]['cur'])
        db.close()
        bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
    else:
        db.close()
        print(str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + " " + uid + ': database error')
Example #16
0
def count_rows():
    # Метод считает общее количество строк в БД и помещает в хранилище. Потом из этого количества будем выбирать музыку
    db = SQLighter(database_name)
    rowsnum = db.counts_rows()
    with shelve.open(
            shelve_name
    ) as storage:  # with: Python сам берет на себя управление закрытием хранилища.
        storage['rows_count'] = rowsnum
Example #17
0
def choose_photo(message):
    type_of_cntent = 'photo'
    db_worker = SQLighter(config.database_name2)
    row = db_worker.select_single(random.randint(1, Base_of_data.get_rows_count(type_of_cntent='photo')))
    markup = Base_of_data.generate_markup(row[2], row[3])
    bot.send_photo(message.chat.id, row[1], reply_markup=markup)
    Base_of_data.set_user_game(message.chat.id, row[2])
    db_worker.close()
Example #18
0
def game(message):
    type_of_cntent = 'music'
    db_worker = SQLighter(config.database_name)
    row = db_worker.select_single(random.randint(1, Base_of_data.get_rows_count(type_of_cntent)))
    markup = Base_of_data.generate_markup(row[2], row[3])
    bot.send_voice(message.chat.id, row[1], reply_markup=markup, duration=20)
    Base_of_data.set_user_game(message.chat.id, row[2])
    db_worker.close()
Example #19
0
def reset_day():
    try:
        db_worker = SQLighter(config.database_name)
        db_worker.reset_day()
    except Exception as e:
        logging.error(e)

    logging.info(u'Reset module ended')
Example #20
0
def send_test_messages(message):	
    new_delay = message.text[(message.text.find(' ')+1):len(message.text)]
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    auto_delay, auto_starttime, auto_endtime, auto_enabled = db_worker.LoadSettings(message.chat.id)
    db_worker.SaveSettings(message.chat.id,new_delay,auto_starttime, auto_endtime, auto_enabled)
    db_worker.close()
    bot.send_message(message.chat.id, '#Settings: set auto_delay to ' + str(new_delay)) 
Example #21
0
def count_rows():
    """
        Данный метод достает из базы общее колличество
        строк с вопросами и сохраняет их в хранилище
    """
    db = SQLighter(database_name)
    rowsnum = db.count_rows()
    with shelve.open(shelve_name) as storage:
        storage['row_count'] = rowsnum
Example #22
0
def send_test_messages(message):
        db_worker = SQLighter(config.database_name)
        db_worker.TableExists(message.chat.id)
        sidea = message.text[11:(message.text.find(' ', 5))]
        sideb = message.text[((message.text.find(' ', 5))+1):len(message.text)]
        db_worker.AddCardstoDB(str(db_worker.getlastid(message.chat.id)+1),sidea.lower(),sideb.lower(),message.chat.id)
        Utils.count_rows(message.chat.id)
        bot.send_message(message.chat.id, 'Новая карточка ['+sidea+' - '+sideb+'] успешно добавлена. Текущее кол-во карточек: '+str(Utils.count_rows(message.chat.id)))
        db_worker.close()
Example #23
0
def go(message, enable):
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    auto_delay, auto_starttime, auto_endtime, auto_enabled = db_worker.LoadSettings(message.chat.id)
    db_worker.close() 
    if (str(auto_enabled) == '1') and (datetime.now().hour > auto_starttime) and (datetime.now().hour < auto_endtime) : # try if thread isnot alive and /auto is ON 
        checkcard(message) # запускаем ф-ю /n с последним message (оттуда берем message.chat.id)
    if enable == 1:
       threading.Timer(auto_delay, lambda: go(message,1)).start()
Example #24
0
def count_rows():
    """
    It counts rows in database
    :return: rows number
    """
    db = SQLighter(database_name)
    rowsnum = db.count_rows()
    with shelve.open(shelve_name) as storage:
        storage['rows_count'] = rowsnum
Example #25
0
def count_rows():
    """
    Данный метод считает общее количество строк в базе данных и сохраняет в хранилище.
    Потом из этого количества будем выбирать музыку.
    """
    db = SQLighter(database_name)
    rowsnum = db.count_rows()
    with shelve.open(shelve_name) as storage:
        storage['rows_count'] = rowsnum
Example #26
0
def start(message):
    chat_id = message.chat.id

    base = SQLighter(config.database_name)
    if not base.check_player(chat_id):
        base.insert_player(chat_id)

    text = u"Привет! Я учебный игровой бот. Давай сыграем в крестики-нолики?\nДля начала игры введи /play.\nДля просмотра команд введи /help."
    bot.send_message(chat_id, text)
def count_rows():
    """
    Данный метод считает общее количество строк в базе данных и сохраняет в хранилище.
    Потом из этого количества будем выбирать музыку.
    """
    db = SQLighter(database_name)
    rowsnum = db.count_rows()
    with shelve.open(shelve_name) as storage:
        storage['rows_count'] = rowsnum
Example #28
0
def send_test_messages(message):
   db_worker = SQLighter(config.database_name)
   db_worker.TableExists(message.chat.id)
   sidea = message.text[6:len(message.text)] 
   if len(db_worker.FindSideA(sidea,message.chat.id)) == 0:
      bot.send_message(message.chat.id, 'Указанной карточки не существует.')
   else:
      db_worker.delete_from_DB(sidea.lower(),message.chat.id)
      bot.send_message(message.chat.id, sidea+' успешно удалено.')
   db_worker.close()
Example #29
0
def SQLInsertTest1():
	db_worker = SQLighter(config.database_name)

	obj = Record("Insert Test 1 message", 0001, 0000, 1000)

	msg = db_worker.insert_single(obj)

	db_worker.close()

	return "Complete"
def clear_item(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": delete " + message.text)

    db = SQLighter(config.database_name)
    db.delete_request(uid, message.text)
    text = db.get_messages('Оплата')[0].format(message.text) + "\n"

    total = 0
    reqs = db.get_requests(uid)

    if len(reqs) == 0:
        text = db.get_messages('recycle_empty')[0]
        step[uid]['path'].pop()
        step[uid]['cur'] = step[uid]['path'][-1]
        m = markup(db, step[uid]['cur'])
    else:
        for i in reqs:
            if len(i) >= 3:
                text += str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                total += int(i[1]) * int(i[2])
        text += "\nВсего: {} сум".format(total)
        m = markup(db, step[uid]['cur'], uid)
    db.close()
    bot.send_message(message.from_user.id, text, reply_markup=m, parse_mode='HTML')
def comment_handle(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    if db.has_user(uid):
        t = ''
        if len(message.text.split(' ')) > 2:
            for i in message.text.split(' ')[1:]:
                t += i + ' '
            t = t[:-1]
        else:
            t = message.text.split(' ')[-1]
        step[uid]['cur'] = t
        step[uid]['path'].append(step[uid]['cur'])
        text = db.get_messages(step[uid]['cur'])
        if len(text) > 0:
            text = text[0]
            m = markup(db, step[uid]['cur'])
            db.close()
            bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
        else:
            db.close()
            print(
                str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + " " + uid + ': database error')
    else:
        text = db.get_messages('Невозможно оставить отзыв')[0]
        bot.send_message(message.chat.id, text, parse_mode='HTML')
Example #32
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()
Example #33
0
def random_workout(message, markup):
    db_worker = SQLighter(config.database_name)
    row = db_worker.get_rand()
    if message.text == "":
        pass
    else:
        bot.send_message(message.chat.id, row[4])
        bot.send_message(message.chat.id, row[3])
        bot.send_document(message.chat.id, row[1], reply_markup=markup)  # 2 arguement = FILE_ID
    time.sleep(3)
    db_worker.close()
Example #34
0
def callback_query(message):
    chat_id = message.chat.id
    base = SQLighter(config.database_name)
    if message.text == 'Крестик' or message.text == 'Нолик':
        base.update_badge(chat_id, (1 if message.text == 'Крестик' else 0))
        utils.clear_board(chat_id)
        msg = bot.send_message(chat_id,
                               'Твой ход!',
                               reply_markup=utils.create_markup(chat_id))
        global prev_msg
        prev_msg = msg.message_id
Example #35
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()
Example #36
0
def SQLSelectTest1():
	db_worker = SQLighter(config.database_name)

	fire_time = 1000

	list = db_worker.select_fire_list(fire_time)

	db_worker.close()

	print(list)
	return "Complete"
Example #37
0
def game(message):
    db_worker = SQLighter(config.database_name)
    if db_worker.check_new_user(message.chat.id) == False:
        db_worker.save_user(message.chat.id)
    else:
        db_worker.reset_user(message.chat.id)
    next_song(message)
    db_worker.close()           
Example #38
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
Example #39
0
def rest_timer(bot, update, job_queue, chat_data):
    config.start_keyboard[0][1] = 'Stop'
    markup = telegram.ReplyKeyboardMarkup(config.start_keyboard)
    chat_id = update.message.chat_id
    db_worker = SQLighter(config.database_name)
    due = float(db_worker.select_rest(update.message.chat_id).fetchone()[0])
    job = job_queue.run_once(alarm, due * 60, context=chat_id)
    chat_data['job'] = job
    bot.send_message(text='Now you can rest {:.7g} minutes.'.format(
        float(due)),
                     chat_id=chat_id,
                     reply_markup=markup)
Example #40
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()
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()
Example #42
0
def checkanswer(message): 
  # Подключаемся к БД
    Right = 0
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    auto_delay, auto_starttime, auto_endtime, auto_enabled = db_worker.LoadSettings(message.chat.id)
    if Utils.count_rows(message.chat.id) == 0:
       bot.send_message(message.chat.id, 'Нет ни одной карточки')
       db_worker.close()
       return
    rowid,colid= db_worker.get_last_rowid(message.chat.id)
    row = db_worker.select_single(rowid,message.chat.id)  # ищем строку исп. последней
    # смотрим какую сторону карточки проверяем
    if colid == 2: # если сторону B то надо проверять все вхождения
       for answ in row[colid].split(';'):
          if message.text.upper() == answ.upper().strip(' '):
              Right = 1 #ответили правильно
    else:
       if message.text.upper() == row[colid].upper(): # проверяем ответ
          Right = 1
    # Отсоединяемся от БД
    db_worker.close()
    if Right == 1:
       bot.send_message(message.chat.id, 'Правильно!')
       if (auto_enabled == '0'):
          checkcard(message)
    else:
       bot.send_message(message.chat.id, 'Неправильно!')
def cmd_new_alarm(message):
    mydb = SQLighter(config.database_schedules_file)
    # If not in VIP list - exit
    if mydb.count_entries_for_id(message.chat.id) == 5 and int(message.chat.id) not in config.vip_list:
        bot.send_message(message.chat.id, config.lang.s_error_maximum_number_of_notes)
        mydb.close()
        return None

    set_new_state(message.chat.id, StateMachine.States.STATE_NEWALARM)

    # if user haven't set timezone - ask him to set one
    if not offset_storage.exists(str(message.chat.id)):
        logger.debug('User {0!s} is going to set new alarm. It\'s his first appear'.format(
            str(message.from_user.username) + ' (' + str(message.chat.id) + ')'))
        set_new_state(message.chat.id, StateMachine.States.STATE_SETTING_TIMEZONE_FOR_ALARM)
        bot.send_message(message.chat.id, config.lang.s_common_guide_timezone)
    # if we already have his timezone saved - ask him to set time
    else:
        logger.debug('User {0!s} is going to set new alarm. He has been here before'.format(
            str(message.from_user.username) + ' (' + str(message.chat.id) + ')'))
        set_new_state(message.chat.id, StateMachine.States.STATE_SETTING_TIME)
        bot.send_message(message.chat.id, config.lang.s_common_guide_time)
Example #44
0
def send_test_messages(message):
    global threads
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    auto_delay, auto_starttime, auto_endtime, auto_enabled = db_worker.LoadSettings(message.chat.id)
    print
    if str(auto_enabled) == '0':
       bot.send_message(message.chat.id, 'Автоповторение запущено (каждые '+str(auto_delay)+' сек с '+str(auto_starttime)+' часов до '+ str(auto_endtime)+' часов)')
       db_worker.SaveSettings(message.chat.id,auto_delay,auto_starttime, auto_endtime, 1)
       go(message,1)
    #   threads.append([])
    #   t = threading.Timer(auto_delay, lambda: go(message)) # creating thread
    #   threads[len(threads)-1].append(message.chat.id)
    #   threads[len(threads)-1].append(t)
    #   t.start() 
    elif str(auto_enabled) == '1':
       bot.send_message(message.chat.id, 'Автоповторение отключено')
       db_worker.SaveSettings(message.chat.id,auto_delay,auto_starttime, auto_endtime, 0)
       go(message,0)
    #   for thr in threads:
    #       if thr[0] == message.chat.id:
    #          thr[1].cancel()
    #          thr.remove
    db_worker.close()
Example #45
0
def send_test_messages(message):
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    if Utils.count_rows(message.chat.id) == 0:
       bot.send_message(message.chat.id, 'Нет ни одной карточки')
       db_worker.close()
       return
    rowid,colid= db_worker.get_last_rowid(message.chat.id)
    row = db_worker.select_single(rowid,message.chat.id)  # ищем строку исп. последней  
    Utils.GetVoice(row[1])
    voice = open('yasound.ogg', 'rb')
    bot.send_voice(message.chat.id, voice)
    # Отсоединяемся от БД
    db_worker.close()
Example #46
0
def SQLUpdateTest1():
	db_worker = SQLighter(config.database_name)

	fire_time = 1000

	list = db_worker.select_fire_list(fire_time)
	for obj in list:
		print(obj.period)
		obj.firetime += obj.period
	db_worker.update_fire_list(list)
	list = db_worker.select_fire_list(fire_time+100)
	db_worker.close()

	print(list)
	return "Complete"
Example #47
0
def send_test_messages(message):
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    if Utils.count_rows(message.chat.id) == 0:
       bot.send_message(message.chat.id, 'Нет ни одной карточки')
       db_worker.close()
       return
    rowid,colid= db_worker.get_last_rowid(message.chat.id)
    row = db_worker.select_single(rowid,message.chat.id)  # ищем строку исп. последней    
    help_answer = row[Utils.reverse(colid)]
    for a in help_answer:
       if random.randint(1,2) == 1:
          help_answer = help_answer.replace(a,'.')
    bot.send_message(message.chat.id, 'Подсказка: '+ help_answer)
    # Отсоединяемся от БД
    db_worker.close()
Example #48
0
def send_test_messages(message):
    global auto_start
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    auto_delay, auto_starttime, auto_endtime, auto_enabled = db_worker.LoadSettings(message.chat.id)
    if Utils.count_rows(message.chat.id) == 0:
       bot.send_message(message.chat.id, 'Нет ни одной карточки')
       db_worker.close()
       return
    rowid,colid = db_worker.get_last_rowid(message.chat.id)
    row = db_worker.select_single(rowid,message.chat.id)  # ищем строку исп. последней   
    bot.send_message(message.chat.id, 'Правильный ответ: '+row[Utils.reverse(colid)])
    # Отсоединяемся от БД
    db_worker.close()
    if (auto_enabled == '0'):
       checkcard(message)
Example #49
0
def checkcard(message):
    # Подключаемся к БД
    db_worker = SQLighter(config.database_name)
    db_worker.TableExists(message.chat.id)
    # Получаем случайную строку из БД
    if Utils.count_rows(message.chat.id) == 0:
       bot.send_message(message.chat.id, 'Нет ни одной карточки')
       db_worker.close()
       return
    colid = random.randint(1,2) # выбираем случайный столбец англ\рус (поставить тут условие в настройках)       
    row = db_worker.select_random(message.chat.id) # присваеваем переменной случайную строку из БД
    #Utils.setrID(row[0],rrow) # запиываем какую строку и сторону использовали
    db_worker.set_last_rowid(message.chat.id, row[0],colid) # записываем в базу id строки и колонку
    if colid == 2: #Если столбец второй, с русским переводом то берем одно из значений
        sideb_list = row[colid].split(';') # разбили строку по ; в лист
        bot.send_message(message.chat.id, '# '+sideb_list[random.randint(1,len(sideb_list))-1])
    else: 
        bot.send_message(message.chat.id, '# '+row[colid]) # отправляем sidea целиком
    # Отсоединяемся от БД
    db_worker.close()
Example #50
0
def doit(message):	
	if len(message.text.split()) > 1:
		msg = message.text.split()[1]
		db_worker = SQLighter(config.database_name)
		db_worker.insert_single(message.chat.id, msg)
		db_worker.close()
Example #51
0
def count_rows(tname):
    db = SQLighter(database_name)
    rowsnum = db.count_rows(tname)
    with shelve.open(shelve_name) as storage:
        storage['rows_count'] = rowsnum
    return rowsnum
#!/usr/bin/python3.4
# -*- coding: utf-8 -*-
"""
Removes outdated entries from DB (used to lower usage count)
"""
from config import database_schedules_file, log_name
from SQLighter import SQLighter
from time import time

db = SQLighter(database_schedules_file)
import logging

logger = logging.getLogger(log_name)
logging.basicConfig(filename=log_name + '.log',
                    format='[%(asctime)s] OLD_REMOVER %(levelname)s - %(message)s',
                    datefmt='%d.%m.%Y %H:%M:%S')
logger.setLevel(logging.INFO)
try:
    number_of_deleted = db.delete_old(int(time())).rowcount
    logger.info('Finished processing old rows. Rows deleted: {0!s}'.format(number_of_deleted))
except Exception as ex:
    logger.error('Failed to process old rows: {0!s}'.format(str(ex)))