コード例 #1
0
ファイル: message.py プロジェクト: wechaty/python-wechaty
    def date(self) -> datetime:
        """
        Message sent date.

        Note:
            For difference between python2 and python3, please check the following link:
            
            - https://docs.python.org/2.7/library/datetime.html#datetime.datetime
            - https://docs.python.org/3.7library/datetime.html#datetime.datetime
            
            for datetime.fromtimestamp. It’s common forthis to be restricted to years from 1970through 2038.
            
            `2145888000` is `2038-01-01 00:00:00 UTC` forsecond
            
            `2145888000` is `1970-01-26 04:04:48 UTC` formillisecond
        
        Examples:
            >>> msg.date()
        Returns:
            datetime: message sent date
        """
        if self.payload.timestamp > 2145888000:
            time = datetime.fromtimestamp(self.payload.timestamp / 1000)
        else:
            time = datetime.fromtimestamp(self.payload.timestamp)
        return timestamp_to_date(self.payload.timestamp)
コード例 #2
0
                async def room_topic_listener(
                        payload: EventRoomTopicPayload) -> None:
                    log.info('receive <room-topic> event <%s>', payload)

                    room: Room = self.Room.load(payload.room_id)
                    await room.ready()

                    changer = self.Contact.load(payload.changer_id)
                    await changer.ready()

                    date = timestamp_to_date(payload.timestamp)

                    self.emit('room-topic', room, payload.new_topic,
                              payload.old_topic, changer, date)

                    await self.on_room_topic(room, payload.new_topic,
                                             payload.old_topic, changer, date)

                    room.emit('topic', payload.new_topic, payload.old_topic,
                              changer, date)

                    # emit the room-topic to plugins
                    await self._plugin_manager.emit_events(
                        'room-topic', room, payload.new_topic,
                        payload.old_topic, changer, date)
コード例 #3
0
                async def room_leave_listener(
                        payload: EventRoomLeavePayload) -> None:
                    log.info('receive <room-leave> event <%s>', payload)
                    room = self.Room.load(payload.room_id)
                    # room info is dirty now
                    await room.ready(force_sync=True)

                    leavers = [
                        self.Contact.load(inviter_id)
                        for inviter_id in payload.removed_ids
                    ]

                    for leaver in leavers:
                        await leaver.ready()

                    remover = self.Contact.load(payload.remover_id)
                    await remover.ready()

                    date = timestamp_to_date(payload.timestamp)

                    self.emit('room-leave', room, leavers, remover, date)
                    await self.on_room_leave(room, leavers, remover, date)

                    room.emit('leave', leavers, remover, date)

                    if self.puppet.self_id() in payload.removed_ids:
                        pass
                        # await self.puppet.room_payload(payload.room_id)
                        # await self.puppet.room_member_payload_dirty(
                        #     payload.room_id)

                    # emit the room-leave event to plugins
                    await self._plugin_manager.emit_events(
                        'room-leave', room, leavers, remover, date)
コード例 #4
0
                async def room_join_listener(
                        payload: EventRoomJoinPayload) -> None:
                    log.info('receive <room-join> event <%s>', payload)
                    room = self.Room.load(payload.room_id)
                    await room.ready()

                    invitees = [
                        self.Contact.load(invitee_id)
                        for invitee_id in payload.invited_ids
                    ]
                    for invitee in invitees:
                        await invitee.ready()

                    inviter = self.Contact.load(payload.inviter_id)
                    await inviter.ready()

                    # timestamp is from hostie-server, but the value range is
                    # 10^10 ~ 10^13
                    # refer to
                    # :https://github.com/wechaty/python-wechaty/issues/1290
                    date = timestamp_to_date(payload.timestamp)

                    self.emit('room-join', room, invitees, inviter, date)
                    await self.on_room_join(room, invitees, inviter, date)

                    room.emit('join', invitees, inviter, date)

                    # emit the room-join event to plugins
                    await self._plugin_manager.emit_events(
                        'room-join', room, invitees, inviter, date)
コード例 #5
0
 def date(self) -> datetime:
     """
     Message sent date
     Python2.7: https://docs.python.org/2.7/library/datetime.html#datetime.datetime
     Python3+ :https://docs.python.org/3.7/library/datetime.html#datetime.datetime
     for datetime.fromtimestamp. It’s common for this to be restricted to years from 1970 through 2038.
     2145888000 is 2038-01-01 00:00:00 UTC for second
     2145888000 is 1970-01-26 04:04:48 UTC for millisecond
     :return:
     """
     if self.payload.timestamp > 2145888000:
         time = datetime.fromtimestamp(self.payload.timestamp / 1000)
     else:
         time = datetime.fromtimestamp(self.payload.timestamp)
     return timestamp_to_date(self.payload.timestamp)
コード例 #6
0
def test_timestamp_with_millisecond_precision() -> None:
    timestamp = timestamp_to_date(1600849574736)
    assert timestamp is not None
コード例 #7
0
def test_timestamp_with_microsecond_precision() -> None:
    timestamp = timestamp_to_date(1600849792.367416)
    assert timestamp is not None