You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
3.7 KiB

import requests
import logging
import telegram
from telegram.ext import Updater, CommandHandler
import time
import os
import pause, datetime
from threading import Thread
_bot = telegram.Bot(token=os.environ["TELEGRAM_API_KEY"])
_updater = Updater(token=os.environ["TELEGRAM_API_KEY"], use_context=True)
_dp = _updater.dispatcher
_chatid = os.environ["TELEGRAM_CHAT_ID"]
_apikey = os.environ["ETHERSCAN_API_KEY"]
_chainlink = '0x514910771af9ca656af840dff83e8264ecf986ca'
_url = 'https://etherscan.io/token/'+_chainlink+'?a='
_whale = [
{'address': '0x75398564ce69b7498da10a11ab06fd8ff549001c', 'amount': 55000000},
{'address': '0x5560d001f977df5e49ead7ab0bdd437c4ee3a99e', 'amount': 0},
{'address': '0xbe6977e08d4479c0a6777539ae0e8fa27be4e9d6', 'amount': 0},
{'address': '0xe0362f7445e3203a496f6f8b3d51cbb413b69be2', 'amount': 0},
{'address': '0xdad22a85ef8310ef582b70e4051e543f3153e11f', 'amount': 0},
{'address': '0xf37c348b7d19b17b29cd5cfa64cfa48e2d6eb8db', 'amount': 0},
]
full = "50,000,000"
def watch():
whale = {}
whale = updateQuantities(_whale)
prevWhale = _whale.copy()
#prevWhale = whale.copy()
while True:
whale = updateQuantities(whale)
dumpedAmount = getDumpedAmount(whale, prevWhale)
dumpedWallet = getDumpedWallet(whale, prevWhale)
prevWhale = whale.copy()
if dumpedAmount > 0:
alert(whale, dumpedAmount, dumpedWallet)
time.sleep(5)
def ls(update, context):
print('wtf')
text = "🤓 List of wallet.\n\n"
texts =[]
for i in range(0,5):
texts.append("☑️ Wallet #"+str(i+1)+"\n"+url+w+"\n"+"("+"{:,}".format(int(whale[w]))+"/"+full+")\n")
text = '\n'.join(texts)
context.bot.send_message(chat_id=update.effective_chat.id, text=text)
def listen():
_dp.add_handler(CommandHandler("ls", ls, pass_args=True))
_updater.start_polling()
def getDumpedAmount(whale, prevWhale):
total = 0
for i in range(0,5):
if whale[i]['amount'] < prevWhale[i]['amount']:
total = total + (prevWhale[i]['amount'] - whale[i]['amount'])
return total
def getDumpedWallet(whale, prevWhale):
wallets = []
for i in range(0,5):
if whale[i]['amount'] < prevWhale[i]['amount']:
wallets.append(i)
return wallets
def alert(whale, dumpedAmount, dumpedWallet):
dumpedAmount = "{:,}".format(int(dumpedAmount))
dumpedWalletString = []
for w in dumpedWallet:
dumpedWalletString.append(str(w+1))
text = "😱 Sergey is dumping "+ str(dumpedAmount) +" links from wallet #"+','.join(dumpedWalletString) +"!\n\n"
texts = []
for i in dumpedWallet:
texts.append("☑️ Wallet #"+str(i+1)+"\n"+_url+whale[i]['address']+"\n"+"("+"{:,}".format(int(whale[i]['amount']))+"/"+full+")\n")
texts = "\n".join(texts)
text = text + texts
print(text)
#_bot.sendMessage(chat_id=_chatid, text=text)
def updateQuantities(whale):
new = []
for w in whale:
r = requests.get('https://api.etherscan.io/api?module=account&action=tokenbalance&contractaddress='+_chainlink+'&address='+w['address']+'&tag=latest&apikey='+_apikey)
new.append({'address': w['address'], 'amount': (float(r.json()['result']) * 0.000000000000000001)})
time.sleep(0.5)
return new
class watcher(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start()
def run(self):
watch()
class listener(Thread):
def __init__(self):
Thread.__init__(self)
self.daemon = True
self.start()
def run(self):
listen()
_dp.add_handler(CommandHandler("ls", ls))
_updater.start_polling()
watcher()
listener()
while True:
pass