mirror of
https://github.com/kuhyx/signal-bot.git
synced 2026-07-04 13:23:07 +02:00
feat: made script more extensible
This commit is contained in:
parent
09e811a2b7
commit
44f965c16b
47
main.py
47
main.py
@ -8,6 +8,7 @@ import json
|
|||||||
# Set up environment variable for the phone number
|
# Set up environment variable for the phone number
|
||||||
PHONE_NUMBER = os.getenv('PHONE_NUMBER', '1234567890') # Default to '1234567890' if not set
|
PHONE_NUMBER = os.getenv('PHONE_NUMBER', '1234567890') # Default to '1234567890' if not set
|
||||||
RECEIVE_URL = f"http://localhost:9922/v1/receive/{PHONE_NUMBER}"
|
RECEIVE_URL = f"http://localhost:9922/v1/receive/{PHONE_NUMBER}"
|
||||||
|
SEND_URL = 'http://localhost:9922/v2/send'
|
||||||
GROUP_ID = os.getenv('GROUP_ID', '')
|
GROUP_ID = os.getenv('GROUP_ID', '')
|
||||||
GROUP_ID_SEND = os.getenv('GROUP_ID_SEND', '')
|
GROUP_ID_SEND = os.getenv('GROUP_ID_SEND', '')
|
||||||
CAT_API = os.getenv('CAT_API', '')
|
CAT_API = os.getenv('CAT_API', '')
|
||||||
@ -38,15 +39,13 @@ def fetch_and_download_cat_image():
|
|||||||
os.remove(image_filename)
|
os.remove(image_filename)
|
||||||
return base64_encoded_data
|
return base64_encoded_data
|
||||||
|
|
||||||
def send_cat():
|
def send_cat(quote_message):
|
||||||
url = 'http://localhost:9922/v2/send'
|
|
||||||
data = {
|
data = {
|
||||||
"base64_attachments": [fetch_and_download_cat_image()],
|
"base64_attachments": [fetch_and_download_cat_image()],
|
||||||
"number": PHONE_NUMBER,
|
"number": PHONE_NUMBER,
|
||||||
"recipients": [GROUP_ID_SEND]
|
"recipients": [GROUP_ID_SEND]
|
||||||
}
|
}
|
||||||
response = requests.post(url, json=data)
|
response = requests.post(SEND_URL, json=data)
|
||||||
|
|
||||||
if response.status_code == 200:
|
if response.status_code == 200:
|
||||||
print("Request was successful.")
|
print("Request was successful.")
|
||||||
else:
|
else:
|
||||||
@ -54,19 +53,45 @@ def send_cat():
|
|||||||
print(response.text)
|
print(response.text)
|
||||||
|
|
||||||
|
|
||||||
|
def message_message(inside_message):
|
||||||
|
message_value = inside_message.get('message')
|
||||||
|
return message_value
|
||||||
|
|
||||||
|
def message_group_id(inside_message):
|
||||||
|
return inside_message.get('groupInfo', {}).get('groupId', {})
|
||||||
|
|
||||||
|
def message_timestamp(inside_message):
|
||||||
|
|
||||||
|
|
||||||
|
def extract_message_content(message):
|
||||||
|
message_json = json.loads(message)
|
||||||
|
inside_message = message_json.get('envelope', {}).get('dataMessage', {})
|
||||||
|
if inside_message == {}:
|
||||||
|
inside_message = message_json.get('envelope', {}).get('syncMessage', {}).get('sentMessage', {})
|
||||||
|
return inside_message
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
command_map = {
|
||||||
|
"!kot": lambda name: send_cat(name)
|
||||||
|
}
|
||||||
|
|
||||||
async def listen_to_server():
|
async def listen_to_server():
|
||||||
uri = f"ws://localhost:9922/v1/receive/{PHONE_NUMBER}"
|
uri = f"ws://localhost:9922/v1/receive/{PHONE_NUMBER}"
|
||||||
async with websockets.connect(uri) as websocket:
|
async with websockets.connect(uri) as websocket:
|
||||||
print(f"Connected to server at {uri}")
|
print(f"Connected to server at {uri}")
|
||||||
try:
|
try:
|
||||||
async for message in websocket:
|
async for message in websocket:
|
||||||
message_json = json.loads(message)
|
message_content = extract_message_content(message)
|
||||||
inside_message = message_json.get('envelope', {}).get('dataMessage', {})
|
if message_group_id(message_content) == GROUP_ID:
|
||||||
if inside_message == {}:
|
message_value = message_message(message_content)
|
||||||
inside_message = message_json.get('envelope', {}).get('syncMessage', {}).get('sentMessage', {})
|
print("message_value: ", message_value)
|
||||||
print("message", message)
|
if message_value in command_map:
|
||||||
if inside_message.get('message') == "!kot" and inside_message.get('groupInfo', {}).get('groupId', {}) == GROUP_ID:
|
# Call the corresponding function
|
||||||
send_cat()
|
command_map[message_value]()
|
||||||
|
else:
|
||||||
|
print("Unknown command")
|
||||||
except websockets.ConnectionClosed as e:
|
except websockets.ConnectionClosed as e:
|
||||||
print(f"Connection closed: {e}")
|
print(f"Connection closed: {e}")
|
||||||
|
|
||||||
|
|||||||
50
readme.md
Normal file
50
readme.md
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
Usefull:
|
||||||
|
https://bbernhard.github.io/signal-cli-rest-api/
|
||||||
|
|
||||||
|
|
||||||
|
If the message was send from the same account as the bot is connected to:
|
||||||
|
{
|
||||||
|
"envelope": {
|
||||||
|
"source": "NAME",
|
||||||
|
"sourceNumber": "PHONE_NUMBER",
|
||||||
|
"sourceUuid": "SOURCE_ID",
|
||||||
|
"sourceName": "USER_DEFINED_NAME",
|
||||||
|
"sourceDevice": 69,
|
||||||
|
"timestamp": 1719177728639,
|
||||||
|
"syncMessage": {
|
||||||
|
"sentMessage": {
|
||||||
|
"destination": "DEST_NAME",
|
||||||
|
"destinationNumber": "DEST_PHONE_NUMBER",
|
||||||
|
"destinationUuid": "DEST_SEND_MESSAGE",
|
||||||
|
"timestamp": 1719177728639,
|
||||||
|
"message": "MESSAGE_CONTENT",
|
||||||
|
"expiresInSeconds": 0,
|
||||||
|
"viewOnce": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"account": "BOT_ACCOUNT_PHONE_NUMBER"
|
||||||
|
}
|
||||||
|
|
||||||
|
If the message was send from other account:
|
||||||
|
{
|
||||||
|
"envelope": {
|
||||||
|
"source": "NAME",
|
||||||
|
"sourceNumber": "PHONE_NUMBER",
|
||||||
|
"sourceUuid": "SOURCE_ID",
|
||||||
|
"sourceName": "USER_DEFINED_NAME",
|
||||||
|
"sourceDevice": 69,
|
||||||
|
"timestamp": 1719177917717,
|
||||||
|
"dataMessage": {
|
||||||
|
"timestamp": 1719177917717,
|
||||||
|
"message": "MESSAGE_CONTENT",
|
||||||
|
"expiresInSeconds": 0,
|
||||||
|
"viewOnce": false,
|
||||||
|
"groupInfo": {
|
||||||
|
"groupId": "ID_OF_GROUP_SEND_TO",
|
||||||
|
"type": "DELIVER"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"account": "BOT_ACCOUNT_PHONE_NUMBER"
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user