def station_search(message): result = dbworker.fetch_stations(message.text, message.chat.id) if not result: bot.send_message(message.chat.id, 'К сожалению такую станцию найти не удалось') dbworker.set_state(message.chat.id, config.States.S_START.value) else: keyboard = types.InlineKeyboardMarkup() result_message = 'Выберите станцию из списка:\n\n' # Цикл for для создания колбек клавиш, для переходя по станциям # Переход по нужной станции производится нажатием на колбек кнопку с определенной информацией о станции for station in result: result_message += station[1] + '\n' + station[2] + '\n\n' if dbworker.get_state( message.chat.id) == config.States.S_STATIONSEARCH.value: keyboard.add( types.InlineKeyboardButton(text=station[1], callback_data='Some_station ' + str(station[0]))) if dbworker.get_state( message.chat.id) == config.States.S_THROUGHSTATIONS.value: keyboard.add( types.InlineKeyboardButton(text=station[1], callback_data='First_station ' + str(station[0]))) keyboard.add( types.InlineKeyboardButton(text='Назад', callback_data='Back_to_start')) bot.send_message(message.chat.id, result_message, reply_markup=keyboard)
async def what_answ(msg: types.Message): text = msg.text text = text.lower() changes = {change['word']: change['s'][0] for change in speller.spell(text)} for word, suggestion in changes.items(): text = text.replace(word, suggestion) if dbworker.get_state(msg.chat.id) == int(config.States.S_TRAIN): #человек в тренировке if text in list_0m: t = dbworker.get_answ(msg.chat.id) if t == "amusement": ino = list_1m elif t == "excitement": ino = list_1m elif t == "anger": ino = list_2m elif t == "awe": ino = list_3m elif t == "fear": ino = list_3m elif t == "contentment": ino = list_4m elif t == "disgust": ino = list_5m elif t == "sadness": ino = list_6m if text in ino: await bot.send_message(chat_id = msg.chat.id, text = "Правильный ответ!") ann = True else: ann = False answ = await true_answ(t) y = "Неправильно." file = dbworker.get_cur_file(msg.chat.id) #dbworker.change_one(msg.chat.id, file, ann) te = y + answ await bot.send_message(chat_id = msg.chat.id, text = te) else: file = dbworker.get_cur_file(msg.chat.id) t = dbworker.get_answ(msg.chat.id) #change_one(msg.chat.id, file, ann) answ = await true_answ(t) y = "Неправильно." te = y + answ await bot.send_message(chat_id = msg.chat.id, text = te) await in_training(msg.chat.id) elif dbworker.get_state(msg.chat.id) == int(config.States.S_THEME): #человек в темах для разговора text1 = azuretext.suggest(text) await bot.send_message(chat_id = msg.chat.id,text = text1, reply_markup = kb.inline_kb_back) elif dbworker.get_state(msg.chat.id) == int(config.States.S_OTV): #человек в обратной связи text1 = 'Спасибо, что поделился.' await bot.send_message(chat_id = msg.chat.id,text = text1, reply_markup = kb.inline_kb_back) else: pass
def get_journals(message): strpd_text = message.text.strip(',;_\'"').lower() user_id = message.chat.id if strpd_text not in ['lancet']: if not re.search('[a-zA-z]', strpd_text): bot.send_message( user_id, 'I\'m pretty sure no journal in the world is ' 'named like that. A letter is worth a thousand ' 'numbers in this case.\n' 'If you\'re somehow stuck - just do a new /search' ' or even /start, I promise, I will still ' ' remember you.') else: bot.send_message(user_id, 'Cmon man, just type in "lancet"') else: user_state = db.get_state(user_id) keywords_type = '' if user_state == sts.S_SEARCH_KEYWORDS.value: keywords_type = 'SEARCH' elif user_state == sts.S_SUB_KEYWORDS.value: keywords_type = 'SUB' db.set_user_terms(user_id, strpd_text, keywords_type, 'JOURNALS') next_state = f'sts.S_{keywords_type}_JOURNALS.value' exec(f'db.set_user_state(user_id, {next_state})') if db.get_state(user_id) == sts.S_SEARCH_JOURNALS.value: collected_articles = collect_articles(user_id, keywords_type) send_articles(user_id, collected_articles, keywords_type) db.set_user_state(user_id, sts.S_START.value) elif db.get_state(user_id) == sts.S_SUB_JOURNALS.value: user_keywords = db.get_keywords(user_id, 'SUB').split() user_journals = db.get_journals(user_id, 'SUB').split() collected_data = db.articles_by_keywords(user_keywords, user_journals) if not collected_data: bot.send_message( user_id, 'Fair warning:\nI have no ' 'matches with those keywords' ' in my archive. Your ' 'subscription probably won\'t' 'yield any results.') else: schedule_job(user_id) bot.send_message(user_id, 'Great! You have ' 'successfully subscribed!') db.set_user_state(user_id, sts.S_START.value)
def cmd_start(message): state = dbworker.get_state(message.chat.id) if state == dbworker.S_START: bot.send_message( message.chat.id, "Кажется, кто-то обещал отправить своё имя, но так и не сделал этого :( Жду..." ) elif state == dbworker.S_NAME: bot.send_message( message.chat.id, "Кажется, кто-то обещал отправить свой телефон, но так и не сделал этого :( Жду..." ) elif state == dbworker.S_PHONE: bot.send_message( message.chat.id, "Кажется, кто-то обещал отправить свою почту, но так и не сделал этого :( Жду..." ) elif state == dbworker.S_EMAIL: bot.send_message( message.chat.id, "Кажется, кто-то обещал отправить свое местопооложение, но так и не сделал этого :( Жду...", reply_markup=keyboard2) elif state == dbworker.S_ADDRESS: bot.send_message( message.chat.id, "Кажется, кто-то обещал отправить свои пожелания, но так и не сделал этого :( Жду..." ) elif state == dbworker.S_WISH: bot.send_message(message.chat.id, "Я все про вас знаю:)") #, reply_markup=keyboard3) else: bot.send_message(message.chat.id, "Привет! Введи свои ФИО", reply_markup=keyboard1)
def get_keywords(message): strpd_text = message.text.strip(',;_\'"') if not re.search('[A-Z a-z]', strpd_text): bot.send_message( message.chat.id, 'Sorry, I won\'t be able to find those keywords, ' 'try leaning more towards letters, not numbers.\n' 'For example: instead of "covid-19 try "covid".\n' 'If you\'re somehow stuck - just do a new /search' ' or even /start, I promise, I will still ' ' remember you.') else: user_state = db.get_state(message.chat.id) keywords_type = '' if user_state == sts.S_SEARCH.value: keywords_type = 'SEARCH' elif user_state == sts.S_SUB_TIME.value: keywords_type = 'SUB' db.set_user_terms(message.chat.id, strpd_text, keywords_type, 'KEYWORDS') bot.send_message( message.chat.id, 'Nice! Now send me the names of the journals you want' ' me to search in. Sadly at moment I can only ' 'look for things in one journal - \'Lancet\'. But I ' 'promise to become more diligent in the future. ') next_state = f'sts.S_{keywords_type}_KEYWORDS.value' exec(f'db.set_user_state(message.chat.id, {next_state})')
def cmd_start(message): # Проверяем состояние игрока state = dbworker.get_state(message.chat.id) if state == States.S_TEST.value: bot.send_message(message.chat.id, "Кажется, ты хотел выбрать тест. Пиши /test[номер задания] " "и следуй дальнейшим инструкциям") elif state == States.S_SWITCH.value: bot.send_message(message.chat.id, "Кажется, ты забыл включить/выключить проверку задания") elif state == States.S_DOC.value: bot.send_message(message.chat.id, "Кажется, кто-то хотел отправить txt файл с заданием, " "но так и не сделал этого :( Жду...") elif state == States.S_START.value: bot.send_message(message.chat.id, "Ты можешь выбрать следующее задание с помощью команды" "/test[номер задания]") dbworker.update_state(message.chat.id, States.S_TEST.value) else: # Под "остальным" понимаем состояние "0" - начало диалога bot.send_message(message.chat.id, "Привет! Выбирай задание с помощью команды " "/test[номер задания]") dbworker.remove_id(message.chat.id) dbworker.add_states(message.chat.id, States.S_TEST.value)
keyboard = types.InlineKeyboardMarkup() callback1 = types.InlineKeyboardButton(text='Вывести портфель', callback_data='Show crypto') callback2 = types.InlineKeyboardButton(text='Добавить', callback_data='Add') callback3 = types.InlineKeyboardButton(text='Удалить', callback_data='Delete') keyboard.add(callback1) keyboard.add(callback2, callback3) if dbworker.get_status(message.chat.id) is True: status = ['включены', 'отключения', '/off'] else: status = ['выключены', 'включения', '/on'] bot.send_message(message.chat.id, 'Уведомления о изменении ' + status[0] + ', для ' + status[1] + ' используйте команду ' + status[2], reply_markup=keyboard) @bot.message_handler(func=lambda message: (message.text and dbworker.get_state(message.chat.id) == config.States.S_ADD_CRYPTO.value)) def add_crypto(message): # Поиск криптовалюты в базе данных. Если найдено, то добавляем пользователю криптовалюту в портфель и выводим: db_result = dbworker.add_crypto(message.chat.id, message.text) if db_result is False: bot.send_message(message.chat.id, 'К сожалению такая криптовалюта не найдена. Возможно вы допустили ошибку, ' 'попробуйте еще раз.') else: keyboard = types.InlineKeyboardMarkup() callback1 = types.InlineKeyboardButton(text='Вывести портфель', callback_data='Show crypto') callback2 = types.InlineKeyboardButton(text='Добавить', callback_data='Add') callback3 = types.InlineKeyboardButton(text='Удалить', callback_data='Delete') keyboard.add(callback1) keyboard.add(callback2, callback3) bot.send_message(message.chat.id, db_result, reply_markup=keyboard) dbworker.set_state(message.chat.id, config.States.S_CLEAR_STATE.value)
async def send(callback_query: types.CallbackQuery): code = callback_query.data code = int(code) if code == 1: await bot.edit_message_text(chat_id=callback_query.message.chat.id, message_id=callback_query.message.message_id,text = "Эмоции", reply_markup = kb.inline_kb_emotion) elif code == 2: await bot.edit_message_text(chat_id=callback_query.message.chat.id, message_id=callback_query.message.message_id,text = "Темы для разговора. Напиши мне последнее, о чем ты говорил с собеседником или перешли его сообщение, и я подскажу, как продолжить разговор :)", reply_markup = kb.inline_kb_back) dbworker.set_state(callback_query.message.chat.id, int(config.States.S_THEME), "_", 0) elif code == 3: await bot.edit_message_text(chat_id=callback_query.message.chat.id, message_id=callback_query.message.message_id,text = "Описание", reply_markup = kb.inline_kb_des) elif code == 4: dbworker.set_state(callback_query.message.chat.id, int(config.States.S_TRAIN), "_", 0) chat = callback_query.message.chat.id if dbworker.was1(callback_query.message.chat.id) == True: dbworker.was(callback_query.message.chat.id) await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_message(chat_id=callback_query.message.chat.id, text = "На фотографии изображен либо человек, либо ситуация, описывающая эмоции. Давай попробуем определить, какие") await in_training(chat) elif code == 5: if dbworker.get_state(callback_query.message.chat.id) == int(config.States.S_TRAIN): await bot.send_message(chat_id = callback_query.message.chat.id,text = "Привет :) я могу помочь тебе в общении с людьми. Чтобы получить подробную информацию нажми на команду /help. ", reply_markup=kb.inline_kb_start) else: await bot.edit_message_text(chat_id=callback_query.message.chat.id, message_id=callback_query.message.message_id,text = "Привет :) я могу помочь тебе в общении с людьми. Чтобы получить подробную информацию нажми на команду /help.", reply_markup = kb.inline_kb_start) dbworker.set_state(callback_query.message.chat.id, int(config.States.S_START), "_", 0) elif code == 6: captio = '<b>Радость</b>\n<i>Аналоги</i>: Восторг, Ликование, Блаженство, Восхищение\n\nСчастливый человек улыбается. Это самый верный признак радости, удовлетворенности и всех сопряженных эмоций. В настоящей улыбке счастливого человека участвует все лицо: от бровей до подбородка. Этим она отличается от улыбки фальшивой: притворщик поднимает уголки губ, не задействуя щеки и мышцы вокруг глаз. \n\n<i>Выражение лица</i>: Губы растянуты за счет поднятия щек, в уголках глаз появляются морщинки, человек как будто немного жмурится от удовольствия.\n\n<i>Положение тела</i>: Люди двигаются легко и энергично, шагают широко и позволяют рукам раскачиваться.' await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) ran = dbworker.photo_des('happy1.png') await bot.send_photo(chat_id=callback_query.message.chat.id,photo = ran,caption= captio,parse_mode=types.ParseMode.HTML, reply_markup = kb.inline_kb_des1) elif code == 7: captio = '<b>Злость</b>\n<i>Аналоги</i>: Гнев, Раздражение, Ярость, Неистовство, Ненависть\n\n<i>Выражение лица</i>: брови нахмурены, глубокая складка на стыке бровей над переносицей;зубы стиснуты, скулы напряжены;рот закрыт, губы немного поджаты и сужены;глаза «страшные», т. е. открыты так широко, насколько позволяют опущенные брови;лицо немного наклонено вперед, взгляд исподлобья. \n\n<i>Положение тела</i>: Показывая пальцем на кого-то, человек демонстрирует агрессию; скрещенные руки на груди; сжатые в кулаки руки; корпус направлен вперед.' ran = dbworker.photo_des('anger1.png') await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_photo(chat_id=callback_query.message.chat.id,photo = ran,caption= captio,parse_mode=types.ParseMode.HTML, reply_markup = kb.inline_kb_des1) elif code == 8: captio = '<b>Страх</b>\n<i>Аналоги</i>: Беспокойство, Опасение, Настороженность, Тревожность, Испуг, Ужас\n\n<i>Выражение лица</i>: Брови подняты, сужены и вытянуты; морщинка над переносицей на стыке бровей; приподнятые верхние веки; рот приоткрыт, губы напряжены и слегка растянуты; глаза могут быть широко открыты. \n\n<i>Положение тела</i>: Движения того, кто испытывает страх, резкие и нерешительные. Он склонен поворачиваться боком к другим, пряча уязвимый торс, съеживаться, трястись.' ran = dbworker.photo_des('fear1.png') await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_photo(chat_id=callback_query.message.chat.id,photo = ran,caption= captio,parse_mode=types.ParseMode.HTML, reply_markup = kb.inline_kb_des1) elif code == 9: captio = '<b>Отвращение</b>\n<i>Аналоги</i>: Омерзение, Гадливость, Неприязнь\n\nВыражение отвращения называют «гримасой», т. к. в нем участвуют все лицевые мышцы, лицо человека резко преображается. Гримасу отвращения трудно с чем-то спутать, т. к. ни одна эмоция не вызывает столько мышечных сокращений сразу: под воздействием отвратительного зрелища лицо буквально сморщивается. \n\n<i>Выражение лица</i>: щеки подняты, переносица наморщена; глаза сильно сужены; рот приоткрыт, обнажены верхние зубы за счет приподнятой верхней губы. \n\n<i>Положение тела</i>: Сведенные вперед плечи, закрывающаяся поза, "защищающающаяся" от неприятного, корпус отодведён назад.' ran = dbworker.photo_des('disgust1.png') await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_photo(chat_id=callback_query.message.chat.id,photo = ran,caption= captio,parse_mode=types.ParseMode.HTML, reply_markup = kb.inline_kb_des1) elif code == 10: captio = '<b>Грусть</b>\n<i>Аналоги</i>: Грусть, Тоска, Ностальгия, Уныние, Безнадежность, Скорбь\n\nГрусть принято считать свойством взгляда, отсюда выражения вроде «грустные глаза», «тоска во взгляде» и т. п. На самом деле, единственная роль взгляда в грустном выражении лица – его отрешенность или направленность вниз в одну точку.\n\n<i>Выражение лица</i>: взгляд невидящий, рассеянный, направленный вовнутрь; глаза полуприкрыты; опущенные уголки губ в противоположность улыбке; рот закрыт, нижняя губа может быть немного выставлена вперед.\n\n<i>Положение тела</i>: Проявления грусти заметнее всего в верхней части торса — это слегка опущенные плечи и поникшая голова.' ran = dbworker.photo_des('sadness1.png') await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_photo(chat_id=callback_query.message.chat.id,photo = ran,caption= captio,parse_mode=types.ParseMode.HTML, reply_markup = kb.inline_kb_des1) elif code == 11: captio = '<b>Спокойствие</b>\n<i>Аналоги</i>: Умиротворение, Довольство, Удовлетворение\n\n<i>Выражение лица</i>: Лицо малоэмоционально, можно спутать с грустью, но взгляд подвижен, может быть лёгкая улыбка без зубов. \n\n<i>Положение тела</i>: Тело расслаблено, спина не напряжена, у большинства свои отличительные позы расслабленности.' ran = dbworker.photo_des('contentment1.png') await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_photo(chat_id=callback_query.message.chat.id,photo = ran,caption= captio,parse_mode=types.ParseMode.HTML, reply_markup = kb.inline_kb_des1) elif code == 12: t = dbworker.get_answ(callback_query.message.chat.id) tex = await true_answ(t) await bot.send_message(chat_id=callback_query.message.chat.id, text = tex) await in_training(callback_query.message.chat.id) elif code == 13: cha = callback_query.message.chat.id await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) await bot.send_message(chat_id=cha, text = "Описание", reply_markup = kb.inline_kb_des) elif code == 14: await bot.delete_message(callback_query.message.chat.id, callback_query.message.message_id) dbworker.set_state(callback_query.message.chat.id, int(config.States.S_OTV), "_", 0) await bot.send_message(chat_id=callback_query.message.chat.id, text = "Если тебе есть, что сказать, напиши это сюда", reply_markup = kb.inline_kb_back)
elif state == dbworker.S_WISH: bot.send_message(message.chat.id, "Я все про вас знаю:)") #, reply_markup=keyboard3) else: bot.send_message(message.chat.id, "Привет! Введи свои ФИО", reply_markup=keyboard1) @bot.message_handler(commands=['reset']) def user_delete_all(message): dbworker.del_all(message.chat.id) bot.send_message(message.chat.id, "Удалил все. Введи /start") @bot.message_handler(func=lambda message: dbworker.get_state(message.chat.id) == dbworker.S_START) def user_entering_name(message): bot.send_message( message.chat.id, "Отличное имя, запомню! Теперь укажи, пожалуйста, свой телефон") dbworker.save_name_value(message.chat.id, message.text, dbworker.S_NAME) @bot.message_handler( func=lambda message: dbworker.get_state(message.chat.id) == dbworker.S_NAME ) def user_entering_phone(message): if dbworker.check_value(message.text, dbworker.phone_pattern): bot.send_message(message.chat.id, "Спасибо! Теперь укажи, пожалуйста, свой e-mail.")
bot.send_message(message.chat.id, "Ты можешь выбрать следующее задание с помощью команды" "/test[номер задания]") dbworker.update_state(message.chat.id, States.S_TEST.value) else: # Под "остальным" понимаем состояние "0" - начало диалога bot.send_message(message.chat.id, "Привет! Выбирай задание с помощью команды " "/test[номер задания]") dbworker.remove_id(message.chat.id) dbworker.add_states(message.chat.id, States.S_TEST.value) """ Этот хэндлер работает с командами /test[n]. Админов он перенаправляет на On/Off теста Игроков на отправку документа """ @bot.message_handler(commands=exercises_list, func=lambda message: dbworker.get_state(message.chat.id) == States.S_TEST.value) def cmd_start(message): global index # Считывание номера задания index = ''.join(map(str, message.text.split('/test'))) if members_dict[message.chat.id] == "admin": bot.send_message(message.chat.id, " Тест {} \n" "On - включить проверку \n" "Off - выключить проверку ".format(index)) dbworker.update_state(message.chat.id, States.S_SWITCH.value) elif members_dict[message.chat.id] == "player": if ex_dict['ex' + index]['enable'] is True: bot.send_message(message.chat.id, "Жду от тебя задание №{} в формате txt".format(index)) dbworker.update_state(message.chat.id, States.S_DOC.value) elif ex_dict['ex' + index]['enable'] is False: bot.send_message(message.chat.id, "Проверка задания №{} пока закрыта".format(index))
department = dbworker.get_department_value(call.message.chat.id) if department == 1: result_message = GetSchedule.print_data_schedule( station_ids[2], station_ids[1]) else: result_message = GetSchedule.print_lviv_schedule( station_ids[2], station_ids[1]) for i in range(len(result_message) - 1): bot.send_message(call.message.chat.id, result_message[i]) bot.send_message(call.message.chat.id, result_message[-1], reply_markup=keyboard) dbworker.set_state(call.message.chat.id, config.States.S_START.value) @bot.message_handler(func=lambda message: (message.text and dbworker.get_state( message.chat.id) == config.States.S_SECONDSTATION.value)) def schedule_search(message): result = dbworker.fetch_stations(message.text, message.chat.id) if not result: bot.send_message(message.chat.id, 'К сожалению такую станцию найти не удалось') dbworker.set_state(message.chat.id, config.States.S_START.value) else: keyboard = types.InlineKeyboardMarkup() result_message = 'Выберите станцию из списка:\n\n' for station in result: result_message += station[1] + '\n' + station[2] + '\n\n' keyboard.add( types.InlineKeyboardButton(text=station[1], callback_data='Second_station ' + str(station[0])))
if selected_days: db.set_user_state(user_id, sts.S_SUB_DAYS.value) db.set_mailing_days(user_id, ','.join(selected_days)) bot.send_message( user_id, 'We are on track! ' 'Next order of business - time. ' 'To simplify the whole ordeal - ' 'just send me one number from 0 to 23 ' '- that would be the hour of day at ' 'which you would want to recieve your ' 'articles.') else: bot.send_message(user_id, 'Please select at least one day.') @bot.message_handler(func=lambda message: db.get_state(message.chat.id) == sts. S_SUB_DAYS.value and message.text.strip().lower() not in ('/search', '/subscribe', '/help', '/unsub')) def get_time(message): user_id = message.chat.id time = message.text.strip() if not time.isnumeric(): bot.send_message( user_id, 'That\'s not a very good input. ' 'I only need a time of day ' 'right now. One number from 0 to 23 ' 'will do nicely.') elif int(time) not in range(24): bot.send_message( user_id, 'So close! It\'s now a number, ' 'but it\'s still not in 0-23 range. '