def login(login, pwd): if(login is None) or (pwd is None): return jsonify(status="error", error_type="bad parameter") if(login == "") or (pwd == ""): return jsonify(status="error", error_type="empty parameter") reqUser = User(login) if(not reqUser.userExists(login)): return jsonify(status="error", error_type="no such user") if(reqUser.isUserBanned()): return jsonify(status="error", error_type="user banned", ban_time=reqUser.getBanTime()) if(not reqUser.loginUser(pwd)): if(reqUser.shouldBeBanned()): reqUser.banUser() return jsonify(status="error", error_type="user banned", ban_time=reqUser.getBanTime()) return jsonify(status="error", error_type="bad password") #user is logged in at this point return jsonify(status="ok", info="user logged in", token = reqUser.updateToken())
def index(): random_key = request.cookies.get('random_key', None) if User.is_authenticated(random_key): redirect('/home') random_key = User.new_user() resp = make_response(render_template('index.html')) resp.set_cookie('random_key', random_key) return resp
def get_user(self, username: str): try: user = self.collection_users.find_one({"username": username}) if user is not None: u = User() u.load_json(user) return u else: return False except: return False
def print_post(chat_id, event_id, image, date, title, description): user = User.get_user('chat_id', chat_id) events_all = Event.all_event() events_user = [] cuser_events = user.get_events() for cuser_event in cuser_events: events_user.append(cuser_event._id) text = 'Записаться' if event_id in events_user: text = 'Отписаться' keyboard = telebot.types.InlineKeyboardMarkup(row_width=2) keyboard.add( telebot.types.InlineKeyboardButton( text, callback_data=f"change_event_status\t{event_id}")) # if image: #try: # photo = open(image, 'rb') #except IOError as e: # print(f"I/O error({e.errno}): {e.strerror}") #bot.send_photo(chat_id, photo, caption=f'{date} - {title}: {description}') bot.send_message(chat_id, f"{date}\n<b>{title}</b>\n{description}", parse_mode="HTML", disable_web_page_preview=True, reply_markup=keyboard)
def handle_text(message): cuser = User.get_user('chat_id', message.from_user.id) # свои ли контакты переслал пользователь? if message.from_user.id == message.contact.user_id: # может мы его уже знаем? if cuser == None: return # ну лан так и быть зарегистрируем его first_name = message.from_user.first_name last_name = message.from_user.last_name phone = message.contact.phone_number chat_id = message.chat.id username = message.from_user.username cuser = User.registration(first_name, last_name, phone, chat_id, username) print_main_menu(cuser.chat_id)
def new_user(login, content): if "pwd" not in content: return jsonify(status="error", error_type="bad parameter", missing="pwd") #user credentials check ulogin = login upwd = content["pwd"] reqUser = User(ulogin) if(reqUser.userExists(ulogin)): return jsonify(status="error", error_type="user exists") print("adding user") reqUser.createUser(ulogin, upwd) return jsonify(status="ok", info="user created")
def save_user(self, user: User): try: if (len(list(self.collection_users.find({"username": user.username})))==0): self.collection_users.insert_one(user.jsonify()) return True return False except: return False
def callback_inline(call): cuser = User.get_user('chat_id', call.message.chat.id) # Если сообщение из чата с ботом if call.message: print(call.data) action = (call.data).split()[0] event_id = (call.data).split()[1] if action == "show": event = Event.get_event('id', f'{event_id}') print_post(call.message.chat.id, event._id, event.photo, event.date, event.title, event.description) # events_all = Event.all_event() # events_user = [] # cuser_events = cuser.get_events() # for cuser_event in cuser_events: # events_user.append(cuser_event._id) # text = 'Записаться' # if event_id in events_user: # text = 'Отписаться' # keyboard = telebot.types.InlineKeyboardMarkup(row_width=2) # keyboard.add(telebot.types.InlineKeyboardButton(text, callback_data=f"change_event_status\t{event_id}")) bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text=call.message.text) return if action == "change_event_status": event = Event.get_event('id', f'{event_id}') events = Event.all_event() list_of_users_event = [] cuser_events = cuser.get_events() for cuser_event in cuser_events: list_of_users_event.append(cuser_event._id) for event in events: is_delete_event = False if event_id == str(event._id): for cuser_event in cuser_events: if str(cuser_event._id) == str(event._id): is_delete_event = True if is_delete_event: cuser.decline_event(event._id) bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=call.message.text + "\nВы отписаны") else: cuser.accept_event(event._id) bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=call.message.text + "\nВы записаны") #print_post(call.message.chat.id, event._id, event.photo, event.date, event.title, event.description) return # Если сообщение из инлайн-режима elif call.inline_message_id: if call.data == "test": bot.edit_message_text(inline_message_id=call.inline_message_id, text="Вы записаны")
def modify_user(self, username: str, password: str, user: User): modify = self.collection_users.update_one( { "username": username, "password": password }, {"$set": user.jsonify()}) if modify: return True return False
def polls(): ulogin = request.args.get('login') utoken = request.args.get("token") if(ulogin is None) or (utoken is None): return jsonify(status="error", error_type="bad parameter") if ulogin == "" or utoken == "": return jsonify(status="error", error_type="empty parameters") reqUser = User(ulogin) if(not reqUser.userExists(login)): return jsonify(status="error", error_type="no such user") if(not reqUser.loginUser(token=utoken)): return jsonify(status="error", error_type="bad token") return Response(json.dumps(reqUser.getUserPolls()), mimetype='application/json')
def pollFromId(poll_id, login, methods=['GET']): # similar to /poll route utoken = request.args.get("token") if utoken is None: return jsonify(status="error", error_type="bad parameter") if utoken == "": return jsonify(status="error", error_type="empty parameters") reqUser = User(login) if(not reqUser.userExists(login)): return jsonify(status="error", error_type="no such user") if(not reqUser.loginUser(token=utoken)): return jsonify(status="error", error_type="bad token") p = reqUser.getUserPoll(poll_id) return jsonify(p)
def poll(): ulogin = request.args.get('login') utoken = request.args.get("token") pollId = request.args.get("poll_id") if(ulogin is None) or (utoken is None) or (pollId is None): return jsonify(status="error", error_type="bad parameter") if ulogin == "" or utoken == "" or pollId == "": return jsonify(status="error", error_type="empty parameters") reqUser = User(ulogin) if(not reqUser.userExists(login)): return jsonify(status="error", error_type="no such user") if(not reqUser.loginUser(token=utoken)): return jsonify(status="error", error_type="bad token") p = reqUser.getUserPoll(pollId) return jsonify(p)
def start_command(message): cuser = User.get_user('chat_id', message.from_user.id) if cuser == None: bot.send_message(message.from_user.id, 'Ой да бросьте, вы уже не первый раз у нас.') print_main_menu(message.chat.id) else: user_markup = telebot.types.ReplyKeyboardMarkup(True, False) button_phone = telebot.types.KeyboardButton(text="Зарегистрироваться", request_contact=True) user_markup.add(button_phone) bot.send_message(message.from_user.id, 'Вас привествуют и просят представиться.', reply_markup=user_markup)
def modify_user(): logging.warning("llega") session_cookie = COOKIE_MANAGER.get_authorization_token_decoded(request) if session_cookie: session = sessions_db.get(session_cookie) if session: user = users_db.get(session_cookie.get("username")) if user: user2 = User() request.get_json()["password"] = user.password user2.load_json(request.get_json()) modify = users_db.modify(user.username, user.password, user2) if modify: removed = Authorization.remove_session(request) if removed: Authorization.save_session(user2) return jsonify({ 'Authorization': encode(user2.json_cookie_payload()), "Message": "Modified" }), 200 abort(401)
def new_user(): content = request.json params = ["login", "pwd"] missing = [] for p in params: if p not in content: missing.append(p) if len(missing) != 0: return jsonify(status="error", error_type="bad parameter", missing=missing) #user credentials check ulogin = content["login"] upwd = content["pwd"] reqUser = User(ulogin) if(reqUser.userExists(ulogin)): return jsonify(status="error", error_type="user exists") print("adding user") reqUser.createUser(ulogin, upwd) return jsonify(status="ok", info="user created")
def handle_text2(message): print(f"{message.text}") cuser = User.get_user('chat_id', message.from_user.id) if not cuser: start_command(message) return if str(message.text) == "Ближайшие мероприятия": print_event_week_list(message.chat.id) if str(message.text) == "Как там Белка?": bot.send_message(message.chat.id, f"Нормально, живая)") if str(message.text) == "Мои мероприятия": chatId = message.chat.id print_event_week_list_for_me(chatId) if str(message.text) == "FAQ": print("faq")
def register(): u = User() u.load_json(request.json) u.password = HASH.hash(u.password) cookie = users_db.save(u) if cookie: Authorization.save_session(u) return jsonify({ 'Authorization': encode(u.json_cookie_payload()), "Message": "Registered" }), 200 abort(401)
def print_event_week_list(chat_id): user = User.get_user('chat_id', chat_id) events = Event.all_event() curent_date = datetime.now() delta_data = timedelta(days=7) for event in events: event_date = datetime.strptime(f"{event.date} {event.time}", "%Y-%m-%d %H:%M:%S") if event_date > curent_date and event_date < (curent_date + delta_data): keyboard = telebot.types.InlineKeyboardMarkup(row_width=2) keyboard.add( telebot.types.InlineKeyboardButton( "Подробнее...", callback_data=f"show\t{event._id}")) bot.send_message( chat_id, f"{event.date} {event.time} - <b>{event.title}</b>\n{event.shortdescription}", parse_mode="HTML", disable_web_page_preview=True, reply_markup=keyboard)
def answserPoll(): content = request.json print(content) params = ["login", "token", "poll_id", "answer_id"] missing = [] for p in params: if p not in content: missing.append(p) if len(missing) != 0: return jsonify(status="error", error_type="bad parameter", missing=missing) #user credentials check ulogin = content["login"] utoken = content["token"] upollId = content["poll_id"] answerId = content["answer_id"] reqUser = User(ulogin) if(not reqUser.userExists(ulogin)): return jsonify(status="error", error_type="no such user") if(not reqUser.loginUser(token=utoken)): return jsonify(status="error", error_type="bad token") #check poll integrity p = reqUser.getUserPoll(upollId, formated=False) if not p.pollExists(upollId): return jsonify(status="error", error_type="no such poll for user") if not reqUser.hasAnsweredPoll(upollId): return jsonify(status="error", error_type="previous user response to poll") if not p.validAnswer(answerId): return jsonify(status="error", error_type="invalid answer ID") reqUser.answerUserPoll(upollId, answerId) return jsonify(status="ok", info="answered poll")
import random from logic.game import Game from logic.user import User from logic.ai import AI from logic.ai_v2 import AIV2 from logic.game_essentials import LINES from logic.ai_v2 import CPU_NAME boardSize = 4 # bestParams = [1, 4, 20, 10**10] # bestUserParams = [1, 4, 20, 10**10] bestParams = [10, 31, 80, 10**10] bestUserParams = [10, 31, 80, 10**10] user = User() cpu = AI(boardSize, CPU_NAME, user.getName(), bestParams, bestUserParams, LINES) game = Game(user, cpu) game.play() # Playing the machines against each other # while True: # # bar = random.randint(100, 1000000) # champ = AI(boardSize, 'Champ', 'Challenger', bestParams, bestUserParams, LINES) # challengerParams = [] # lastNum = 1 # first_param = random.randint(1, 10) # second_param = random.randint(first_param, 100) # third_param = random.randint(second_param, 1000)
def save_session(user: User): sessions = SessionsController() if user: sessions.save(user.json_cookie_payload()) return True return False
if call.data == "test": bot.edit_message_text(inline_message_id=call.inline_message_id, text="Вы записаны") def telegram_polling(): try: bot.polling(none_stop=True, timeout=60) # constantly get messages from Telegram except: bot.stop_polling() time.sleep(10) telegram_polling() users = User.all_user() for user in users: print(user.username) if user.username == 'arudik': print_main_menu(user.chat_id) telegram_polling() # _______********1*888888888801****__________ _______********1*888888888801****__________ # ______*1000018111****10088888888*__________ ______*1000018111****10088888888*__________ # ______*0000118011*1***0*81*108888*_________ ______*0000118011*1***0*81*108888*_________ # ______*0811088011100888081****1188**_______ ______*0811088011100888081****1188**_______ # _______*0****0*****08888888880110811_______ _______*0****0*****08888888880110811_______ # ________*0***0***_**1118888888888880*______ ________*0***0***_**1118888888888880*______ # _________18**1*1**0*1110008888888881*______ _________18**1*1**0*1110008888888881*______ # _________**801*******0018888888888**_______ _________**801*******0018888888888**_______
def work_schedule(message): cuser = User.get_user('chat_id', message.from_user.id) if cuser: start_command(message) return