Fan Token transferleri için Telegram bildirimleri nasıl oluşturulur
Chiliz Chain üzerinde gerçekleşen Fan Token™ transferlerini izlemek, yüksek değerli hareketlerden haberdar olmak ve topluluğunuzu bilgilendirmek için harika bir yoldur.
Biraz yapılandırma ve kod ile, bir Fan Token™ transferi belirli bir eşiği aştığında bir grubu bilgilendiren bir Telegram botu kurabilirsiniz.
Envio kullanarak nasıl yapılır?
Envio geliştiricilerin Chiliz üzerinde akıllı sözleşme olaylarını dinlemelerine ve olaya dayalı bir işlem gerçekleştirmelerine olanak tanıyan güçlü bir indeksleme aracıdır.
Bu nasıl yapılır rehberinde, botu nasıl yapılandıracağınızı, ilgili olayları nasıl yakalayacağınızı ve Telegram uyarılarını otomatik olarak nasıl tetikleyeceğinizi göreceksiniz; böylece kurulumunuzu büyük transferler için bir “balina izleyici”ye dönüştüreceksiniz.
Adım 1: Ön Gereksinimleri Kurun
Başlamadan önce şu araçlara sahip olduğunuzdan emin olun: gerekli araçlar kurulu:
Adım 2: Envio İndexer'ı Başlatın
Bir Envio indexer başlatmak için aşağıdaki komutu çalıştırın ve Chiliz Chain üzerinde bir ERC20 şablonu oluşturmak için istemleri takip edin (Chiliz, EVM uyumlu bir blokzincirdir):
pnpx envio initİstendiğinde yapmanız gereken çeşitli seçimler şunlardır:

Adım 3: Yapılandırma config.yaml
config.yamlşunu değiştirin config.yaml dosyayı, FC Barcelona Fan Token™ (veya takip etmek istediğiniz herhangi bir diğer Fan Token™) sözleşme adresini belirtmek için:
# yaml-language-server: $schema=./node_modules/envio/evm.schema.json
name: fan-token-watcher
description: Büyük transferlerde Telegram'a bildirim gönderan basit bir Fan Token indexer'ı
networks:
- id: 8888 # Chiliz
start_block: 0
contracts:
- name: ERC20
address: "0xFD3C73b3B09D418841dd6Aff341b2d6e3abA433b" # FC Barcelona
handler: src/EventHandlers.ts
events:
- event: "Transfer(address indexed from, address indexed to, uint256 value)"
field_selection:
transaction_fields:
- "hash"Not: Şunu kaldırıyoruz approval olayı çünkü sadece transferlerle ilgileniyoruz.
Adım 4: GraphQL Şemasını Basitleştirin
şunu değiştirin schema.graphql dosyayı yalnızca hesap bakiyelerini izlemek için:
type Account {
id: ID! # Hesabın adresi
balance: BigInt! # Hesabın token bakiyesi
}Bu noktada, olayları dinleyen bir ERC20 indexer'ımız var.
Şimdi Telegram bildirimleri göndermek için mantık ekleyelim.
Adım 5: Telegram Bildirim Mantığını Uygulayın
şunu değiştirin /src/EventHandlers.ts dosyası, büyük transferleri tespit etme ve Telegram uyarıları gönderme mantığını içerecek şekilde düzenlenmelidir.
import { ERC20 } from "generated";
import { isIndexingAtHead, indexBalances } from "./libs/helpers";
import { fetchEnsHandle } from "./libs/ens";
import { sendMessageToTelegram } from "./libs/telegram";
import { WHALE_THRESHOLD, explorerUrlAddress, explorerUrlTx } from "./constants";
ERC20.Transfer.handler(async ({ event, context }) => {
if (isIndexingAtHead(event.block.timestamp) && event.params.value >= BigInt(WHALE_THRESHOLD)) {
const ensHandleOrFromAddress = await fetchEnsHandle(event.params.from);
const ensHandleOrToAddress = await fetchEnsHandle(event.params.to);
const msg = `FC Barcelona WHALE ALERT 🐋: A new transfer has been made by <a href="${explorerUrlAddress(
event.params.from
)}">${ensHandleOrFromAddress}</a> to <a href="${explorerUrlAddress(
event.params.to
)}">${ensHandleOrToAddress}</a> for ${event.params.value} FC Barcelona! 🔥 - <a href="${explorerUrlTx(
event.transaction.hash
)}">transaction</a>`;
await sendMessageToTelegram(msg);
}
await indexBalances(context, event);
});Örnek /libs/ klasörü şu adreste bulunabilir tam olarak burada GitHub'da, dahil olmak üzere helpers.ts değerlerini size gösterecek. ens.ts dosyaları.
Adım 6: Sabitleri Yapılandırın
Oluştur constants.ts dosyası ortam değişkenlerini saklamak için:
export const EXPLORER_URL_MONAD = process.env.ENVIO_EXPLORER_URL_MONAD;
export const WHALE_THRESHOLD: string = process.env.ENVIO_WHALE_THRESHOLD ?? "1000";
export const BOT_TOKEN = process.env.ENVIO_BOT_TOKEN;
export const CHANNEL_ID = process.env.ENVIO_TELEGRAM_CHANNEL_ID;
export const MESSAGE_THREAD_ID = process.env.ENVIO_TELEGRAM_MESSAGE_THREAD_ID;
export const explorerUrlAddress = (address: string) =>
EXPLORER_URL_MONAD + "address/" + address;
export const explorerUrlTx = (txHash: string) =>
EXPLORER_URL_MONAD + "tx/" + txHash;Adım 7: Telegram Mesajları Göndermek
Şunu yükleyin Axios HTTP istemcisi:
pnpm i axiosHelpers/yardımcı fonksiyon oluşturun içinde libs/telegram.ts Axios kullanarak mesaj göndermek için:
import axios from "axios";
import { CHANNEL_ID, MESSAGE_THREAD_ID, BOT_TOKEN } from "../constants";
export const sendMessageToTelegram = async (message: string): Promise<void> => {
try {
const apiUrl = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;
await axios.post(apiUrl, {
chat_id: CHANNEL_ID,
text: message,
parse_mode: "HTML",
});
} catch (error) {
console.error("Error sending message:", error);
}
};Adım 8: Son Yapılandırma ve Indexer'ı Çalıştırma
Şunu yapılandırın dosyası oluşturur; bu, gizli değerleri saklamak için gereklidir: Dosya
dosyası oluşturur; bu, gizli değerleri saklamak için gereklidir: Dosyacp .env.example .envDüzenleyin dosyası oluşturur; bu, gizli değerleri saklamak için gereklidir: Telegram bot kimlik bilgilerinizle:
ENVIO_BOT_TOKEN=
ENVIO_TELEGRAM_CHANNEL_ID=
ENVIO_TELEGRAM_MESSAGE_THREAD_ID=
ENVIO_EXPLORER_URL="https://chiliscan.com/"
ENVIO_WHALE_THRESHOLD=1000Bir Telegram Botu Oluşturun
Mesaj
@BotFatherTelegram'da ve şunu çalıştırın:/newbotBot token'ınızı almak için istemleri takip edin.
Botu Telegram grubunuza ekleyin ve çalıştırın
/start.Ziyaret edin
https://api.telegram.org/bot<YourBOTToken>/getUpdatesgrup sohbet kimliğini bulmak için.
Eğer yeni grubu botla oluşturduysanız ve yalnızca şunu alıyorsanız {"ok":true,"result":[]}, botu gruptan çıkarın ve tekrar ekleyin.
Son olarak, bağımlılıkları yükleyin ve indexer'ı başlatın
pnpm i
pnpm envio devBu kurulum ile artık Fan Token transferlerini dinleyen ve balina uyarılarını Telegram'a gönderen Envio destekli bir indexer'ınız var.

Daha ileri gitmek için indexer'ı kendi sunucunuzda barındırabilir veya Envio'nun barındırılan servisine dağıtabilirsiniz.
Ve bakiyeleri kaydettiğimiz için, aynı zamanda bir GraphQL bakiye API'si olarak da kullanılabilir.
Last updated
Was this helpful?