Beispiel #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()
def add_addres(bot, update):
    chat_id = update.message.chat_id
    address = update.message.text

    if address == 'cancel':
        update.message.reply_text('Cancel', reply_markup=main_markup)
        return MAIN_MENU
    else:
        answer = str(balance(coin, address))
        if 'not found' in answer or not (address.isalnum()):
            string = 'The address ***' + address + '*** can not be found in the explorer for the coin ***' + coin + '***\nEnter the address of the wallet'
            logger.warning(
                'The address can not be found in the explorer for the coin for chat_id %s',
                chat_id)
            bot.send_message(chat_id=update.message.chat_id,
                             text=string,
                             parse_mode='MARKDOWN')
            return ADD_ADDRESS
        else:
            update.message.reply_text('Added coin ***' + coin +
                                      '*** with address ***' + address + '***',
                                      parse_mode='MARKDOWN',
                                      reply_markup=main_markup)

            # Add to DB
            db_worker = SQLighter(database_name)
            db_worker.add_address('users_address', chat_id, coin, address)
            db_worker.close()
            return MAIN_MENU
Beispiel #3
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 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
Beispiel #5
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 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')
Beispiel #7
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 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()
Beispiel #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()
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')
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')
def step_comment(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.from_user.last_name is not None:
        comment = message.from_user.first_name + " " + message.from_user.last_name + "    \n"
    else:
        comment = message.from_user.first_name + "\n"

    if message.from_user.username is not None:
        comment += "@" + message.from_user.username + "\n\n"
    comment += message.text + "\n\n" + str(cur_time)
    db.save_comment(uid, comment, str(cur_time))

    text = db.get_messages('Спасибо за отзыв')
    db.loyalty_decrement(uid)
    if len(text) > 0:
        text = text[0]
    else:
        text = db.get_messages('Спасибо за отзыв')
        print(str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + " " + uid + ': database error')

    admin_message = "<b>Отзыв:</b>" + "\n" + comment
    admins = db.get_admin_list()
    for i in admins:
        bot.send_message(i, admin_message, parse_mode='HTML')

    step[uid]['path'].pop()
    step[uid]['cur'] = step[uid]['path'][-1]
    m = markup(db, step[uid]['cur'])
    db.close()
    bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
def step_start(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)
    start_btns = db.get_buttons(step[uid]['cur'])

    # отрезаем смайл
    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]
    fucking_flag = 0
    for button in start_btns:
        if t is not None and t == button:
            fucking_flag = 1
            step[uid]['cur'] = button
            step[uid]['path'].append(step[uid]['cur'])
            break

    msgs = db.get_messages(step[uid]['cur'])
    if len(msgs) > 0:
        text = msgs[0]

        m = markup(db, step[uid]['cur'], uid)
        if m is None and (t == 'Корзина' or t == 'Оформить'):
            step[uid]['path'].pop()
            step[uid]['cur'] = step[uid]['path'][-1]
            text = db.get_messages('recycle_empty')[0]
            m = markup(db, step[uid]['cur'])

        elif t == "Корзина":
            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) + "\n\n" + msgs[1]

        db.close()
        if fucking_flag:
            bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
        else:
            pass

    else:
        db.close()
        print(str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + "| " + uid + ': database error')
Beispiel #15
0
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)
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')
Beispiel #17
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)) 
Beispiel #18
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()
Beispiel #19
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()           
Beispiel #20
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()
Beispiel #21
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()
Beispiel #22
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()
Beispiel #23
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"
Beispiel #24
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()
Beispiel #25
0
def delete(message):
    db_worker = SQLighter(config.database_name)
    i = 0
    while i < utils.get_rows_count():
        i = i + 1
        row = db_worker.select_single(i)
        if row[3] == str(message.chat.id):
            db_worker.del_id(i)
            bot.send_message(message.chat.id, "Видалення прив'язки до id (" + str(row[1]) + ") було успішним")
            break
    db_worker.close()
Beispiel #26
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()
Beispiel #27
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()
Beispiel #28
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()
Beispiel #29
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"
Beispiel #30
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
Beispiel #31
0
def send_grades(message):
    db_worker = SQLighter(config.database_name)
    i = 0
    n = 4
    while i < utils.get_rows_count():
        row = db_worker.select_single(i+1)
        if row[3] == str(message.chat.id):
            while n < 7:
                bot.send_message(message.chat.id, str(row[1])+" ("+str(row[n]) + ") = " + str(row[n+1]))
                n = n + 2
            break
        i = i + 1
    db_worker.close()
Beispiel #32
0
def Set_ID(message):
    db_worker = SQLighter(config.database_name)
    i = 0
    mass = []
    while i < utils.get_rows_count():
        row = db_worker.select_single(i+1)
        mass.append(row[2])
        i = i + 1

    bot.send_message(message.chat.id, "*примітка (якщо вивведете невірний номер, буде ввімкнена затримка)\n" +
                                      "Введіть номер зілікової книги:")
    utils.set_user_game(message.chat.id, mass)
    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()
Beispiel #34
0
def subjects_print(message):
    """ Метод возвращает список предметов """
    db_worker = SQLighter(config.db_name)
    result = utils.sql_result_to_string(db_worker.get_subjects())
    result = result.split(', ')
    result_message = ""

    for i in range(0, len(result) - 1, 3):
        result_message += "[{}]({}), _{}_;".format(result[i], result[i + 1],
                                                   result[i + 2])

    bot.send_message(message.chat.id, result_message, parse_mode='Markdown')
    db_worker.close()
Beispiel #35
0
def work_timer(bot, update, job_queue, chat_data):
    config.start_keyboard[0][0] = 'Stop'
    markup = telegram.ReplyKeyboardMarkup(config.start_keyboard)
    chat_id = update.message.chat_id
    db_worker = SQLighter(config.database_name)
    due = float(db_worker.select_work(update.message.chat_id).fetchone()[0])
    db_worker.close()
    job = job_queue.run_once(alarm, due * 60, context=chat_id)
    chat_data['job'] = job
    bot.send_message(text='Start work now! You have {:.7g} minutes.'.format(
        float(due)),
                     chat_id=chat_id,
                     reply_markup=markup)
Beispiel #36
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()
Beispiel #37
0
def handle_timetable(message, course, group, day):
    db_worker = SQLighter(config.database_name)
    if course == "3course":
        print("3 COURSE")
        if day == 0:
            print("000000")
            if today_tomorrow()[0] < 5:

                timetable = db_worker.select_timetable(
                    course, group, weekdays[today_tomorrow()[0]])
                print(timetable[0][0])
                st = str(timetable[0][0])
                msg = bot.send_message(message.chat.id,
                                       text=st,
                                       parse_mode="HTML",
                                       reply_markup=back_keyboard)
                bot.register_next_step_handler(msg, handle_menu)
            else:
                msg = bot.send_message(message.chat.id,
                                       text="Today is a day off!",
                                       reply_markup=back_keyboard)
                bot.register_next_step_handler(msg, handle_menu)
        elif day == 1:
            if today_tomorrow()[1] < 5:
                timetable = db_worker.select_timetable(
                    course, group, weekdays[today_tomorrow()[1]])
                st = str(timetable[0][0])
                msg = bot.send_message(message.chat.id,
                                       text=st,
                                       parse_mode="HTML",
                                       reply_markup=back_keyboard)
                bot.register_next_step_handler(msg, handle_menu)
            else:
                msg = bot.send_message(message.chat.id,
                                       text="Tomorrow is a day off!",
                                       reply_markup=back_keyboard)
                bot.register_next_step_handler(msg, handle_menu)
        elif day == 2:
            timetable = db_worker.select_week(course, group)
            global days
            days = ""
            for s in timetable:
                days = days + s[0] + "\n\n" + s[1] + "\n\n" + s[
                    2] + "\n\n" + s[3] + "\n\n" + s[4] + "\n\n"
                print(days)
            msg = bot.send_message(message.chat.id,
                                   text=days,
                                   parse_mode="HTML",
                                   reply_markup=back_keyboard)
            bot.register_next_step_handler(msg, handle_menu)
    db_worker.close()
def handle_back(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)

    if step[uid]['path'][-1] != 'start':
        if step[uid]['cur'] == 'Размер':
            step[uid]['path'].pop()
            step[uid]['cur'] = step[uid]['path'][-1]
        step[uid]['path'].pop()
        step[uid]['cur'] = step[uid]['path'][-1]

        # if step[uid]['cur'] in config.products_list:
        #    step[uid]['path'].pop()
        #    step[uid]['cur'] = step[uid]['path'][-1]

        if step[uid]['cur'] == 'start':
            if uid in request:
                del request[uid]

        if step[uid]['cur'] == 'Оформить':
            del request[uid]['deliver']
            del request[uid]['longitude']
            del request[uid]['latitude']
            del request[uid]['destination']

        if step[uid]['cur'] == 'Адрес':
            del request[uid]['info']

        if step[uid]['cur'] == 'Контакт':
            del request[uid]['additional']

        if step[uid]['cur'] == 'Дополнительно':
            del request[uid]['payment']

        db = SQLighter(config.database_name)
        m = markup(db, step[uid]['cur'], uid)
        msgs = db.get_messages(step[uid]['cur'])

        if step[uid]['cur'] == 'start':
            text = msgs[1]

        elif step[uid]['cur'] in config.products_list or step[uid]['cur'] in config.type_list:
            m = fuck_markup(db, step[uid]['cur'], uid)
            text = db.get_messages('choose')[0]

        else:
            text = msgs[0]
        db.close()

        bot.send_message(message.from_user.id, text, reply_markup=m, parse_mode='HTML')
Beispiel #39
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()
Beispiel #40
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()
Beispiel #41
0
def music_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()
Beispiel #42
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"
Beispiel #43
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)
Beispiel #44
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()
Beispiel #45
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()
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)
Beispiel #47
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()
Beispiel #48
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()