Skip to content

Instantly share code, notes, and snippets.

@fcavalcantirj
Created April 13, 2025 20:09
Show Gist options
  • Save fcavalcantirj/18dcdafe109a405b8282af0a26eae479 to your computer and use it in GitHub Desktop.
Save fcavalcantirj/18dcdafe109a405b8282af0a26eae479 to your computer and use it in GitHub Desktop.

📲 Envio de Mensagens via API zapr.link

Este script envia mensagens personalizadas via API do zapr.link, lendo nomes e números de um arquivo db.csv.


📁 Estrutura do CSV

Crie um arquivo db.csv com:

whatsapp,name
557474839465,XYZ
55713936373,Lucas
5521983656474,AnaZZZ

✉️ Mensagem enviada

Olá {{NAME}}! Por favor, para completar a ativação de seu domínio, finalize o pagamento por aqui:

https://app.basicpay.io/payment/b992e712-36a3-42ab-9fb0-7f822f62e1ef

A variável {{NAME}} será substituída automaticamente.


⚙️ Configurando seu hash do zapr.link

  1. Acesse https://zapr.link/app
  2. Crie a mensagem e copie o hash da URL da API:
https://api.zapr.link/message/SEU_HASH_AQUI
  1. No script send_messages.py, substitua:
API_URL = "https://api.zapr.link/message/ZAPR_LINK_HASH"

Por algo como:

API_URL = "https://api.zapr.link/message/a6a7e520-8293-4c2e-9102-346cf6337fea"

▶️ Como rodar

  1. Instale a lib necessária:
pip install requests
  1. Execute o script:
python send_messages.py

Mensagens serão enviadas com um intervalo aleatório entre 7 a 30 segundos.


🧾 Código do script

import csv
import time
import random
import requests

CSV_FILE = 'db.csv'
API_URL = "https://api.zapr.link/message/ZAPR_LINK_HASH"
HEADERS = { "Content-Type": "application/json" }
MESSAGE_TEMPLATE = (
    "Olá {{NAME}}! Por favor, para completar a ativação de seu domínio, finalize o pagamento por aqui:\n\n"
    "https://app.basicpay.io/payment/SEU_ZAPR_LINKR_HASH"
)

def load_contacts(csv_path):
    contacts = []
    with open(csv_path, newline='', encoding='utf-8') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            contacts.append({
                'whatsapp': row['whatsapp'].strip(),
                'name': row['name'].strip()
            })
    return contacts

def send_message(whatsapp_number, message):
    payload = { "numbers": whatsapp_number, "message": message }
    response = requests.post(API_URL, json=payload, headers=HEADERS)
    print(f"Enviado para {whatsapp_number}: {response.status_code} - {response.text}")

def main():
    contacts = load_contacts(CSV_FILE)
    for contact in contacts:
        personalized = MESSAGE_TEMPLATE.replace("{{NAME}}", contact['name'])
        send_message(contact['whatsapp'], personalized)
        delay = random.randint(7, 30)
        print(f"Aguardando {delay}s...")
        time.sleep(delay)

if __name__ == "__main__":
    main()
whatsapp name
557474839465 XYZ
55713936373 Lucas
5521983656474 AnaZZZ
import csv
import time
import random
import requests
# === Configuration ===
CSV_FILE = 'db.csv' # Path to your CSV file
API_URL = "https://api.zapr.link/message/ZAPR_LINK_HASH"
HEADERS = {
"Content-Type": "application/json"
}
MESSAGE_TEMPLATE = (
"Olá {{NAME}}! Por favor, para completar a ativação de seu domínio, finalize o pagamento por aqui:\n\n"
"https://app.basicpay.io/payment/b992e712-36a3-42ab-9fb0-7f822f62e1ef"
)
# === Load CSV and send messages ===
def load_contacts(csv_path):
contacts = []
with open(csv_path, newline='', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
contacts.append({
'whatsapp': row['whatsapp'].strip(),
'name': row['name'].strip()
})
return contacts
def send_message(whatsapp_number, message):
payload = {
"numbers": whatsapp_number,
"message": message
}
response = requests.post(API_URL, json=payload, headers=HEADERS)
print(f"Sent to {whatsapp_number}: {response.status_code} - {response.text}")
def main():
contacts = load_contacts(CSV_FILE)
for contact in contacts:
personalized_message = MESSAGE_TEMPLATE.replace("{{NAME}}", contact['name'])
send_message(contact['whatsapp'], personalized_message)
delay = random.randint(7, 30)
print(f"Waiting {delay} seconds before next message...")
time.sleep(delay)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment