def check_batch(update: Update, context: CallbackContext) -> bool: user: User = current_list_users.get(update.message.chat.id, None) if user and user.askedBatch: user.set_batch(update.message.text) user.askedBatch = False delete_msg(update.message.chat.id, context) context.bot.send_message( text=f'``` Inserted Data\n' f'Name {user.name}\n' f'Instagram {user.instagram_id}\n' f'Gender {user.GENDER[user.gender]}\n' f'Year {user.batch}```', parse_mode=ParseMode.MARKDOWN, chat_id=update.message.chat.id, ) Db.get_instance().write_user(user) Db.get_instance().read_users() active_commands[update.message.chat.id] = context.bot.send_poll( update.message.chat.id, ASK_FOR_INTEREST, INTEREST_LIST, allows_multiple_answers=True, is_anonymous=False).message_id return True return False
def cancel_chat(update: Update, context: CallbackContext): tel_id = active_chats.get(update.callback_query.message.chat.id, None) if tel_id: Db.get_instance().update_user_disconnected(tel_id) Db.get_instance().update_user_disconnected(active_chats[tel_id]) req = Request() req.make(tel_id, active_chats[tel_id], 1) Db.get_instance().update_request(req) req.make(active_chats[tel_id], tel_id, 1) Db.get_instance().update_request(req) delete_msg(tel_id, context) delete_msg(active_chats[tel_id], context) active_commands[tel_id] = context.bot.send_message( text=f'``` Chat Cancelled ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_id).message_id active_commands[active_chats[tel_id]] = context.bot.send_message( text=f'``` Chat Cancelled ```', parse_mode=ParseMode.MARKDOWN, chat_id=active_chats[tel_id]).message_id context.bot.send_message(text="/chat for chat settings", parse_mode=ParseMode.MARKDOWN, chat_id=active_chats[tel_id]) context.bot.send_message(text="/chat for chat settings", parse_mode=ParseMode.MARKDOWN, chat_id=tel_id) del active_chats[active_chats[tel_id]] del active_chats[tel_id]
def edit_questionnaire(update: Update, context: CallbackContext): chat_id = update.callback_query.message.chat_id delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( text=ASK_FOR_QN, chat_id=chat_id, parse_mode=ParseMode.MARKDOWN).message_id asked_questionnaire[update.callback_query.message.chat.id] = True
def cancel(update: Update, context: CallbackContext): if asked_questionnaire.get(update.message.chat.id, None): asked_questionnaire[update.message.chat.id] = False delete_msg(update.message.chat.id, context) active_commands[update.message.chat.id] = context.bot.send_message( text="""``` Questionnaire Operation Cancelled```""", chat_id=update.message.chat.id, parse_mode=ParseMode.MARKDOWN).message_id
def questionnaire(update: Update, context: CallbackContext): chat_id = update.callback_query.message.chat.id delete_msg(chat_id, context) print(Db.get_instance().get_questions(chat_id)) if Db.get_instance().get_questions(chat_id) is None: active_commands[chat_id] = context.bot.send_message( text=ASK_FOR_QN, chat_id=chat_id, parse_mode=ParseMode.MARKDOWN).message_id asked_questionnaire[update.callback_query.message.chat.id] = True else: view_questionnaire(update, context)
def register_user(update: Update, context: CallbackContext): chat_id = update.callback_query.message.chat.id if Db.get_instance().read_user_id(chat_id) is None: if current_list_users.get(chat_id, None) is None: delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( text=ASK_FOR_NAME, parse_mode=ParseMode.MARKDOWN, chat_id=chat_id).message_id user = User(update.callback_query.message.chat.id) current_list_users[update.callback_query.message.chat.id] = user
def decline_reveal_request(update: Update, context: CallbackContext) -> None: user_id = update.callback_query.message.chat.id delete_msg(active_chats.get(user_id, None), context) delete_msg(user_id, context) active_commands[active_chats[user_id]] = context.bot.send_message( text="``` Reveal Request Declined```", parse_mode=ParseMode.MARKDOWN, chat_id=active_chats[user_id]).message_id active_commands[user_id] = context.bot.send_message( text="``` Reveal Request Declined```", parse_mode=ParseMode.MARKDOWN, chat_id=user_id).message_id
def report_confirmation(update: Update, context: CallbackContext): if update.callback_query.data == ACCEPT_REPORT_CALLBACK_DATA: Db.get_instance().update_block( active_chats[update.callback_query.message.chat.id]) cancel_chat(update, context) elif update.callback_query.data == DECLINE_CALLBACK_DATA: delete_msg(update.callback_query.message.chat.id, context) active_commands[ update.callback_query.message.chat.id] = context.bot.send_message( text="""``` Report Request Closed```""", chat_id=update.callback_query.message.chat.id, parse_mode=ParseMode.MARKDOWN).message_id
def check_id(update: Update, context: CallbackContext) -> bool: user: User = current_list_users.get(update.message.chat.id, None) if user and user.askedId: user.set_id(update.message.text) user.askedId = False delete_msg(update.message.chat.id, context) active_commands[update.message.chat.id] = context.bot.send_message( text=ASK_FOR_BATCH, parse_mode=ParseMode.MARKDOWN, chat_id=update.message.chat.id, ).message_id return True return False
def send_poll(update: Update, context: CallbackContext) -> None: delete_msg(update.callback_query.message.chat.id, context) user = Db.get_instance().read_user_id( update.callback_query.message.chat.id) user.askedSkill = True current_list_users[user.tel_id] = user Db.get_instance().delete_interest(user.tel_id) active_commands[ update.callback_query.message.chat.id] = context.bot.send_poll( update.callback_query.message.chat.id, ASK_FOR_INTEREST, INTEREST_LIST, allows_multiple_answers=True, is_anonymous=False).message_id
def set_gender(update: Update, context: CallbackContext, gender: str) -> None: chat_id = update.callback_query.message.chat.id user: User = current_list_users.get(chat_id, None) if user and user.askedGender: if gender == MALE_CALLBACK_DATA: user.gender = 1 elif gender == FEMALE_CALLBACK_DATA: user.gender = -1 user.askedGender = False delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( text=ASK_FOR_ID, parse_mode=ParseMode.MARKDOWN, chat_id=chat_id, ).message_id
def send_questionnaire(update: Update, context: CallbackContext): delete_msg(update.callback_query.message.chat.id, context) ques = Db.get_instance().get_questions( update.callback_query.message.chat.id) for i in ques: msg = context.bot.send_poll( active_chats[update.callback_query.message.chat.id], f"{ques.index(i) + 1}) {i.strip()}", OPTION_LIST, is_anonymous=False) active_polls[msg.poll.id] = (msg.message_id, i) active_commands[ update.callback_query.message.chat.id] = context.bot.send_message( update.callback_query.message.chat.id, "``` Poll Sent Waiting for reply```", parse_mode=ParseMode.MARKDOWN).message_id
def accept_reveal_request(update: Update, context: CallbackContext) -> None: user_id = update.callback_query.message.chat.id delete_msg(active_chats.get(user_id, None), context) delete_msg(user_id, context) data = Db.get_instance().read_user_id(user_id) if data: msg = f"``` Name:- {data.name}\n Instagram Id:- {data.instagram_id}\n Gender:- {data.GENDER[data.gender]}\n Year:- {data.batch}```" context.bot.send_message(text=msg, parse_mode=ParseMode.MARKDOWN, chat_id=active_chats[user_id]) data = Db.get_instance().read_user_id(active_chats[user_id]) if data: msg = f"``` Name:- {data.name}\n Instagram Id:- {data.instagram_id}\n Gender:- {data.GENDER[data.gender]}\n Year:- {data.batch}```" context.bot.send_message(text=msg, parse_mode=ParseMode.MARKDOWN, chat_id=user_id)
def ask_gender(update: Update, context: CallbackContext) -> None: keyboard = [[ InlineKeyboardButton("He/Him", callback_data=MALE_CALLBACK_DATA), InlineKeyboardButton("She/Her", callback_data=FEMALE_CALLBACK_DATA), ], [ InlineKeyboardButton("Prefer Not To Say", callback_data=NEUTRAL_CALLBACK_DATA), ]] delete_msg(update.message.chat.id, context) active_commands[update.message.chat.id] = context.bot.send_message( text=ASK_FOR_GENDER, parse_mode=ParseMode.MARKDOWN, chat_id=update.message.chat.id, reply_markup=InlineKeyboardMarkup(keyboard)).message_id user = current_list_users[update.message.chat.id] user.askedGender = True
def report_chat(update: Update, context: CallbackContext): keyboard = [ [ InlineKeyboardButton("REPORT", callback_data=ACCEPT_REPORT_CALLBACK_DATA), InlineKeyboardButton("CANCEL", callback_data=DECLINE_REPORT_CALLBACK_DATA), ], ] delete_msg(update.callback_query.message.chat.id, context) active_commands[ update.callback_query.message.chat.id] = context.bot.send_message( text= """``` Are you sure to block the user? This may blacklist the user and will those this chat portal```""", chat_id=update.callback_query.message.chat.id, parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(keyboard)).message_id
def reveal(update: Update, context: CallbackContext) -> None: data = Db.get_instance().read_user_id( update.callback_query.message.chat_id) if data: if data.name == PLACEHOLDER: delete_msg(update.callback_query.message.chat.id, context) active_commands[ update.callback_query.message.chat. id] = context.bot.send_message( text="""``` You haven't provided the details```""", parse_mode=ParseMode.MARKDOWN, chat_id=update.callback_query.message.chat.id, ).message_id return else: data = Db.get_instance().read_user_id( active_chats[update.callback_query.message.chat_id]) if data: if data.name == PLACEHOLDER: delete_msg(update.callback_query.message.chat.id, context) active_commands[ update.callback_query.message.chat. id] = context.bot.send_message( text= """``` The user who's chatting with you hasn't provided the details```""", parse_mode=ParseMode.MARKDOWN, chat_id=update.callback_query.message.chat.id, ).message_id return keyboard = [ [ InlineKeyboardButton( "ACCEPT", callback_data=ACCEPT_REVEAL_CALLBACK_DATA), InlineKeyboardButton( "DECLINE", callback_data=DECLINE_REVEAL_CALLBACK_DATA), ], ] delete_msg( active_chats.get(update.callback_query.message.chat.id, None), context) delete_msg(update.callback_query.message.chat.id, context) active_commands[active_chats[ update.callback_query.message.chat.id]] = context.bot.send_message( text="""``` Reveal Request```""", parse_mode=ParseMode.MARKDOWN, chat_id=active_chats[update.callback_query.message.chat.id], reply_markup=InlineKeyboardMarkup(keyboard)).message_id active_commands[ update.callback_query.message.chat.id] = context.bot.send_message( text="""``` Reveal Request Sent```""", parse_mode=ParseMode.MARKDOWN, chat_id=update.callback_query.message.chat.id, ).message_id else: helper(update.callback_query.message.chat_id, context)
def view_questionnaire(update: Update, context: CallbackContext): chat_id = update.callback_query.message.chat_id delete_msg(chat_id, context) data = Db.get_instance().get_questions(chat_id) msg = "Entered Questions\n" for i in data: msg += f"{data.index(i) + 1} {i.strip()}\n" keyboard = [ [ InlineKeyboardButton("Edit Questionnaire", callback_data=QUESTIONNAIRE_SET), InlineKeyboardButton("<- Menu", callback_data=MENU), ], ] active_commands[chat_id] = context.bot.send_message( text=f"```{msg}```", parse_mode=ParseMode.MARKDOWN, chat_id=chat_id, reply_markup=InlineKeyboardMarkup(keyboard)).message_id asked_questionnaire[chat_id] = False
def decline_request(update: Update, context: CallbackContext): tel_to = update.callback_query.message.chat.id tel_id = active_requests.get(tel_to, None) if tel_id: tel_id = tel_id[0] del active_requests[tel_to] del active_requests[tel_id] delete_msg(tel_id, context) delete_msg(tel_to, context) active_commands[tel_id] = context.bot.send_message( text=f'``` Request Cancelled ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_id).message_id active_commands[tel_to] = context.bot.send_message( text=f'``` Request Cancelled ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_to).message_id Db.get_instance().update_user_disconnected(tel_id) Db.get_instance().update_user_disconnected(tel_to) req = Request() req.make(tel_id, tel_to, 2) Db.get_instance().update_request(req) else: delete_msg(tel_to, context) active_commands[tel_to] = context.bot.send_message( text=f'``` Expired Request ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_to).message_id
def welcome(chat_id: int, context: CallbackContext) -> None: menu = [[ InlineKeyboardButton("Let's Start By Knowing Each Other", callback_data=REGISTRATION_CALLBACK_DATA), ], [ InlineKeyboardButton("Skip Knowing Each Other", callback_data=SKIP_REG_CALLBACK_DATA) ], [ InlineKeyboardButton( "Privacy Policy", callback_data=PRIVATE_POLICY_CALLBACK_DATA), InlineKeyboardButton("About Us", callback_data=ABOUT_US_CALLBACK_DATA) ]] delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( text=WELCOME_TEXT, parse_mode=ParseMode.MARKDOWN, chat_id=chat_id, reply_markup=InlineKeyboardMarkup(menu)).message_id
def accept_request(update: Update, context: CallbackContext): tel_to = update.callback_query.message.chat.id tel_id = active_requests.get(tel_to, None) if tel_id: tel_id = tel_id[0] active_chats[tel_id] = active_requests[tel_id][0] active_chats[active_chats[tel_id]] = tel_id del active_requests[tel_id] del active_requests[active_chats[tel_id]] delete_msg(tel_id, context) delete_msg(tel_to, context) active_commands[tel_id] = context.bot.send_message( text=f'``` Request Accepted ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_id).message_id context.bot.send_message( text= f'``` The Messages Now on (except Commands will be visible to the Anonymous ' f'person) ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_id) context.bot.send_message( text= f'``` The Messages Now on (except Commands will be visible to the Anonymous ' f'person) ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_to) res = Db.get_instance().get_common_interests(tel_id, tel_to) data = [INTEREST_LIST[x] for x in res[0].intersection(res[1])] if len(data) != 0: context.bot.send_message( text=f'``` Common Interest {" ".join(data)}```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_id) context.bot.send_message( text=f'``` Common Interest {" ".join(data)} ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_to) else: context.bot.send_message( text= f'``` Interests the Anonymous User have:- {" ".join([INTEREST_LIST[i] for i in res[1]])}```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_id) context.bot.send_message( text= f'``` Interests the Anonymous User have:- {" ".join([INTEREST_LIST[i] for i in res[0]])} ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_to) req = Request() req.make(tel_id, tel_to, 3) Db.get_instance().update_request(req) else: delete_msg(tel_to, context) active_commands[tel_to] = context.bot.send_message( text=f'``` Expired Request ```', parse_mode=ParseMode.MARKDOWN, chat_id=tel_to).message_id
def skip_process(message, context: CallbackContext): chat_id = message.chat_id if not Db.get_instance().read_user_id(chat_id): if current_list_users.get(chat_id, None): user = current_list_users[chat_id] Db.get_instance().write_user(user) del current_list_users[chat_id] else: user = User(chat_id) Db.get_instance().write_user(user) delete_msg(message.chat.id, context) user = User(chat_id) user.askedId = False user.askedGender = False user.askedName = False user.askedBatch = False current_list_users[chat_id] = user active_commands[message.chat.id] = context.bot.send_poll( chat_id, ASK_FOR_INTEREST, INTEREST_LIST, allows_multiple_answers=True, is_anonymous=False).message_id
def parse_questions(update: Update, context: CallbackContext): delete_msg(update.message.chat.id, context) ques = update.message.text.split('/') if Db.get_instance().get_questions(update.message.chat_id): Db.get_instance().delete_questions(update.message.chat_id) Db.get_instance().add_questions(update.message.chat_id, ques) msg = "Entered Questions\n" for i in ques: msg += f"{ques.index(i) + 1} {i.strip()}\n" keyboard = [ [ InlineKeyboardButton("Edit Questionnaire", callback_data=QUESTIONNAIRE_SET), InlineKeyboardButton("<- Menu", callback_data=MENU), ], ] active_commands[update.message.chat.id] = context.bot.send_message( text=f"```{msg}```", parse_mode=ParseMode.MARKDOWN, chat_id=update.message.chat_id, reply_markup=InlineKeyboardMarkup(keyboard)).message_id asked_questionnaire[update.message.chat.id] = False
def status(update: Update, context: CallbackContext) -> None: chat_id = update.message.chat_id code = status_code(chat_id) if code == 1: delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( chat_id, """``` You are in a chat with an anonymous person```""", parse_mode=ParseMode.MARKDOWN).message_id elif code == 0: delete_msg(chat_id, context) data = active_requests.get(chat_id, None) print(data) if data[1] == 1: keyboard = [[ InlineKeyboardButton( "CANCEL REQUEST", callback_data=CANCEL_REQUEST_CALLBACK_DATA) ]] msg_id = context.bot.send_message( chat_id, """``` You are in request phase Waiting for Accepting```""", parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(keyboard)).message_id active_commands[chat_id] = msg_id elif data[1] == -1: keyboard = [ [ InlineKeyboardButton("ACCEPT", callback_data=ACCEPT_CALLBACK_DATA), InlineKeyboardButton("DECLINE", callback_data=DECLINE_CALLBACK_DATA), ], ] msg_id = context.bot.send_message( chat_id, """``` You are in request phase```""", parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(keyboard)).message_id active_commands[chat_id] = msg_id elif code == -1: delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( chat_id, """``` You are all set to go Anonymous```""", parse_mode=ParseMode.MARKDOWN).message_id
def helper(chat_id, context): if chat_id in black_list: return if active_chats.get(chat_id, None): if Db.get_instance().get_questions(chat_id): menu = [[ InlineKeyboardButton("Reveal Identity Request", callback_data=REVEAL_IDENTITY_REQUEST), ], [ InlineKeyboardButton("Send Questionnaire", callback_data=QUESTIONNAIRE_SENT), ], [ InlineKeyboardButton("Report Chat", callback_data=REPORT_CHAT), InlineKeyboardButton("View/ Edit Questionnaire", callback_data=QUESTIONNAIRE) ], [ InlineKeyboardButton("Close Chat Portal", callback_data=CLOSE_CHAT), ]] else: menu = [[ InlineKeyboardButton("Reveal Identity Request", callback_data=REVEAL_IDENTITY_REQUEST), ], [ InlineKeyboardButton("Report Chat", callback_data=REPORT_CHAT), InlineKeyboardButton("View/ Edit Questionnaire", callback_data=QUESTIONNAIRE) ], [ InlineKeyboardButton("Close Chat Portal", callback_data=CLOSE_CHAT), ]] delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( text=WELCOME_TEXT, parse_mode=ParseMode.MARKDOWN, chat_id=chat_id, reply_markup=InlineKeyboardMarkup(menu)).message_id elif Db.get_instance().read_user_id(chat_id): menu = [[ InlineKeyboardButton("Random Chat", callback_data=RANDOM_CHAT_CALLBACK_DATA), ], [ InlineKeyboardButton("Questionnaire", callback_data=QUESTIONNAIRE), ], [ InlineKeyboardButton("Alter Interest", callback_data=RESET_CALLBACK_DATA), ], [ InlineKeyboardButton( "How This Works", callback_data=WALKABOUT_CALLBACK_DATA), InlineKeyboardButton("Commands", callback_data=COMMAND_CALLBACK_DATA) ]] delete_msg(chat_id, context) active_commands[chat_id] = context.bot.send_message( text=WELCOME_TEXT, parse_mode=ParseMode.MARKDOWN, chat_id=chat_id, reply_markup=InlineKeyboardMarkup(menu)).message_id else: welcome(chat_id, context)
def set_up_random_chat(update: Update, context: CallbackContext) -> None: data = status_code(update.callback_query.message.chat_id) if data == 1: context.bot.send_message( text=f'``` Close the current chat portal to start a new one ```', parse_mode=ParseMode.MARKDOWN, chat_id=update.callback_query.message.chat.id, ) return if data == 0: data = active_requests.get(update.callback_query.message.chat.id, None) delete_msg(update.callback_query.message.chat_id, context) print(data) if data[1] == 1: keyboard = [[ InlineKeyboardButton( "CANCEL REQUEST", callback_data=CANCEL_REQUEST_CALLBACK_DATA) ]] msg_id = context.bot.send_message( update.callback_query.message.chat.id, """``` You are in request phase Waiting for Accepting```""", parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(keyboard)).message_id active_commands[update.callback_query.message.chat.id] = msg_id elif data[1] == -1: keyboard = [ [ InlineKeyboardButton("ACCEPT", callback_data=ACCEPT_CALLBACK_DATA), InlineKeyboardButton("DECLINE", callback_data=DECLINE_CALLBACK_DATA), ], ] msg_id = context.bot.send_message( update.callback_query.message.chat.id, """``` You are in request phase```""", parse_mode=ParseMode.MARKDOWN, reply_markup=InlineKeyboardMarkup(keyboard)).message_id active_commands[update.callback_query.message.chat.id] = msg_id return data = Db.get_instance().read_available_users( update.callback_query.message.chat.id) if len(data) == 0: context.bot.send_message( text=f'``` Oops! No Users Available try after some time ```', parse_mode=ParseMode.MARKDOWN, chat_id=update.callback_query.message.chat.id, ) else: user = sample(data, 1)[0] request = Request() request.make(update.callback_query.message.chat.id, user.tel_id, 0) Db.get_instance().write_request(request) active_requests[request.tel_id] = (request.tel_to, 1) active_requests[request.tel_to] = (request.tel_id, -1) delete_msg(request.tel_id, context) keyboard = [[ InlineKeyboardButton("CANCEL REQUEST", callback_data=CANCEL_REQUEST_CALLBACK_DATA) ]] active_commands[request.tel_id] = context.bot.send_message( text=f'``` Waiting for Confirmation ```', parse_mode=ParseMode.MARKDOWN, chat_id=request.tel_id, reply_markup=InlineKeyboardMarkup(keyboard)).message_id keyboard = [ [ InlineKeyboardButton("ACCEPT", callback_data=ACCEPT_CALLBACK_DATA), InlineKeyboardButton("DECLINE", callback_data=DECLINE_CALLBACK_DATA), ], ] delete_msg(request.tel_to, context) active_commands[request.tel_to] = context.bot.send_message( text=f'``` Anonymous Chat Request ```', parse_mode=ParseMode.MARKDOWN, chat_id=request.tel_to, reply_markup=InlineKeyboardMarkup(keyboard)).message_id Db.get_instance().update_user_connected(request.tel_id) Db.get_instance().update_user_connected(request.tel_to)