def telegram_bot_sendtext(bot_message, bot_chatID=-1001217489815): try: if bot_chatID is None or telegram_id is None or telegram_id == '': return None bot_token = telegram_id send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + str( int(bot_chatID)) + '&parse_mode=Markdown&text=' + bot_message response = requests.get(send_text) return response.json() except Exception as ex: logger.exception(ex, exc_info=True)
def swap_exact_token_for_token(self, in_token_amount, path, min_out_token_amount, deadline=None, gas=320000, gas_price=None, fee_support=True, version=2, fee=3000): ''' отправить транзакцию на обмен конкретного количества эфиров на токен''' # устанавливаем дедлайн try: if deadline is None: deadline = self.get_default_deadline() # создаем транзакцию if version == 2: tx = self._create_exact_token_for_token_tx( in_token_amount, min_out_token_amount, path, deadline=deadline, fee_support=fee_support) else: tx = self._create_exact_token_for_token_tx_v3( in_token_amount, min_out_token_amount, path, deadline=deadline, fee=fee) # добавляем всякую хуйню типа нонсе,газ и проч b_tx = self.build_tx(tx, gas=gas, gas_price=gas_price) # подписали транзакцию ключом signed_tx = self.sign_row_tx(b_tx) # исполнили return self.send_signed_raw_tx(signed_tx) except Exception as ex: logger.exception(ex) raise ex
async def hello(): uri = f"wss://followswaps.com/ws/{addr}/" conn_msg = { "action": "logon", 'subscriber': addr, 'donors': donors, 'net_name': 'main' } _, signed_msg = sign_message(str(conn_msg), key) async with websockets.connect(uri) as ws: await ws.send(json.dumps({ 'msg': conn_msg, "hash": signed_msg })) err = False while 1: if ws.closed == False: if err == True: sync_to_async(w.send_msg_to_subscriber_tlg)( ' socket was reconnected') err = False try: msg = await ws.recv() logger.info(msg) if msg == 'Low balance': w.active = False w.send_msg_to_subscriber_tlg( ' stopped, low balance') w.refresh_balances() w.save() return if msg.startswith('Failed'): w.active = False w.send_msg_to_subscriber_tlg( f' stopped, {msg}') w.save() return if msg == 'success': pass asyncio.ensure_future(limits()) else: try: await sync_to_async(w.parse_client_msg )(msg) except: logger.exception(f'wrong message: {msg}') except Exception as ex: logger.exception(ex, exc_info=True) if err == False: w.send_msg_to_subscriber_tlg( 'error with socket connection, we are trying to reconnect' ) err = True else: logger.info('trying to reconnect to socket') try: ws = await websockets.connect(uri) await ws.send( json.dumps({ 'msg': conn_msg, "hash": signed_msg })) msg = await ws.recv() logger.info(msg) if msg == 'Low balance': w.active = False w.send_msg_to_subscriber_tlg( ' stopped, low balance') w.refresh_balances() w.save() return if msg.startswith('Failed'): w.active = False w.send_msg_to_subscriber_tlg( f' stopped, {msg}') w.save() return if msg == 'success': pass asyncio.ensure_future(limits()) else: try: await sync_to_async( w.parse_client_msg)(msg) except: logger.exception( f'wrong message: {msg}') except: pass time.sleep(15) else: if err == False: w.send_msg_to_subscriber_tlg( 'error with socket connection, we are trying to reconnect' ) err = True else: logger.info('trying to reconnect to socket') try: ws = await websockets.connect(uri) print('123', ws.closed) await ws.send( json.dumps({ 'msg': conn_msg, "hash": signed_msg })) msg = await ws.recv() logger.info(msg) if msg == 'Low balance': w.active = False await sync_to_async( w.send_msg_to_subscriber_tlg )(' stopped, low balance') await sync_to_async(w.refresh_balances)() await sync_to_async(w.save)() return if msg.startswith('Failed'): w.active = False await sync_to_async( w.send_msg_to_subscriber_tlg )(f' stopped, {msg}') await sync_to_async(w.save)() return if msg == 'success': pass asyncio.ensure_future(limits()) else: try: await sync_to_async(w.parse_client_msg )(msg) except: logger.exception( f'wrong message: {msg}') except Exception as ex: logger.exception(ex, exc_info=True) pass time.sleep(15)
def update_asset(request): data = JSONParser().parse(request) try: addr = web3.main.to_checksum_address(data['addr']) except: return JsonResponse( { 'non_field_errors': ['invalid address for wallet, update wallet information'] }, status=400) key_hash = data['key_hash'] try: token_addr = web3.main.to_checksum_address(data['token']['addr']) except: return JsonResponse({'addr': ['invalid address']}, status=400) data['token']['addr'] = token_addr if Wallet.objects.filter(addr=addr).exists() == False: return JsonResponse( { 'non_field_errors': ['invalid address for wallet, update wallet information'] }, status=400) if Wallet.objects.filter(key_hash=key_hash).exists() == False: return JsonResponse( { 'non_field_errors': ['invalid key for wallet, update wallet information'] }, status=400) else: wallet = Wallet.objects.get(addr=addr, key_hash=key_hash) if token_addr in ('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', '0xc778417E063141139Fce010982780140Aa0cD5Ab'): return JsonResponse({'addr': ['cant trade weth']}, status=400) if data['token']['id'] != -2: skip_token = DonorAsset.objects.get(pk=data['token']['id']) changed = False try: if skip_token.asset.decimals is None: skip_token.asset.decimals = wallet.follower.get_erc_contract_by_addr( data['token']['addr']).functions.decimals().call() changed = True if skip_token.asset.name is None or skip_token.asset.name == '': skip_token.asset.name = wallet.follower.get_erc_contract_by_addr( data['token']['addr']).functions.name().call() changed = True if changed: skip_token.asset.save() except: return JsonResponse( {'addr': ['invalid address or wrong token']}, status=400) skip_ser = DonorAssetSerializer(data=data['token'], instance=skip_token) if skip_ser.is_valid(): skip_ser.save() else: return JsonResponse(skip_ser.errors, status=status.HTTP_400_BAD_REQUEST) else: data['token']['wallet'] = wallet.id asset, created = Asset.objects.get_or_create( wallet_id=wallet.id, addr=data['token']['addr']) try: changed = False if asset.decimals is None: asset.decimals = wallet.follower.get_erc_contract_by_addr( data['token']['addr']).functions.decimals().call() changed = True if asset.name is None or asset.name == '': asset.name = wallet.follower.get_erc_contract_by_addr( data['token']['addr']).functions.name().call() changed = True asset.price_for_token = wallet.follower.get_out_qnty_by_path( 10**asset.decimals, [ asset.addr, wallet.follower.weth_addr, ]) if changed: asset.save() wallet.refresh_token_balance(asset.id) except Exception as ex: logger.exception(ex, exc_info=True) if created: asset.delete() return JsonResponse( {'addr': ['invalid address or wrong token']}, status=400) data['token']['asset'] = asset.id new_skip_token = DonorAssetSerializer(data=data['token']) if new_skip_token.is_valid(): new_skip_token.save() # wallet.assets.add(new_skip_token.instance) # wallet.save() serializer = WalletSerializer(instance=wallet) return JsonResponse(serializer.data, status=200)