متن کامل آگهی:
#پروژه\_جدید #کدپروژه : 88114موضوع : پروژه پایتون =/سلام وقت بخیریک پروتوتایپ میفرستم خدمت شما که ظاهر کلی پروژه ما رو برای شما تعریف میکنه برای تخمین قیمت.همونجور که میبینید با گرفتن آدرس ولت و کانترکت توکن کار شروع میشه.حد سود و حد ضرر و میزان خرید توکن به دلار توسط ما وارد میشه.در قسمت سبز رنگ میزان سرمایه فعلی یا دارایی فعلی که در ترید هست نمایش داده میشه.خب تا اینجای کار معمولی بود کار خاصی که میخواستیم ما انجام بدیم اجرای دستو حد ضرر شناور هست.اگر یک توکن خریده بشه یا به حالت سود میره یا به حالت ضرر. میخوایم اگر که به حالت سود رفت به میزان سود یا افزایش قیمت توکن, حد ضرر هم بالا بره ولی با ضرر کردن ثابت بمونه.در قسمت پایین هم نمودار توکن نمایش داده میشه که اگر ما دیدیم توکنها فروخته شده با دیدن نموداربتونیم به کمک اون تصمیم به دوباره خریدن آن بگیریم.
البته من برای اینکه بتونم کارم رو استارت بزنم و همینطور قیمت رو پایین بیارم ترجیح دادم شما یک برنامه بسازین که فقط یک شماره کانترکت رو توی بستر سولانا از ما بگیره و برای ما اون رو سواپ کنه توی صرافی جوپیتر. شماره ولت رو هم از ما بگیره.یغنی سادهترین فرم ممکن با یک رابط گرافیکی. در فاز دوم من اون الگوریتمی رو که هنوز کاملش نکردم به شما میگم و شما اون رو در کد اول اعمال میکنید.با توجه به این قیمت رو برای فاز اول که سادهترین فاز هست و برای شروع انتخاب میکنیم لطفاً به من بگید
import sysimport requestsfrom functools import partialfrom PyQt5.QtWidgets import ( QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox)# Jupiter API EndpointsJUPITER\_QUOTE\_URL = "https://quote-api.jup.ag/v4/quote"JUPITER\_SWAP\_URL = "https://quote-api.jup.ag/v4/swap"class SolanaSwapApp(QMainWindow): def init(self): super().init() self.setWindowTitle("Solana Token Swap") self.setGeometry(100, 100, 400, 300) self.init\_ui() def init\_ui(self): # Central Widget self.central\_widget = QWidget() self.setCentralWidget(self.central\_widget) # Layout self.layout = QVBoxLayout() self.central\_widget.setLayout(self.layout) # Wallet Address Input self.wallet\_label = QLabel("Wallet Address:") self.wallet\_input = QLineEdit() self.layout.addWidget(self.wallet\_label) self.layout.addWidget(self.wallet\_input) # Contract Address Input self.contract\_label = QLabel("Contract Address (Token):") self.contract\_input = QLineEdit() self.layout.addWidget(self.contract\_label) self.layout.addWidget(self.contract\_input) # Button to Get Price self.price\_button = QPushButton("Get Token Price (in USDT)") self.price\_button.clicked.connect(self.get\_token\_price) self.layout.addWidget(self.price\_button) # Button to Perform Swap self.swap\_button = QPushButton("Perform Token Swap") self.swap\_button.clicked.connect(self.perform\_swap) self.layout.addWidget(self.swap\_button) def get\_token\_price(self): """ Fetch the token price in USDT using the Jupiter API. """ wallet = self.wallet\_input.text().strip() contract = self.contract\_input.text().strip() if not wallet or not contract: QMessageBox.warning(self, "Error", "Please fill out all fields!") return try: amount = ******* # Example amount in the smallest unit (e.g., 1 USDT = 1\_000\_000 micro-units) # Requesting price quote params = { "inputMint": contract, # Token's mint address "outputMint": "Es9vMFrzaCERz8FCrzBXunwxmiu78UZ8MXBfDSTx6GRc", # USDT mint address "amount": amount, # Amount in smallest denomination "slippage": 1 } response = requests.get(JUPITER\_QUOTE\_URL, params=params) if response.status\_code == 200: data = response.json() best\_price = data.get("data", \[{}\])\[0\].get("outAmount", "N/A") calculated\_price = int(best\_price) / 10 \*\* 6 # Convert to human-readable format QMessageBox.information(self, "Token Price", f"Token Price in USDT: {calculated\_price}") else: QMessageBox.warning(self, "Error", f"Failed to fetch price: {response.text}") except Exception as e: QMessageBox.critical(self, "Error", f"An error occurred: {e}") def perform\_swap(self): """ Perform a token swap via the Jupiter API. """ wallet = self.wallet\_input.text().strip() contract = self.contract\_input.text().strip() if not wallet or not contract: QMessageBox.warning(self, "Error", "Please fill out all fields!") return try: # Dummy swap request details (replace with an actual signed transaction) amount = ******* # Example amount in smallest unit (e.g., 1 token = 1\_000\_000 lamports) params = { "inputMint": contract, "outputMint": "Es9vMFrzaCERz8FCrzBXunwxmiu78UZ8MXBfDSTx6GRc", "amount": amount, "slippage": 1, "userPublicKey": wallet, }response = requests.get(JUPITER\_SWAP\_URL, params=params) if response.status\_code == 200: data = response.json() swap\_tx = data.get("swapTransaction", None) if swap\_tx: QMessageBox.information(self, "Swap Complete", "Swap transaction successfully created!") print("Swap Transaction:", swap\_tx) else: QMessageBox.warning(self, "Error", "Failed to perform token swap.") else: QMessageBox.warning(self, "Error", f"Failed to perform swap: {response.text}") except Exception as e: QMessageBox.critical(self, "Error", f"An error occurred: {e}")if name == "main": app = QApplication(sys.argv) window = SolanaSwapApp() window.show() sys.exit(app.exec())