Przeglądaj źródła

Merge branch 'main' of https://git.max.xch.im/maxmind/byreal-auto

zhangchunrui 1 tydzień temu
rodzic
commit
c87bcc99ac
2 zmienionych plików z 16 dodań i 10 usunięć
  1. 3 6
      src/copy/index.ts
  2. 13 4
      src/solana/openPositionListener.ts

+ 3 - 6
src/copy/index.ts

@@ -86,14 +86,10 @@ export async function copyPosition(positionDetails: OpenPositionEvent['positionD
 					name: '📍 仓位地址',
 					value: `[${positionAddress.slice(0, 8)}...${positionAddress.slice(-8)}](${solscanBaseUrl}/account/${positionAddress})`,
 					inline: false
-				},
-				{
-					name: '🎨 NFT Mint',
-					value: `[${nftMintAddress.slice(0, 8)}...${nftMintAddress.slice(-8)}](${solscanBaseUrl}/token/${nftMintAddress})`,
-					inline: false
 				}
 			],
 			timestamp: new Date().toISOString(),
+			url: `https://www.byreal.io/en/portfolio?userAddress=${providerAddress}&tab=current&positionAddress=${positionAddress}`,
 			footer: {
 				text: 'ByReal Auto Trading'
 			}
@@ -122,6 +118,7 @@ export async function copyPosition(positionDetails: OpenPositionEvent['positionD
 		const errorEmbed = {
 			title: '❌ 仓位复制失败',
 			description: `复制仓位失败:**${mintASymbol}/${mintBSymbol}**`,
+			url: `https://www.byreal.io/en/portfolio?userAddress=${providerAddress}&tab=current&positionAddress=${positionAddress}`,
 			color: 0xff0000, // 红色
 			fields: [
 				{
@@ -141,7 +138,7 @@ export async function copyPosition(positionDetails: OpenPositionEvent['positionD
 				},
 				{
 					name: '⚠️ 错误信息',
-					value: `\`\`\`${err instanceof Error ? err.message : String(err)}\`\`\``,
+					value: `\`\`\`${err instanceof Error ? err.message.slice(0, 100) : String(err).slice(0, 100)}\`\`\``,
 					inline: false
 				}
 			],

+ 13 - 4
src/solana/openPositionListener.ts

@@ -167,17 +167,26 @@ export function listenOpenPosition(
 			}
 		}
 
-		// 如果没找到,使用默认索引 7 作为后备
+		// 如果没找到,使用默认索引 8 作为后备
 		if (!positionAccount && accounts && accounts.length > 7) {
-			positionAccount = accounts[6]
-			positionAccountIndex = 6
+			positionAccount = accounts[8]
 		}
 
 		// 如果有 positionAccount,通过 API 获取详细信息
 		// 延迟100秒后获取,因为positionAccount可能还没被写入 
 		await new Promise(resolve => setTimeout(resolve, 100 * 1000))
 
-		const positionDetails = positionAccount ? await fetchPositionDetails(positionAccount) : undefined
+		let positionDetails = positionAccount ? await fetchPositionDetails(positionAccount) : undefined
+		// 如果positionDetails为空,则分别尝试accounts[6]和accounts[7] accounts[9] 
+		if (!positionDetails && accounts && accounts.length > 6) {
+			positionDetails = await fetchPositionDetails(accounts[6])
+		}
+		if (!positionDetails && accounts && accounts.length > 7) {
+			positionDetails = await fetchPositionDetails(accounts[7])
+		}
+		if (!positionDetails && accounts && accounts.length > 9) {
+			positionDetails = await fetchPositionDetails(accounts[9])
+		}
 		if (!positionDetails) {
 			console.log('positionAccountIndex', positionAccountIndex)
 			// console.log('找不到地址', JSON.stringify(tx, null, 2))