예제 #1
0
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
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
파일: views.py 프로젝트: sangyeopkim/Django
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
예제 #5
0
파일: views.py 프로젝트: sangyeopkim/Django
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
예제 #6
0
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
예제 #7
0
        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()