Ana içeriğe geç

Cryptohopper MCP raporlarını Telegram, Discord veya e-posta ile gönder

Cryptohopper MCP raporlarını Telegram, Discord veya e-postaya nasıl göndereceğini öğren. Kurulum betikleri, kanal karşılaştırma ve yaygın teslimat sorunları için çözümler bizde.

Yazar: Isaac

Ön Gereksinimler

  • Teslim etmek istediğin içeriği üreten çalışan bir MCP iş akışı — bir şablon için günlük en çok kazanan raporu nasıl hazırlayacağını gör.

  • Teslim adımı için bir betik ortamı. Python veya Node.js yaygın tercihler. Teslim, MCP çıktısını ürettikten sonra ayrı bir adımdır — MCP'nin kendisinin bir parçası değildir.

  • Hedef kanalın için kimlik bilgileri: Telegram veya Discord için bir bot token, ya da e-posta için SMTP / işlem bazlı e-posta kimlik bilgileri.


Kurulum — Telegram

  1. Telegram botu oluştur

    @BotFather'a mesaj at, /newbot gönder ve yönergeleri izle. Bot token'ını kaydet.

  2. Sohbet kimliğini al

    Telegram botuna herhangi bir mesaj gönder, ardından aşağıdaki URL'yi al. Yanıttaki chat.id ihtiyacın olan şey.

    https://api.telegram.org/bot /getUpdates

  3. Teslimi test et

    import requests

    TOKEN = "bot_token_ın"
    CHAT_ID = "sohbet_kimliğin"

    def send_telegram(text: str) -> None:
    requests.post(
    f"https://api.telegram.org/bot{TOKEN}/sendMessage",
    json={
    "chat_id": CHAT_ID,
    "text": text,
    "parse_mode": "Markdown",
    },
    ).raise_for_status()

    send_telegram("Cryptohopper MCP iş akışından merhaba")

Telegram Markdown'ı destekler, bu nedenle MCP'den gelen tablolar ve kalın metin biçimlendirmeleri yerel olarak işlenir. 4.096 karakterden uzun mesajlar bölünmelidir — uzun raporları paragraf sınırlarında parçalara ayır.


Kurulum — Discord

  1. Webhook oluştur

    Discord sunucunda, bir kanal → dişli simgesi → Entegrasyonlar → Webhook'lar → Yeni Webhook'u aç. Webhook URL'sini kopyala.

  2. Teslimi test et

import requests

WEBHOOK = "https://discord.com/api/webhooks/..."

def send_discord(text: str) -> None:
requests.post(WEBHOOK, json={"content": text}).raise_for_status()

send_discord("Cryptohopper MCP iş akışından merhaba")

Discord'un içerik sınırı mesaj başına 2.000 karakterdir — uzun raporları böl. Discord'da yerel tablo desteği yoktur; tabloları üçlü ters tırnak kullanarak hizalanmış kod blokları olarak biçimlendir. Daha zengin çıktı için, ham içerik yerine Discord embed'larını (başlık, açıklama, alanlar) kullan.


Kurulum — E-posta

İki seçenek: Gmail veya benzeri üzerinden SMTP (basit, ücretsiz, hız limitli) veya SendGrid, Mailgun, Resend gibi bir işlem bazlı hizmet (güvenilir, zamanlanmış işler için tercih edilir).

SendGrid örneği

import os
import requests

API_KEY = os.environ["SENDGRID_API_KEY"]
FROM = os.environ.get("ALERT_FROM_EMAIL", "uyarilar@alanadın.com")
TO = os.environ.get("ALERT_TO_EMAIL", "sen@alanadın.com")

def send_email(subject: str, body: str) -> None:
requests.post(
"https://api.sendgrid.com/v3/mail/send",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"personalizations": [{"to": [{"email": TO}]}],
"from": {"email": FROM},
"subject": subject,
"content": [{"type": "text/markdown", "value": body}],
},
).raise_for_status()

send_email("Günlük en çok kazananlar", "## Bugünkü kazananlar\n...")


E-posta ile gönderilen raporlar için Markdown veya HTML kullan — düz metin, tablo verileri için hızla okunamaz hale gelir.


Doğru kanalı seçmek

Kanal

En iyi kullanımı

Kısıtlamalar

Telegram

Gerçek zamanlı uyarılar, telefonunda, tek bakışta okuma

4.096 karakter sınırı, Markdown-lite

Discord

Paylaşılan ekip kanalı, zengin biçimlendirme, uyarılar etrafında tartışma

2.000 karakter sınırı, gerçek tablolar yok

E-posta

Daha uzun özetler, arşivleme, daha sonra aramak isteyeceğin her şey

Daha yüksek gecikme süresi, kolayca göz ardı edilebilir

Anlık uyarılar → Telegram. Ekip tarafından görülebilen çıktı → Discord. Sabah özetleri → e-posta.


Kanonik desen

MCP adımını ve teslim adımını ayrı tut. Teslimde bir hata (ağ kesintisi, süresi dolmuş token) MCP çıktısını kaybetmemeli — yine de kayıtlardan kurtarabilirsin.

# 1. MCP iş akışını çalıştır (metin çıktısı üretir)
report_text = run_mcp_workflow(prompt)

# 2. Teslim et
try:
send_telegram(report_text)
except Exception as e:
log(f"Teslim başarısız oldu: {e}")

Sorun Giderme

Telegram getUpdates boş bir liste döndürüyor

Henüz bota mesaj göndermedin veya farklı bir token ile sorguluyorsun. Önce Telegram hesabından bota herhangi bir mesaj gönder, ardından tekrar dene.

Discord webhook 429 döndürüyor

Hız sınırı aşıldı. Discord webhook'ları dakikada yaklaşık 30 mesaja izin verir — Retry-After başlığına uyun. Yüksek frekanslı uyarılar için, her olay için bir tane göndermek yerine birden fazla olayı tek bir mesaja gruplandır.

E-postalar spam'e düşüyor

Sahip olduğun bir alanda uygun bir Gönderen adresi kullan, SPF/DKIM/DMARC yapılandırılmış. Tamamen büyük harf içeren konu satırlarından, tetikleyici kelimelerden ve eklerden kaçın. İşlem bazlı bir hizmet bunların çoğunu doğru şekilde halleder; paylaşılan bir sağlayıcıdan düz SMTP genellikle halletmez.

Uzun MCP raporları Telegram veya Discord'da kesiliyor

Paragraf sınırlarında bölen bir ayırıcı oluştur. Bir tablo satırının ortasında bölme — sığan son tam satırdan sonra kes ve bir sonraki mesajı (devamı) başlığı ile aç.

Zamanlanmış çalıştırmalarda teslim sessizce başarısız oluyor ancak manuel olarak çalışıyor

En yaygın neden, zamanlanmış ortamda eksik bir ortam değişkeni veya süresi dolmuş bir token'dır. Cron, kabuğunun ortam değişkenleri olmadan çalışır; GitHub Actions'ın gizli bilgilerin yapılandırılması gerekir. Hatayı her başarısızlıkta tam olarak kaydet, böylece hemen görünür.

Sadece bir şey gerçekten uyarı verdiğinde uyarı istiyorsun

Teslimi koşullu hale getir — "rapor edilecek bir şey yok" mesajları gönderme, bunlar gürültü olur ve kanalı görmezden gelmeye başlarsın.

Aynı anda birden fazla kanala teslim etmek istiyorsun

Teslimi bir fan-out içine al, böylece her kanal bağımsız olur ve birindeki hata diğerlerini engellemez: for ch in [send_telegram, send_discord, send_email]: try ch(text).

Bu cevap sorunuzu yanıtladı mı?