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
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
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')
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()
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')
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')
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))
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()
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()
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()
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()
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()
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 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()
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()
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()
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 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 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"
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 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()
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()
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()
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)
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 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')
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_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()
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()
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"
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)
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()
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)
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()
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()