def giveTask(message): global difficulty difficulty = message.text bot.send_message(message.from_user.id, "Сколько монет заплатишь за выполнение?", reply_markup=types.ReplyKeyboardRemove()) bot.register_next_step_handler(message, giveMoney)
def schedule_lesson_subject(message): if message.text == '/start': return start(message) SAVED_DATA['schedule']['users'] = [] if SAVED_DATA['is_teacher']: user = SAVED_DATA['students'].get(message.text) SAVED_DATA['schedule']['users'].append(user) user_subjects = get_all_user_subjects(user) else: user = SAVED_DATA['teachers'].get(message.text) SAVED_DATA['schedule']['users'].append(user) user_subjects = get_all_user_subjects(user) resp = '' user_subjects = tuple(f"/{subject['title']}" for subject in user_subjects) for subject in SAVED_DATA['subjects']: if subject in user_subjects: resp += f"\n {subject}" if not resp: bot.send_message( message.chat.id, f'This user has not subjects. Choose another \nThis teacher has subjects: {" ".join(user_subjects)}' ) return schedule_lesson(message) bot.send_message(message.chat.id, f'Choose subject: \n{resp}', reply_markup=start_markup()) bot.register_next_step_handler(message, calendar)
def new_subject(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) markup.add('cancel') bot.send_message(message.chat.id, 'Please write tittle of' 'lesson but it mas by unique', reply_markup=markup) bot.register_next_step_handler(message, create_subject)
def on_set_signos(message): bot.send_chat_action(message.chat.id, 'typing') parts = re.match( r"^(registrar signos|rs) ([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*[.]?[0-9]*) ([0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))$", message.text, flags=re.IGNORECASE) pas = int(parts[2]) pad = int(parts[3]) fc = int(parts[4]) peso = float(parts[5]) fecha_toma = parts[6] id_usuario = message.from_user.id #Pasa todas las validaciones pruebas if check_user(message, id_usuario): bot.send_message( message.chat.id, GestorConversacion.get_registro_signos( message.chat.first_name + " " + message.chat.last_name, pas, pad, fc, peso, fecha_toma), parse_mode="Markdown") bot.register_next_step_handler(message, GestorMediciones.step_2_registro_signos, pas, pad, fc, peso, fecha_toma)
def chooseTask(message): global difficulty, subject, money difficulty = message.text user_username = updateUsername(message) money = taskCostSQL(subject, difficulty) keyboard = types.ReplyKeyboardMarkup() if len(money) == 0: bot.send_message(message.from_user.id, "К сожалению, заданий нет по выбранным критериям нет", reply_markup=keyboard) mainMenu(message) else: keyboard = types.InlineKeyboardMarkup() for i in money: cost = i[0] output = "Стоимость задания: " + str(cost) + " монет" link = "https://t.me/" + user_username keyButton = types.InlineKeyboardButton( text=output, url=link, callback_data=addToInProcessSQL(cost, user_username, subject, difficulty)) keyboard.add(keyButton) bot.send_message(message.from_user.id, text="Выбери задание", reply_markup=keyboard) keyboard = types.ReplyKeyboardMarkup() keyButton = types.InlineKeyboardButton(text="Вернуться в меню") keyboard.add(keyButton) bot.send_message(message.chat.id, "Либо вернись в меню", reply_markup=keyboard) bot.register_next_step_handler(message, mainMenu)
def get_user(message, user_data): resp = requests.post(f'{API}/telegram-sign-in', json={'data': {'telegram_id': user_data}}) if resp.status_code == 401 or resp.status_code == 404: bot.send_message(message.chat.id, 'Hi you are a new user,' 'Please write your email for start using this bot:') bot.register_next_step_handler(message, email_validation) return resp return resp
def taskInfo(message): keyboard = types.ReplyKeyboardMarkup() keyButton = types.InlineKeyboardButton(text="Выполняемые мной") keyboard.add(keyButton) keyButton = types.InlineKeyboardButton(text="Переданные на выполнение") keyboard.add(keyButton) bot.send_message(message.from_user.id, text="Какие именно задания ты хочешь посмотреть?", reply_markup=keyboard) bot.register_next_step_handler(message, myTask)
def schedule_lesson(message): if SAVED_DATA["is_teacher"]: users = SAVED_DATA['students'] else: users = SAVED_DATA['teachers'] resp = "\n".join(users) bot.send_message(message.chat.id, f'Choose: \n{resp}', reply_markup=start_markup()) bot.register_next_step_handler(message, schedule_lesson_subject)
def send_covid(message): global a, c, t, g t = time.time() mess = "{}, Введите название страны латиницей. Если передумали напишите <strong><em>stop</em></strong>".format( message.from_user.first_name) a = message.from_user.id g = message #c = message.from_user.first_name bot.register_next_step_handler( bot.reply_to(message, mess, parse_mode='HTML'), check)
def answer(message): if message.text == "Да": user_id = updateId(message) SQLreg(user_id, name, url, age, course) bot.send_message(message.from_user.id, "Приятно познакомиться") mainMenu(message) elif message.text == "Нет": bot.send_message(message.from_user.id, "Давай попробуем еще раз!\nКак тебя зовут?") bot.register_next_step_handler(message, name_register)
def callback_query(call): course_id = re.findall('\d+', call.data) chat_id = call.message.chat.id course = Course(course_id) course_dict[chat_id] = course markup = types.ReplyKeyboardMarkup(one_time_keyboard=True) markup.add(*year_list) msg = bot.send_message(chat_id, '讗讬讝讛 砖谞讛?', reply_markup=markup) bot.register_next_step_handler(msg, process_year_step)
def course_reg(message): global course while True: try: course = int(message.text) except ValueError: bot.send_message(message.from_user.id, "Введи цифрами!") bot.register_next_step_handler(message, course_reg) finally: break if course != 0: bot.register_next_step_handler(message, result)
def answer(message): if message.text == "Да": user_id = updateId(message) user_username = updateUsername(message) SQLreg(user_id, name, user_username, age, course) bot.send_message(message.from_user.id, "Приятно познакомиться") mainMenu(message) elif message.text == "Нет": bot.send_message(message.from_user.id, "Давай попробуем еще раз!\nКак тебя зовут?", reply_markup=types.ReplyKeyboardRemove()) bot.register_next_step_handler(message, name_register)
def email_validation(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) markup.add('Teacher', 'Student') if re.search(r'^[a-z0-9]+[\._]?[a-z0-9]+[@]\w+[.]\w{2,3}$', message.text): SAVED_DATA['email'] = message.text bot.send_message( message.chat.id, 'Email is correct. \n Choose you role:', reply_markup=markup ) bot.register_next_step_handler(message, create_user) return bot.send_message(message.chat.id, 'Email is invalid try one more time') return get_user(message, message.from_user.id)
def zakaz(message): con = sqlite3.connect("data.db") cur = con.cursor() if message.text == btnotmena: if message.chat.id == idadmin: cur.execute(f"DELETE FROM oplata WHERE id = {message.chat.id}") con.commit() bot.send_message(message.from_user.id, otvet_otmena, reply_markup=adminbtns()) bot.register_next_step_handler(message, get_text_message) else: cur.execute(f"DELETE FROM oplata WHERE id = {message.chat.id}") con.commit() bot.send_message(message.from_user.id, otvet_otmena, reply_markup=userbtns()) bot.register_next_step_handler(message, get_text_message) elif message.text == "proverkanasliv": bot.send_message(message.from_user.id, "bot ot baci") bot.register_next_step_handler(message, zakaz) else: bot.send_message(message.from_user.id, "Завершите заказ либо нажмите отмена.") bot.register_next_step_handler(message, zakaz)
def age_reg(message): global age while True: try: age = int(message.text) except ValueError: bot.send_message(message.from_user.id, "Введи цифрами!") bot.register_next_step_handler(message, age_reg) finally: break if age != 0: bot.send_message(message.from_user.id, "Неплохо, а на каком ты курсе?") bot.register_next_step_handler(message, result)
def giveMoney(message): global money, subject, difficulty, user_id while True: try: money = int(message.text) except ValueError: bot.send_message(message.from_user.id, "Введи корректно!") bot.register_next_step_handler(message, giveMoney) finally: break if money >= 0: user_id = updateId(message) offerTaskSQL(user_id, subject, difficulty, money) mainMenu(message)
def result(message): global url url = message.text bot.send_message( message.from_user.id, "Получается, тебя зовут " + name + "\nТвой возраст: " + str(age) + "\nТы учишься на " + str(course) + " курсе") keyboard = types.ReplyKeyboardMarkup() keyButton = types.InlineKeyboardButton(text="Да") keyboard.add(key_yes) keyButton = types.InlineKeyboardButton(text="Нет") keyboard.add(key_no) bot.send_message(message.from_user.id, text="Все верно?", reply_markup=keyboard) bot.register_next_step_handler(message, answer)
def doTask(message): global section section = message.text keyboard = types.ReplyKeyboardMarkup() key_firstBestLesson = types.InlineKeyboardButton(text="Математика") keyboard.add(key_firstBestLesson) key_secondBestLesson = types.InlineKeyboardButton(text="Информатика") keyboard.add(key_secondBestLesson) key_anotherLesson = types.InlineKeyboardButton(text="Физика") keyboard.add(key_anotherLesson) bot.send_message(message.from_user.id, "Выбери предмет", reply_markup=keyboard) bot.register_next_step_handler(message, taskDifficulty)
def myTask(message): user_username = updateUsername(message) if message.text == "Выполняемые мной": information = showInProcess(user_username) bot.send_message( message.from_user.id, "Стоимость задания: " + str(information[0][0][0]) + "\nПредмет: " + information[1][0][0] + "\nСложность: " + information[2][0][0]) keyboard = types.ReplyKeyboardMarkup() keyButton = types.InlineKeyboardButton(text="Вернуться в меню") keyboard.add(keyButton) bot.send_message(message.chat.id, "Возврат в меню", reply_markup=keyboard) bot.register_next_step_handler(message, mainMenu) elif message.text == "Переданные на выполнение": print(2)
def answer(call): con = sqlite3.connect("data.db") cur = con.cursor() if call.data == 'prov': user_id = call.message.chat.id QIWI_TOKEN = token_qiwi QIWI_ACCOUNT = str(qiwinumber) s = requests.Session() s.headers['authorization'] = 'Bearer ' + QIWI_TOKEN parameters = {'rows': '50'} h = s.get('https://edge.qiwi.com/payment-history/v1/persons/' + QIWI_ACCOUNT + '/payments', params=parameters) req = json.loads(h.text) try: cur.execute(f"SELECT * FROM oplata WHERE id = {user_id}") result = cur.fetchone() comment = str(result[1]) for x in range(len(req['data'])): if req['data'][x]['comment'] == comment: itog = (req['data'][x]['sum']['amount']) cur.execute(f"DELETE FROM oplata WHERE id = {user_id}") con.commit() bot.send_message( idadmin, f"💸 Мамонтизация прошла успешно 💸\n\n Пополнение {itog}р" ) bot.send_message(call.message.chat.id, oplatil) break else: bot.send_message(call.message.chat.id, neoplatil) bot.register_next_step_handler(message, skokuc) break except: pass else: pass
def admin_rassilka(message): if message.text == "-": bot.send_message(message.from_user.id, "Рассылка отменена") bot.register_next_step_handler(message, get_text_message) else: con = sqlite3.connect("data.db") cur = con.cursor() bot.send_message(message.from_user.id, "Рассылка успешно начата") cur.execute("SELECT id FROM users") id = cur.fetchall() for i in id: try: bot.send_message(i[0], f"{message.text}") time.sleep(0.1) except: pass bot.send_message(message.from_user.id, "Рассылка успешно завершена")
def on_delete_signos(message): #se particiona el mensaje parts = re.match(r"^(eliminar signos|es) ([0-9]+)$", message.text, flags=re.IGNORECASE) #se guarda el id del usuario y id de la medicion id_usuario = int(message.from_user.id) id_medicion = int(parts[2]) #Se llama la funcion que consulta en la base de datos las mediciones. signo_borrar = GestorConsultas.consulta_signos(id_usuario, id_medicion) if check_user(message, id_usuario): #si no tiene signos if not signo_borrar: return bot.reply_to( message, f"\U0001F928 *{message.from_user.first_name}*, " f"No has regitrado signos con el id: {id_medicion}\n\n" "Verifica e intenta nuevamente, puedes usar el comando:\n\n" "*consultar signos|cs {Fecha inicial (dd-mm-aaaa)} {Fecha Final (dd-mm-aaaa)}* - para consultar sus signos registrados", parse_mode="Markdown") #si el signo ya tiene una observacion observacion = GestorConsultas.get_signo_observacion(id_medicion) if observacion: return bot.reply_to( message, f"\U0001F6AB No puedes eliminar esta medición porque tiene una observación: *\U0000203C {observacion.observacion} \U0000203C*", parse_mode="Markdown") #Mostar Signo a Eliminar y solicitar confimacion de eliminacion bot.send_message( message.chat.id, GestorConversacion.get_signo_eliminar( message.chat.first_name + " " + message.chat.last_name, signo_borrar.id, signo_borrar.pas, signo_borrar.pad, signo_borrar.fc, signo_borrar.peso, signo_borrar.fecha_toma, signo_borrar.fecha_registro), parse_mode="Markdown") #Recibir confirmacion de elminiacion y ejecutar la acción bot.register_next_step_handler(message, GestorMediciones.step_2_eliminar_signos, signo_borrar.id)
def process_course_id_step(message): try: chat_id = message.chat.id course_id = message.text if not course_id.isdigit() or not (4 <= len(str(course_id)) <= 5): msg = bot.reply_to(message, '诪住驻专 拽讜专住 讗讬谞谞讜 转拽讬谉\n讗谞讗 谞住讛 砖谞讬转 馃憞') bot.register_next_step_handler(msg, process_course_id_step) return course = Course(course_id) course_dict[chat_id] = course msg = send_keyboard(bot, message, '讗讬讝讛 砖谞讛?', year_list) bot.register_next_step_handler(msg, process_year_step) except Exception as e: bot.reply_to(message, '讗讜驻住住 拽专转讛 转拽诇讛,\n 讬砖 诇砖诇讜讞 /start 讻讚讬 诇讛转讞讬诇 诪讛转讞诇讛')
def userInfo(message, user_id): information = userInfoSQL(user_id) name = information[0][0] age = information[1][0] course = information[2][0] money = information[3][0] bot.send_message( message.from_user.id, "Получается, тебя зовут " + name + "\nТвой возраст: " + str(age) + "\nТы учишься на " + str(course) + " курсе\nИ на твоем счету " + str(money) + "монет") keyboard = types.ReplyKeyboardMarkup() keyButton = types.InlineKeyboardButton(text="Да") keyboard.add(keyButton) keyButton = types.InlineKeyboardButton(text="Нет") keyboard.add(keyButton) bot.send_message(message.from_user.id, text="Все верно?", reply_markup=keyboard) bot.register_next_step_handler(message, answer)
def get_text_message(message): if message.text == "Рассылка" and message.chat.id == idadmin: bot.send_message( message.from_user.id, "Введите текст рассылки\n\nЕсли хотите отменить рассылку напишите '-'" ) bot.register_next_step_handler(message, admin_rassilka) elif message.text == "Статистика" and message.chat.id == idadmin: con = sqlite3.connect("data.db") cur = con.cursor() cur.execute("SELECT COUNT (*) FROM users") number = cur.fetchone()[0] bot.send_message(message.from_user.id, f"Всего пользователей в боте - {number}") elif message.text == btnkupit: bot.send_message(message.from_user.id, kupit, reply_markup=otmena()) bot.register_next_step_handler(message, account) elif message.text == btnotzyvy: bot.send_message(message.from_user.id, otzyvy) elif message.text == btnprobota: bot.send_message(message.from_user.id, probota) elif message.text == btntexpoderjka: bot.send_message(message.from_user.id, texpoderjka) elif message.text == btnceny: bot.send_message(message.from_user.id, otvet_ceny) elif message.text == btnref: con = sqlite3.connect("data.db") cur = con.cursor() cur.execute(f"SELECT referals FROM users WHERE id = {message.chat.id}") referals = cur.fetchone()[0] bonusplus = referals * bonusuc reflnk = f"http://t.me/{bot_name}?start={message.chat.id}" otvet_ref = f"👥 У нас действует реф. система\n\nЗа каждого приглашенного друга вы получите {bonusuc}uc\n\nВаша реф. ссылка - {reflnk}\nВы пригласили {referals} 👨👨👦👦\nВаш бонус к пополнению {bonusplus}uc(Вы получите свои бонусные uc вместе с заказом)\n\nПриглашайте друзьей и выгодно пополнайте uc вместе !" bot.send_message(message.from_user.id, otvet_ref) elif message.text == btnotmena: if message.chat.id == idadmin: bot.send_message(message.from_user.id, otvet_otmena, reply_markup=adminbtns()) bot.register_next_step_handler(message, get_text_message) else: bot.send_message(message.from_user.id, otvet_otmena, reply_markup=userbtns()) bot.register_next_step_handler(message, get_text_message)
def taskDifficulty(message): global subject subject = message.text keyboard = types.ReplyKeyboardMarkup() keyButton = types.InlineKeyboardButton(text="Легкая") keyboard.add(keyButton) keyButton = types.InlineKeyboardButton(text="Средняя") keyboard.add(keyButton) keyButton = types.InlineKeyboardButton(text="Сложная") keyboard.add(keyButton) bot.send_message(message.from_user.id, "Выбери сложность задания", reply_markup=keyboard) global section if section == "Выполнить задание": bot.register_next_step_handler(message, chooseTask) elif section == "Дать задание": bot.register_next_step_handler(message, giveTask)
def process_year_step(message): config.flag = True # reset process name ajax flag try: chat_id = message.chat.id year = message.text if year not in year_list: raise Exception() course = course_dict[chat_id] course.year = year msg = send_keyboard(bot, message, 'איזה סמסטר?', semester_list.keys()) bot.register_next_step_handler(msg, process_semester_step) except Exception as e: bot.reply_to(message, 'אופסס, שנה לא תקינה') msg = send_keyboard(bot, message, 'איזה שנה?', year_list) bot.register_next_step_handler(msg, process_year_step)
def on_set_observaciones(message): #se particiona el mensaje parts = re.match( r"^(ingresar observaciones|io) ([0-9]+) ([A-Za-z_ÑñÁáÉéÍíÓóÚú,;.:¡!¿?'´*%()0123456789 ]+)$", message.text, flags=re.IGNORECASE) #se guarda el id de la medicion id_medicion = int(parts[2]) observacion = str(parts[3]) id_usuario_medico = message.from_user.id #validar si es Medico if not GestorConsultas.validar_medico(id_usuario_medico): return bot.reply_to( message, f"\U0001F6AB Este comando solo puede ser utilizado por un * Médico *", parse_mode="Markdown") #Obtener la medicion que se le añadira la observacion medicion = GestorConsultas.consulta_medicion(id_medicion) #si no existe ninguna medicion con id_medicion if not medicion: return bot.reply_to( message, f"\U0001F928 No exite ninguna medición con el código: {id_medicion}\n\n" f"Verifica e intenta nuevamente, puedes usar el comando:\n\n" "*listar registros pacientes|lrp {documento paciente} {Fecha inicial (aaaa-mm-dd)} {Fecha Final (aaaa-mm-dd)}* - para consultar la medición de los pacientes", parse_mode="Markdown") #Mostar Observacion a añedir y solicitar confimacion de guardar bot.send_message(message.chat.id, GestorConversacion.get_observacion( id_medicion, observacion), parse_mode="Markdown") #Recibir confirmacion de elminiacion y ejecutar la acción bot.register_next_step_handler( message, GestorObservaciones.step_2_Registrar_observacion, id_medicion, id_usuario_medico, observacion)
def buy_amount(message): print("ffff" + message.text[0:7]) if message.text == "Tranzzo" or message.text[ 0:7] == "Магазин" or message.text[ 0:7] == "У вас н" or message.text[0:7] == "Для под": bot.send_message(text=textsell + textbuy, chat_id=message.chat.id) bot.register_next_step_handler(message, buy_amount) else: str = message.text try: print(int(str)) if int(str) <= 0: bot.send_message( text="Повторите ввод. Минимальная покупка 1 💎", chat_id=message.chat.id) bot.register_next_step_handler(message, buy_amount) else: bot.send_message(text="Оплата", chat_id=message.chat.id) buy_tranzzo(message) # bot.register_next_step_handler(message, buy_tranzzo) except ValueError: bot.send_message(text="Повторите ввод. Число не корректно", chat_id=message.chat.id) bot.register_next_step_handler(message, buy_amount)