def first_menu(message): try: chat_id = message.chat.id markup = types.ReplyKeyboardMarkup(True, True) history = types.InlineKeyboardButton(content.BUTTON_HISTORY) duty = types.InlineKeyboardButton(content.BUTTON_MONEY) report = types.InlineKeyboardButton(content.BUTTON_REPORT) unreal = types.InlineKeyboardButton(content.BUTTON_UNREALSUM) markup.add(history) markup.add(duty) markup.add(report) markup.add(unreal) bot.send_message(chat_id, content.STR_SELECT_FROM_LIST(), reply_markup=markup) bot.register_next_step_handler(message, main_menu) return except Exception as e: bot.reply_to( message, 'error first menu. Contact the administrator and please DONT use bot.' )
def classroom_name_request(message, teacher, classroom): ru_text = "Отправьте новое название класса" en_text = "Send the name of the classroom" text = ru_text if teacher.language_code == 'ru' else en_text bot.send_message(message.chat.id, text) bot.register_next_step_handler(message, classroom_name_receive, classroom)
def money_intention_request(message): user = User.get(message.chat.id) ru_text = 'Выбери, куда пойдут твои деньги: *другу* или *на благотворительность*.\n\n' \ 'Если выберешь *другу*, то тебе нужно будет назначить своего друга ' \ 'в качестве судьи на этой привычке. ' \ 'Он будет следить за её выполнением и пинать тебя с моей помощью. ' \ 'Ему же ты должен будешь заплатить штраф в случае провала.\n\n' \ 'Если выберещь *благотворительность*, то штрафы будешь платить мне. ' \ 'А я 80% денег пожертвую детишкам на интернет: https://giveinternet.org' en_text = "Choose where your money will go: *to a friend* or *to charity*.\n\n" \ "If you choose *friend* you will need to assign your friend " \ "as the judge on this habit. " \ "He will monitor execution and kick you with my help. " \ "And you will have to pay a fine to him in case of failure. \n\n" \ "If you choose *charity*, then you will pay fines to me. " \ "And I will donate (80% of the money) Internet access to students in need: https://giveinternet.org" text = ru_text if user.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, reply_markup=markups.get_money_intention_markup( message.chat.id), parse_mode='Markdown') bot.register_next_step_handler(message, money_intention_receive)
def get_street(message): if message.text == '/end': return cid = message.chat.id db = dbaccess.SQLka() streets = db.select(fields=['street'], tables=[('Buildings', 'buildings')], constraints=[('street', dbaccess.like(message.text))], modifyers=['DISTINCT']) db.close() print(streets) if len(streets) > 1: # TODO Add keyboard msg = bot.send_message( message.chat.id, """ Укажите более точное название улицы """) bot.register_next_step_handler(msg, get_street) return if len(streets) == 0: bot.send_message(cid, text=""" К сожалению, адрес не найден. Попробуй ещё раз! """) get_building(cid) return shelf[str(cid)]['street'] = streets[0][0] get_number(cid)
def preparing_game_1(message, place, towns, forbidden_letters, state=0): for i in range(1, 4): if place[-i] not in forbidden_letters: sym = place[-i].upper() break nickname = nickname_define(message) used_towns = make_query(f'''select Town from {nickname}; ''') used_towns = [town[0] for town in used_towns] choice = list() for town in towns: if sym == town[0] and town not in used_towns: choice.append(town) if len(choice) == 0: defeat(message, sym) else: if state == 0: ask_text = take_game_phrase('write_town_with_letter').format(sym) elif state == 1: ask_text = take_game_phrase('write_other_town_with_letter').format(sym) else: ask_text = take_game_phrase('write_town_with_other_letter').format(sym) sent = bot.send_message(message.chat.id, ask_text) bot.register_next_step_handler(sent, game_play_1)
def send_money(message): try: chat_id = message.chat.id send = types.InlineKeyboardButton(content.BUTTON_SENDMONEY) homepage = types.InlineKeyboardButton(content.BUTTON_MAIN_MENU) simbalance = types.InlineKeyboardButton(content.BUTTON_SIMBALANCE) markup = types.ReplyKeyboardMarkup(True, True) markup.add(send) markup.add(simbalance) markup.add(homepage) bot.send_message( chat_id, 'Для того чтобы узнать баланс нажмите кнопку\nЕсли баланс получить не удалось - можете попробовать еще раз.', reply_markup=markup) bot.register_next_step_handler(message, funcmenu.func_send_money) #отправить деньги сделать перевод (реквест) except Exception as e: bot.reply_to( message, 'Error sendmoney menu. Contact the administrator and please DONT use bot.' )
def option_select(message): chat_id = message.chat.id user = session.query(User).filter_by(name=username).one() # FIXME: # if role == Role.ADMIN: ask_again_to_be_sure # if my_role == Role.ADMIN: reject changing (!) <- check global is_checked if message.current_group.user_has_role(user, Role.ADMIN): bot.send_message( chat_id, "Вы не можете поменять себе роль, так как Вы -- администратор.") else: role = Role(message.text) if role == Role.ADMIN and not is_checked: bot.send_message( chat_id, "Вы уверены, что хотите дать этому пользователю права администратора?" ) is_checked = True bot.register_next_step_handler(message, option_select) else: message.current_group.add_role_to_user(user, role) bot.send_message( chat_id, "Роль пользователя'" + user.name + "' успешно изменена!") bot.send_message(chat_id, "Новая роль пользователя: " + str(role)) if is_checked: is_checked = False send_main_menu(message)
def submission_assessment_receive(message, submission_id): teacher = Teacher.get(message.chat.id) if len(message.text) > 15: ru_text = "Длина оценки не должна превышать 15 символов. Попробуйте ещё раз" en_text = "The length of the rate mustn't exceed 15 characters. Try again" text = ru_text if teacher.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, reply_markup=markups.get_assessment_markup(teacher), parse_mode='Markdown') bot.register_next_step_handler(message, submission_assessment_receive, submission_id) else: submission = Submission.get(submission_id) submission.assessment = message.text submission.status = SubmissionStatus.REVIEWED.value submission.save() ru_text = "Результат проверки отправлен ученику" en_text = "The review result has been sent to the student" text = ru_text if teacher.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, reply_markup=remove_markup(), parse_mode='Markdown') task = Task.get(submission.task_id) task_detail_view(teacher, task) new_submission_review_result_notification(submission)
def greeting_and_habit_request(message): user = User.get(message.chat.id) ru_text = f'Привет{", " + user.first_name if user.first_name else ""}! ' \ f'Я Инспектор Хэбит, борец с мировой ленью и прокрастинацией. ' \ f'А ты, кажется, как раз испытваешь с этим определённые проблемы.\n\n' \ f'Короче, назначаешь себе привычку и обещаешь следовать ей, ' \ f'а я тебя буду проверять: держишь слово — красавчик, ' \ f'нарушаешь — ловишь денежный штраф. Размер штрафа выбираешь сам. ' \ f'И таким образом мы работаем 3 недели.\n\n' \ f'Всё ясно? Если да, то выбирай привычку из списка или пиши свою, ' \ f'если нет, то не трать моё время.\n\n' \ f'И кстати, я филантроп: 80% денег, ' \ f'сгенерированных на твоей лени, пойдут на благотворительность.' en_text = f'Hello{", " + user.first_name if user.first_name else ""}! ' \ f'I am Inspector Habit, the fighter with world laziness and procrastination. ' \ f'And you seem to have trouble with it.\n\n' \ f'In short, you assign yourself a habit and promise to follow it, ' \ f'and I will check you: keep your word - handsome, ' \ f'you break - you catch a fine. You choose the amount of fines yourself. ' \ f'And so we work 3 weeks.\n\n' \ f'All clear? If yes, then choose a habit from the list or write your own, ' \ f"if not, don't waste my time.\n\n" \ f"And by the way, I'm a philanthropist: 80% of the money " \ f"generated on your laziness will go to charity." text = ru_text if user.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, reply_markup=markups.get_habits_markup(message.chat.id)) bot.register_next_step_handler(message, habit_receive)
def create_report(message): try: chat_id = message.chat.id genrep = types.InlineKeyboardButton(content.BUTTON_GENREPORT) homepage = types.InlineKeyboardButton(content.BUTTON_MAIN_MENU) # отчет по всем проектам bot tribunal # parsprofit = types.InlineKeyboardButton(content.BUTTON_PARSPROFIT) # markup.add(parsprofit) markup = types.ReplyKeyboardMarkup(True, True) markup.add(genrep) markup.add(homepage) bot.send_message(chat_id, "Чтобы сгенерировать отчет нажмите кнопку", reply_markup=markup) bot.register_next_step_handler(message, funcmenu.func_create_report) # отправить деньги сделать перевод (реквест) except Exception as e: bot.reply_to( message, 'Error createreport menu. Contact the administrator and please DONT use bot.' )
def habit_receive(message): user = User.get(message.chat.id) if message.text in ['Другое...', 'Other...']: ru_text = 'Напиши привычку, над которой будем работать' en_text = 'Write the habit we will work on' text = ru_text if user.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, reply_markup=types.ReplyKeyboardRemove(), parse_mode='Markdown') bot.register_next_step_handler(message, habit_receive) else: ru_text = f'Итак, ты хочешь *{message.text}*' en_text = f'So you want *{message.text}*' text = ru_text if user.language_code == 'ru' else en_text preparing_habits[message.chat.id] = { 'label': message.text, 'days_of_week': [] } bot.send_message(message.chat.id, text, reply_markup=markups.get_ready_markup( message.chat.id), parse_mode='Markdown') days_request(message)
def time_receive(message): user = User.get(message.chat.id) ru_days = ['Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'] en_days = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'] days = ru_days if user.language_code == 'ru' else en_days time_array = message.text.split(' ') try: for time in time_array: timeformat = '%H:%M' datetime.strptime(time, timeformat) preparing_habits[message.chat.id]['time_array'] = time_array check_days = re.sub( r'\s+', ' ', ' '.join([ day if day_of_week in preparing_habits[message.chat.id]['days_of_week'] else '' for day_of_week, day in enumerate(days) ])) ru_text = f'Хорошо, я буду проверять тебя в *{message.text}* по *{check_days}*.' en_text = f"Okay, I'll check you at *{message.text}* on *{check_days}*" text = ru_text if user.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, parse_mode="Markdown") location_request(message) except ValueError: ru_text = 'Кажется, ты ввёл какую-то ерунду. Попробуй ещё раз, используя формат *ЧЧ:ММ*.' en_text = 'It seems you have entered some nonsense. Try again using *HH:MM* format.' text = ru_text if user.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, parse_mode='Markdown') bot.register_next_step_handler(message, time_receive)
def fio(msg): chat_id = msg.chat.id name = msg.text # проверка корректности ФИО a = 0 name_split = name.split(" ") while a == 0: if bool(re.search('[а-яА-Я]', name)) and len(name_split) == 3: a == 1 else: bot.send_message( chat_id, "Пожалуйста, используйте буквы только русского алфавита.") bot.send_message( chat_id, "Имя должно быть в формате <Фамилия Имя Отчество>") bot.register_next_step_handler(msg, fio) return a = 1 # user = User(name=name, telegram_id=chat_id, telegram_nickname=msg.from_user.username) session.add(user) session.commit() bot.send_message(chat_id, "Отлично, теперь ты в системе!") return select_group(msg)
def back(message): if message.text == "Назад": keyboard = telebot.types.ReplyKeyboardMarkup(True, True) keyboard.row('Настройки', 'Информация о вас') bot.send_message(message.chat.id, "Выбери что дальше", reply_markup=keyboard) bot.register_next_step_handler(message, settings2)
def language_confirm_request(message): text = f'🇷🇺 Ты уверен, что хочешь выбрать *{message.text}*\n' \ f'🇬🇧 Are you sure you want to choose *{message.text}*' bot.send_message(message.chat.id, text, reply_markup=markups.get_language_confirm_markup(), parse_mode='Markdown') bot.register_next_step_handler(message, language_confirm_receive)
def start_register(msg): chat_id = msg.chat.id bot.send_message(chat_id, "Привет! Зарегистрируся.") bot.send_message( chat_id, "Для того, чтобы учителя или ученики могли тебя опознать, введи, пожалуйста, ФИО" ) bot.register_next_step_handler(msg, fio)
def preparing_2(message): lang_num = language_define(message) ask_text = take_phrase_2('place_input', 'day_after_tomorrow', lang_num) keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) button_geo = types.KeyboardButton(text=take_phrase_1('geolocation', lang_num), request_location=True) keyboard.add(button_geo) sent = bot.reply_to(message, ask_text, reply_markup = keyboard) bot.register_next_step_handler(sent, weather_2)
def adminSingleVopros(callback): adminVopros.adminVopros = callback.message.text bot.edit_message_reply_markup(callback.message.chat.id, callback.message.message_id) bot.send_message(callback.message.chat.id, 'Ваш ответ :') bot.register_next_step_handler(callback.message, adminAnswerSingleVopros)
def remove(message): chat_id = message.chat.id markup = ReplyKeyboardMarkup(one_time_keyboard=True) for user in message.current_group.users: markup.add(KeyboardButton(user.telegram_nickname)) bot.send_message(chat_id, "Выберите человека:", reply_markup=markup) bot.register_next_step_handler(message, remove_success)
def user_select(message): chat_id = message.chat.id markup = ReplyKeyboardMarkup(one_time_keyboard=True) for user in message.current_group.users: markup.add(KeyboardButton(user.name)) bot.send_message(chat_id, "Выберите человека:", reply_markup=markup) bot.register_next_step_handler(message, change_roles)
def student_fullname_request(message): student = Student.get(message.chat.id) ru_text = "Введите свою фамилию и имя. Их будут видеть ваши учителя." en_text = "Send your full name. Your teachers will see it." text = ru_text if student.language_code == 'ru' else en_text bot.send_message(message.chat.id, text) bot.register_next_step_handler(message, student_fullname_receive)
def teacher_fullname_request(message): teacher = Teacher.get(message.chat.id) ru_text = "Введите своё ФИО. Его будут видеть ваши ученики." en_text = "Send your full name. Your students will see it." text = ru_text if teacher.language_code == 'ru' else en_text bot.send_message(message.chat.id, text) bot.register_next_step_handler(message, teacher_fullname_receive)
def check_password(message): if (message.text == '123'): bot.send_message(message.chat.id, 'You are welcome!') f = open(str(message.chat.id) + "_rights.txt", "w") f.write('true') elif (message.text == 'exit' or message.text == '/exit'): bot.send_message(message.chat.id, 'OK, go to main menu') else: bot.send_message(message.chat.id, 'Incorrect') bot.register_next_step_handler(message, want_password)
def preparing_0(message, data=None): if data: lang_num = 0 if 'Get' in data else 1 else: lang_num = language_define(message) ask_text = take_phrase_2('place_input', 'today', lang_num) keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True) button_geo = types.KeyboardButton(text=take_phrase_1('geolocation', lang_num), request_location=True) keyboard.add(button_geo) sent = bot.reply_to(message, ask_text, reply_markup = keyboard) bot.register_next_step_handler(sent, weather_0)
def language_response(message): user = User.get(message.chat.id) if message.text in ('🇷🇺Русский', '🇬🇧English'): # set user language user.language_code = 'ru' if message.text == '🇷🇺Русский' else 'en' user.save() language_confirm_request(message) else: bot.register_next_step_handler(message, language_response)
def push_homework(message): chat_id = message.chat.id markup = ReplyKeyboardMarkup(one_time_keyboard=True) for hw in message.current_group.homeworks: markup.add(KeyboardButton(hw.id)) bot.send_message(chat_id, "Выберите ДЗ:", reply_markup=markup) bot.register_next_step_handler(message, push_next)
def get_name(message): cid = message.chat.id name = "{} {}".format(message.from_user.first_name, message.from_user.last_name) if re.match(config.name_re, name): shelf[str(cid)]['name'] = dbaccess.id_str(name) get_seller_type(cid) else: msg = bot.send_message(cid, "Введите ФИО:") bot.register_next_step_handler(msg, get_name2)
def are_you_sure_request(message, teacher, classroom): ru_text = f"Вы уверены, что хотите удалить *{classroom.name}*?" en_text = f"Are you sure you want to delete *{classroom.name}*" text = ru_text if teacher.language_code == 'ru' else en_text bot.send_message(message.chat.id, text, reply_markup=are_you_sure_markup(teacher), parse_mode='Markdown') bot.register_next_step_handler(message, are_you_sure_receive, teacher, classroom)
def changename(message): global name if len(message.text) > 2 and len(message.text) < 20: name = message.text keyboard2 = telebot.types.ReplyKeyboardMarkup(True, True) keyboard2.row('Назад') bot.send_message(message.chat.id, "Запомнил", reply_markup=keyboard2) else: bot.send_message(message.from_user.id, 'От двух до 20') bot.register_next_step_handler(message, changename) bot.register_next_step_handler(message, back)
def get_name2(message): if message.text == '/end': return cid = message.chat.id name = ' '.join(message.text.split()) if re.match(config.name_re, name): shelf[str(cid)]['name'] = dbaccess.id_str(name) get_seller_type(cid) else: msg = bot.send_message(cid, "Некорректный ввод. Введите ФИО:") bot.register_next_step_handler(msg, get_name2)