def is_allowed_number(user: Union[str, Redditor]) -> bool: """ Checks if a user meets the requirements to be assigned a number. :param user: The user to check. :return: True or false depending on if they do. """ redditor = user if isinstance(user, str): try: redditor = get_reddit().redditor(user) except Exception: return False # Ensure that the user meets the account age requirement. account_created = redditor.created_utc if (datetime.now().timestamp() - account_created ) <= get_settings().reddit.assignment.requirements["account_age"]: return False # Ensure that the user meets the karma requirement. if (redditor.comment_karma + redditor.link_karma ) < get_settings().reddit.assignment.requirements["karma"]: return False # The user meets the criteria to be assigned a number. return True
def command_engine(m): cid = m.chat.id user = str(m.from_user.id) text = m.text exist = settings.settings_exist(cid) playing = tools.game_exist(cid) if exist and (not playing): engine = text.split("/engine")[1].replace(" ", "") if not engine in ENGINES: markup = types.ReplyKeyboardMarkup(row_width=2) for key in ENGINES: markup.add("/engine " + key) current = settings.get_settings(cid)['engine'] bot.send_message(cid, "Choose one option:\n <b>Current: </b>" + current, reply_markup=markup, parse_mode="HTML", disable_notification=True) else: markup = types.ReplyKeyboardHide(selective=False) bot.send_message(cid, "Succesful!", reply_markup=markup, disable_notification=True) settings.update_settings(cid, engine=engine)
def command_white(m): cid = m.chat.id user = str(m.from_user.id) first_name = str(m.from_user.first_name) last_name = str(m.from_user.last_name) userMG.create_user(user, first_name, last_name) text = m.text exist = tools.game_exist(cid) if exist and not game.is_ready_info(cid): game_type = game.get_info(cid)['game_type'] if game_type == "0": uci = settings.get_settings(cid)['engine'] game.update_info(cid, white=user, black=uci, uci_white="0") firs_step(cid, bot) elif game_type == "1": players = [game.white(cid), game.black(cid)] if not user in players: if players[0] == "0": game.update_info(cid, white=user) if game.black(cid) != "0": firs_step(cid, bot) else: bot.send_message(cid, "Waiting for /black player...") else: bot.send_message( cid, "This color was already chosen.\nChoose /black...", disable_notification=True) else: bot.send_message(cid, "You've already chosen color.", disable_notification=True)
def get_search_list_from_google(keyword): google_map_api_key = get_settings()['google_map']['API_KEY'] params = { 'key': google_map_api_key, 'query': keyword, } r = requests.get( 'https://maps.googleapis.com/maps/api/place/textsearch/json?parameters', params=params) result = r.text result_dict = json.loads(result) results = result_dict['results'] return results
def search_from_youtube(keyword, page_token=None): youtube_api_key = get_settings()['youtube']['API_KEY'] params = { 'part': 'snippet', 'q': keyword, 'maxResults': 10, 'type': 'video', 'key': youtube_api_key, } # 페이지 토큰값이 전달되었을 때만 params에 해당 내용을 추가해서 요 if page_token: params['pageToken'] = page_token r = requests.get('https://www.googleapis.com/youtube/v3/search', params=params) result = r.text result_dict = json.loads(result) return result_dict
def command_start(m): cid = m.chat.id exist = tools.game_exist(cid) if not exist: settings.create_settings(cid) game.create_info(cid) game.update_info(cid, theme=settings.get_settings(cid)['theme']) tools.create_pgn_buffer(cid) markup = types.ReplyKeyboardMarkup(row_width=2) markup.add("/play vs computer", "/play vs human") bot.send_message(cid, "Choose par:", reply_markup=markup, disable_notification=True) # tools.send_board_image(bot,cid) else: bot.send_message(cid, "There's a previous game", disable_notification=True) #Text
return Server(self._settings, self._plugins) def connected(self, name, server): log.msg("Bot.connected") server._name = name self._servers[name] = server def clientConnectionLost(self, connector, reason): log.msg("Bot.clientConnectionLost") connector.connect() def clientConnectionFailed(self, connector, reason): log.msg("Bot.clientConnectionFailed") reactor.stop() if __name__ == '__main__': log.startLogging(open('Bot.log', 'a')) log.msg("main") config = settings.get_settings() if not settings.validate_settings(config): print("Error parsing settings") sys.exit(1) factory = Bot(config) for server in config['servers']: log.msg("main: creating endpoint for host:", server['host'], "port:", server['port'], "ssl:", server['ssl']) con_type = "ssl" if server['ssl'] else "tcp" con_desc = "{}:host={}:port={}".format(con_type, server['host'], server['port']) endpoint = endpoints.clientFromString(reactor, con_desc) conn = endpoint.connect(factory).addCallback(lambda s: factory.connected(server['name'], s)) reactor.run()