Пример #1
0
    def add(self, target_id=None, target_name=None):
        # 发出好友申请
        if not target_id and not target_name:
            raise SanguoException(
                errormsg.BAD_MESSAGE,
                self.char_id,
                "Friend Add",
                "no target_id and no target_name"
            )

        if target_id:
            doc = MongoCharacter._get_collection().find_one({'_id': target_id}, {'_id': 1})
            if not doc:
                raise SanguoException(
                    errormsg.CHARACTER_NOT_FOUND,
                    self.char_id,
                    "Friend Add",
                    "character id {0} not found".format(target_id)
                )
        else:
            doc = MongoCharacter._get_collection().find_one({'name': target_name}, {'_id': 1})
            if not doc:
                raise SanguoException(
                    errormsg.CHARACTER_NOT_FOUND,
                    self.char_id,
                    "Friend Add",
                    u"can not found character {0} in server {1}".format(target_name, self.char.mc.server_id)
                )

        cid = doc['_id']

        if cid in self.mf.friends:
            raise SanguoException(
                errormsg.FRIEND_ALREADY_ADD,
                self.char_id,
                "Friend Add",
                "character {0} already has beed added".format(cid)
            )

        self.check_max_amount("Friend Add")

        if cid in self.mf.accepting:
            # 如果要加的好友以前已经给我发过好友申请,那么就是直接接受
            self.accept(cid)
            return

        if cid not in self.mf.pending:
            self.mf.pending.append(cid)
            self.send_new_friend_notify(cid, status=FRIEND_ACK)

        self.mf.save()

        target_char_friend = Friend(cid)
        target_char_friend.someone_add_me(self.char_id)
Пример #2
0
def login(char_id, **kwargs):
    if char_id:
        # od = OfficialDailyReward(char_id)
        # od.check()

        now = datetime.datetime.utcnow()
        MongoCharacter._get_collection().update(
            {'_id': char_id},
            {'$set': {'last_login': now}}
        )

        login_notify(char_id)
Пример #3
0
def login(char_id, real_login, **kwargs):
    if char_id:
        # od = OfficialDailyReward(char_id)
        # od.check()

        now = datetime.datetime.utcnow()
        MongoCharacter._get_collection().update({'_id': char_id},
                                                {'$set': {
                                                    'last_login': now
                                                }})

        if real_login:
            TimesLogLogin(char_id).inc()

        login_notify(char_id)
Пример #4
0
def get_char_property(char_id, key):
    doc = MongoCharacter._get_collection().find_one(
            {'_id': char_id},
            {key: 1}
    )

    return doc[key]
Пример #5
0
    def add(self, target_id=None, target_name=None):
        # 发出好友申请
        if not target_id and not target_name:
            raise SanguoException(errormsg.BAD_MESSAGE, self.char_id,
                                  "Friend Add",
                                  "no target_id and no target_name")

        if target_id:
            doc = MongoCharacter._get_collection().find_one({'_id': target_id},
                                                            {'_id': 1})
            if not doc:
                raise SanguoException(
                    errormsg.CHARACTER_NOT_FOUND, self.char_id, "Friend Add",
                    "character id {0} not found".format(target_id))
        else:
            doc = MongoCharacter._get_collection().find_one(
                {'name': target_name}, {'_id': 1})
            if not doc:
                raise SanguoException(
                    errormsg.CHARACTER_NOT_FOUND, self.char_id, "Friend Add",
                    u"can not found character {0} in server {1}".format(
                        target_name, self.char.mc.server_id))

        cid = doc['_id']

        if cid in self.mf.friends:
            raise SanguoException(
                errormsg.FRIEND_ALREADY_ADD, self.char_id, "Friend Add",
                "character {0} already has beed added".format(cid))

        self.check_max_amount("Friend Add")

        if cid in self.mf.accepting:
            # 如果要加的好友以前已经给我发过好友申请,那么就是直接接受
            self.accept(cid)
            return

        if cid not in self.mf.pending:
            self.mf.pending.append(cid)
            self.send_new_friend_notify(cid, status=FRIEND_ACK)

        self.mf.save()

        target_char_friend = Friend(cid)
        target_char_friend.someone_add_me(self.char_id)
Пример #6
0
def get_char_ids_by_last_login(limit=7):
    date = arrow.utcnow().replace(days=-limit)

    dt = datetime.datetime(date.year, date.month, date.day, date.hour,
                           date.minute, date.second)

    chars = MongoCharacter._get_collection().find({'last_login': {
        '$gte': dt
    }}, {'_id': 1})
    return [c['_id'] for c in chars]
Пример #7
0
def get_char_ids_by_last_login(limit=7):
    date = arrow.utcnow().replace(days=-limit)

    dt = datetime.datetime(
        date.year,
        date.month,
        date.day,
        date.hour,
        date.minute,
        date.second
    )

    chars = MongoCharacter._get_collection().find({'last_login': {'$gte': dt}}, {'_id': 1})
    return [c['_id'] for c in chars]
Пример #8
0
def send_vip_reward(signum):
    logger = Logger("send_vip_reward.log")
    logger.write("Start")

    try:
        docs = MongoCharacter._get_collection().find({'vip': {
            '$gte': 6
        }}, {'_id': 1})

        for doc in docs:
            char_id = doc['_id']

            ac = ActivityEntry(char_id, 22001)
            if ac and ac.is_valid():
                ac.send_mail()
    except:
        logger.error(traceback.format_exc())
    else:
        logger.write("Done")
    finally:
        logger.close()
Пример #9
0
def send_vip_reward(signum):
    logger = Logger("send_vip_reward.log")
    logger.write("Start")

    try:
        docs = MongoCharacter._get_collection().find(
            {'vip': {'$gte': 6}},
            {'_id': 1}
        )

        for doc in docs:
            char_id = doc['_id']

            ac = ActivityEntry(char_id, 22001)
            if ac and ac.is_valid():
                ac.send_mail()
    except:
        logger.error(traceback.format_exc())
    else:
        logger.write("Done")
    finally:
        logger.close()
Пример #10
0
def get_char_property(char_id, key):
    doc = MongoCharacter._get_collection().find_one({'_id': char_id}, {key: 1})

    return doc[key]