mirror of
https://github.com/Sneed-Group/pypush-plus-plus
synced 2024-12-23 03:15:15 -06:00
Merge pull request #11 from pixelmonaskarion/main
Sending and receiving iMessage effects
This commit is contained in:
commit
8b6e1561d4
2 changed files with 24 additions and 5 deletions
15
demo.py
15
demo.py
|
@ -127,10 +127,11 @@ threading.Thread(target=input_thread, daemon=True).start()
|
|||
print("Type 'help' for help")
|
||||
|
||||
current_participants = []
|
||||
current_effect = None
|
||||
while True:
|
||||
msg = im.receive()
|
||||
if msg is not None:
|
||||
print(f'[{msg.sender}] {msg.text}')
|
||||
print(msg.to_string())
|
||||
|
||||
if len(INPUT_QUEUE) > 0:
|
||||
msg = INPUT_QUEUE.pop()
|
||||
|
@ -140,10 +141,18 @@ while True:
|
|||
print('quit (q): quit')
|
||||
#print('send (s) [recipient] [message]: send a message')
|
||||
print('filter (f) [recipient]: set the current chat')
|
||||
print('effect (e): adds an iMessage effect to the next sent message')
|
||||
print('note: recipient must start with tel: or mailto: and include the country code')
|
||||
print('\\: escape commands (will be removed from message)')
|
||||
elif msg == 'quit' or msg == 'q':
|
||||
break
|
||||
elif msg.startswith("effect ") or msg.startswith("e "):
|
||||
msg = msg.split(" ")
|
||||
if len(msg) < 2 or msg[1] == "":
|
||||
print("effect [effect namespace]")
|
||||
else:
|
||||
print(f"next message will be sent with [{msg[1]}]")
|
||||
current_effect = msg[1]
|
||||
elif msg.startswith('filter ') or msg.startswith('f '):
|
||||
# Set the curernt chat
|
||||
msg = msg.split(' ')
|
||||
|
@ -158,8 +167,10 @@ while True:
|
|||
im.send(imessage.iMessage(
|
||||
text=msg,
|
||||
participants=current_participants,
|
||||
sender=user.handles[0]
|
||||
sender=user.handles[0],
|
||||
effect=current_effect
|
||||
))
|
||||
current_effect = None
|
||||
else:
|
||||
print('No chat selected, use help for help')
|
||||
|
||||
|
|
14
imessage.py
14
imessage.py
|
@ -53,6 +53,8 @@ class iMessage:
|
|||
"""Group ID of the message, will be randomly generated if not provided"""
|
||||
body: BalloonBody | None = None
|
||||
"""BalloonBody, may be None"""
|
||||
effect: str | None = None
|
||||
"""iMessage effect sent with this message, may be None"""
|
||||
|
||||
_compressed: bool = True
|
||||
"""Internal property representing whether the message should be compressed"""
|
||||
|
@ -103,9 +105,8 @@ class iMessage:
|
|||
sender=sender if sender is not None else message.get("p", [])[-1] if "p" in message else None,
|
||||
_id=uuid.UUID(message.get("r")) if "r" in message else None,
|
||||
group_id=uuid.UUID(message.get("gid")) if "gid" in message else None,
|
||||
body=BalloonBody(message["bid"], message["b"])
|
||||
if "bid" in message
|
||||
else None,
|
||||
body=BalloonBody(message["bid"], message["b"]) if "bid" in message else None,
|
||||
effect=message["iid"] if "iid" in message else None,
|
||||
_compressed=compressed,
|
||||
_raw=message,
|
||||
)
|
||||
|
@ -124,6 +125,7 @@ class iMessage:
|
|||
"pv": 0,
|
||||
"gv": "8",
|
||||
"v": "1",
|
||||
"iid": self.effect
|
||||
}
|
||||
|
||||
# Remove keys that are None
|
||||
|
@ -138,6 +140,12 @@ class iMessage:
|
|||
|
||||
return d
|
||||
|
||||
def to_string(self) -> str:
|
||||
message_str = f"[{self.sender}] '{self.text}'"
|
||||
if self.effect is not None:
|
||||
message_str += f" with effect [{self.effect}]"
|
||||
return message_str
|
||||
|
||||
|
||||
class iMessageUser:
|
||||
"""Represents a logged in and connected iMessage user.
|
||||
|
|
Loading…
Reference in a new issue