mirror of
https://github.com/kuhyx/signal-bot.git
synced 2026-07-04 15:23:12 +02:00
feat: added additional commands for cats and dogs to nerf traps
This commit is contained in:
parent
14d6807119
commit
deb54e4c49
67
main.py
67
main.py
@ -11,6 +11,7 @@ from datetime import datetime, time, timedelta
|
|||||||
# 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}"
|
||||||
|
REMOVE_ATTACHMENT_URL = f"http://localhost:9922/v1/attachments/"
|
||||||
SEND_URL = 'http://localhost:9922/v2/send'
|
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', '')
|
||||||
@ -40,7 +41,6 @@ def fetch_and_download_image(api_url, image_url_key):
|
|||||||
response.raise_for_status() # Ensure the request was successful
|
response.raise_for_status() # Ensure the request was successful
|
||||||
|
|
||||||
# Parse the response JSON to get the image URL
|
# Parse the response JSON to get the image URL
|
||||||
print("response: ", response.json)
|
|
||||||
data = response.json()
|
data = response.json()
|
||||||
|
|
||||||
# Retrieve the image URL based on the provided key
|
# Retrieve the image URL based on the provided key
|
||||||
@ -53,14 +53,14 @@ def fetch_and_download_image(api_url, image_url_key):
|
|||||||
|
|
||||||
return download_image(image_url)
|
return download_image(image_url)
|
||||||
|
|
||||||
def send_image(base64_attachments, recipients=GROUP_ID_SEND):
|
async def send_image(base64_attachments, recipients=GROUP_ID_SEND):
|
||||||
data = {
|
data = {
|
||||||
"base64_attachments": [base64_attachments],
|
"base64_attachments": [base64_attachments],
|
||||||
"number": PHONE_NUMBER,
|
"number": PHONE_NUMBER,
|
||||||
"recipients": [recipients]
|
"recipients": [recipients]
|
||||||
}
|
}
|
||||||
response = requests.post(SEND_URL, json=data)
|
response = requests.post(SEND_URL, json=data)
|
||||||
if response.status_code == 200:
|
if response.status_code == 200 or response.status_code == 201:
|
||||||
print("Request was successful.")
|
print("Request was successful.")
|
||||||
else:
|
else:
|
||||||
print(f"Request failed with status code: {response.status_code}")
|
print(f"Request failed with status code: {response.status_code}")
|
||||||
@ -97,7 +97,7 @@ def extract_message_content(message):
|
|||||||
|
|
||||||
|
|
||||||
def extract_source_uuid(message):
|
def extract_source_uuid(message):
|
||||||
#message_json = json.loads(message)
|
message_json = json.loads(message)
|
||||||
#inside_message = message_json.get('envelope', {}).get('sourceUuid', {})
|
#inside_message = message_json.get('envelope', {}).get('sourceUuid', {})
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
@ -110,9 +110,9 @@ def update_string_count(string, mapping):
|
|||||||
|
|
||||||
|
|
||||||
command_map = {
|
command_map = {
|
||||||
"!kot": lambda recipient: send_image(fetch_and_download_image("https://api.thecatapi.com/v1/images/search", [0, 'url']), recipient),
|
("!kot", "!koty", "!cat", "!cats", "!meow"): lambda recipient: send_image(fetch_and_download_image("https://api.thecatapi.com/v1/images/search", [0, 'url']), recipient),
|
||||||
"!pies": lambda recipient: send_image(fetch_and_download_image("https://dog.ceo/api/breeds/image/random", 'message'), recipient),
|
("!pies", "!psy", "!dog", "!dogs", "!woof"): lambda recipient: send_image(fetch_and_download_image("https://dog.ceo/api/breeds/image/random", 'message'), recipient),
|
||||||
"!traps": lambda recipient: send_image(download_image(((rule34Py().random_post(["trap"])).sample)), recipient)
|
("!traps"): lambda recipient: send_image(download_image(((rule34Py().random_post(["trap"])).sample)), recipient)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -149,6 +149,38 @@ async def scheduled_task(queue):
|
|||||||
send_message(message_count)
|
send_message(message_count)
|
||||||
queue.task_done()
|
queue.task_done()
|
||||||
|
|
||||||
|
async def trigger_command(message_content, recipient):
|
||||||
|
message_value = message_message(message_content)
|
||||||
|
for command_triggers, command_function in command_map.items():
|
||||||
|
if message_value in command_triggers:
|
||||||
|
await command_function(recipient)
|
||||||
|
break
|
||||||
|
|
||||||
|
async def send_to_group(message_content):
|
||||||
|
if message_group_id(message_content) == GROUP_ID:
|
||||||
|
#await count_messages(message_content, queue)
|
||||||
|
trigger_command(message_content, GROUP_ID_SEND)
|
||||||
|
|
||||||
|
async def remove_attachment(attachment_id):
|
||||||
|
response = requests.delete(REMOVE_ATTACHMENT_URL + attachment_id)
|
||||||
|
if response.status_code == 200 or response.status_code == 204:
|
||||||
|
print("Request remove_attachment was successful.")
|
||||||
|
else:
|
||||||
|
print(f"Request remove_attachment failed with status code: {response.status_code}")
|
||||||
|
print(response)
|
||||||
|
|
||||||
|
async def get_attachments():
|
||||||
|
response = requests.get(REMOVE_ATTACHMENT_URL)
|
||||||
|
if response.status_code == 200:
|
||||||
|
attachments = json.loads(response.content)
|
||||||
|
print("attachments: ", attachments)
|
||||||
|
for attachment in attachments:
|
||||||
|
print("attachment: ", attachment)
|
||||||
|
await remove_attachment(attachment)
|
||||||
|
else:
|
||||||
|
print(f"Request failed with status code: {response.status_code}")
|
||||||
|
print(response)
|
||||||
|
|
||||||
async def listen_to_server(queue):
|
async def listen_to_server(queue):
|
||||||
uri = f"ws://localhost:9922/v1/receive/{PHONE_NUMBER}?send_read_receipts=false"
|
uri = f"ws://localhost:9922/v1/receive/{PHONE_NUMBER}?send_read_receipts=false"
|
||||||
async with websockets.connect(uri) as websocket:
|
async with websockets.connect(uri) as websocket:
|
||||||
@ -156,23 +188,10 @@ async def listen_to_server(queue):
|
|||||||
try:
|
try:
|
||||||
async for message in websocket:
|
async for message in websocket:
|
||||||
message_content = extract_message_content(message)
|
message_content = extract_message_content(message)
|
||||||
print(message_content)
|
#send_to_group(message_content)
|
||||||
if message_group_id(message_content) == GROUP_ID:
|
if message_content.get('destinationNumber', {}) == PHONE_NUMBER:
|
||||||
await count_messages(message_content, queue)
|
#await count_messages(message_content, queue)
|
||||||
message_value = message_message(message_content)
|
await trigger_command(message_content, PHONE_NUMBER)
|
||||||
if message_value in command_map:
|
|
||||||
# Call the corresponding function
|
|
||||||
command_map[message_value](GROUP_ID_SEND)
|
|
||||||
else:
|
|
||||||
print("Unknown command")
|
|
||||||
elif message_content.get('destinationNumber', {}) == PHONE_NUMBER:
|
|
||||||
await count_messages(message_content, queue)
|
|
||||||
message_value = message_message(message_content)
|
|
||||||
if message_value in command_map:
|
|
||||||
# Call the corresponding function
|
|
||||||
command_map[message_value](PHONE_NUMBER)
|
|
||||||
else:
|
|
||||||
print("Unknown command")
|
|
||||||
except websockets.ConnectionClosed as e:
|
except websockets.ConnectionClosed as e:
|
||||||
print(f"Connection closed: {e}")
|
print(f"Connection closed: {e}")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user