diff --git a/libs/news/src/news.service.ts b/libs/news/src/news.service.ts index 1ffaf71..8637ded 100644 --- a/libs/news/src/news.service.ts +++ b/libs/news/src/news.service.ts @@ -1,5 +1,6 @@ import { RegistryPlug } from '@action/registry'; import { ChainService, OKXService } from '@core/shared'; +import { getERC20SymbolAndDecimals } from '@core/utils'; import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { Contract, ethers } from 'ethers'; @@ -8,6 +9,7 @@ import { ActionMetadata, GenerateTransactionParams, GenerateTransactionResponse, + ReporterResponse, TransactionInfo, UpdateFieldType, } from 'src/common/dto'; @@ -267,4 +269,56 @@ export class NewsService extends ActionDto { await this.flashNewsBotService.sendNews(data.additionalData.code!); return []; } + + public async reportTransaction( + data: GenerateTransactionParams, + _txHashes: Array<{ hash: string; chainId: number }>, + ): Promise { + const { formData, additionalData } = data; + const { chainId } = additionalData; + let tokenFromDecimal: bigint; + let tokenSymbol: string; + const provider = this.chainService.getProvider(chainId); + if (formData.tokenFrom.toLowerCase() === ethers.ZeroAddress) { + tokenFromDecimal = 18n; + tokenSymbol = 'ETH'; + } else { + const { symbol, decimals } = await getERC20SymbolAndDecimals( + provider, + formData.tokenFrom, + ); + tokenFromDecimal = decimals; + tokenSymbol = symbol; + } + const amount = ethers.formatUnits(formData.amountToBuy, tokenFromDecimal); + return { + tip: `Buy ${amount} worthed ${tokenSymbol} successfully`, + sharedContent: { + en: `🤖AI Strategy on Flash News\n ⏩️⏩️⏩️Long 🔥${tokenSymbol}🔥\n\n🤩I’ve just bought ${amount} of ${tokenSymbol}\n\nStart your Action now! 📈👇`, + zh: `🤖AI 交易策略基于Flash News\n⏩️⏩️⏩️看涨 🔥${tokenSymbol}🔥\n\n🤩我刚刚购买了${amount}个${tokenSymbol}\n\n现在开始行动吧! 📈👇`, + }, + }; + } + + public async generateSharedContent( + data: GenerateTransactionParams, + ) { + const { formData, additionalData } = data; + const { chainId } = additionalData; + let tokenSymbol: string; + const provider = this.chainService.getProvider(chainId); + if (formData.tokenFrom.toLowerCase() === ethers.ZeroAddress) { + tokenSymbol = 'ETH'; + } else { + const { symbol } = await getERC20SymbolAndDecimals( + provider, + formData.tokenFrom, + ); + tokenSymbol = symbol; + } + return { + en: `🤖AI Strategy on Flash News\n⏩️⏩️⏩️Long 🔥${tokenSymbol}🔥\n\nStart your Action now! 📈👇`, + zh: `🤖AI 交易策略基于Flash News\n⏩️⏩️⏩️看涨 🔥${tokenSymbol}🔥\n\n现在开始行动吧! 📈👇`, + }; + } } diff --git a/libs/okx-bridge/src/okxBridge.service.ts b/libs/okx-bridge/src/okxBridge.service.ts index ab96e40..bfba864 100644 --- a/libs/okx-bridge/src/okxBridge.service.ts +++ b/libs/okx-bridge/src/okxBridge.service.ts @@ -1,6 +1,5 @@ import { RegistryPlug } from '@action/registry'; import { ChainService, OKXService } from '@core/shared'; -import { getERC20SymbolAndDecimals } from '@core/utils'; import { Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { Contract, ethers } from 'ethers'; @@ -9,7 +8,6 @@ import { ActionMetadata, GenerateTransactionParams, GenerateTransactionResponse, - ReporterResponse, TransactionInfo, UpdateFieldType, } from 'src/common/dto'; @@ -277,56 +275,4 @@ export class OkxBridgeService extends ActionDto { const num = Number(value); return !isNaN(num); } - - public async reportTransaction( - data: GenerateTransactionParams, - _txHashes: Array<{ hash: string; chainId: number }>, - ): Promise { - const { formData, additionalData } = data; - const { chainId } = additionalData; - let tokenFromDecimal: bigint; - let tokenSymbol: string; - const provider = this.chainService.getProvider(chainId); - if (formData.tokenFrom.toLowerCase() === ethers.ZeroAddress) { - tokenFromDecimal = 18n; - tokenSymbol = 'ETH'; - } else { - const { symbol, decimals } = await getERC20SymbolAndDecimals( - provider, - formData.tokenFrom, - ); - tokenFromDecimal = decimals; - tokenSymbol = symbol; - } - const amount = ethers.formatUnits(formData.bridgeAmount, tokenFromDecimal); - return { - tip: `Buy ${amount} worthed ${tokenSymbol} successfully`, - sharedContent: { - en: `🤖AI Strategy on Flash News\n ⏩️⏩️⏩️Long 🔥${tokenSymbol}🔥\n\n🤩I’ve just bought ${amount} of ${tokenSymbol}\n\nStart your Action now! 📈👇`, - zh: `🤖AI 交易策略基于Flash News\n⏩️⏩️⏩️看涨 🔥${tokenSymbol}🔥\n\n🤩我刚刚购买了${amount}个${tokenSymbol}\n\n现在开始行动吧! 📈👇`, - }, - }; - } - - public async generateSharedContent( - data: GenerateTransactionParams, - ) { - const { formData, additionalData } = data; - const { chainId } = additionalData; - let tokenSymbol: string; - const provider = this.chainService.getProvider(chainId); - if (formData.tokenFrom.toLowerCase() === ethers.ZeroAddress) { - tokenSymbol = 'ETH'; - } else { - const { symbol } = await getERC20SymbolAndDecimals( - provider, - formData.tokenFrom, - ); - tokenSymbol = symbol; - } - return { - en: `🤖AI Strategy on Flash News\n⏩️⏩️⏩️Long 🔥${tokenSymbol}🔥\n\nStart your Action now! 📈👇`, - zh: `🤖AI 交易策略基于Flash News\n⏩️⏩️⏩️看涨 🔥${tokenSymbol}🔥\n\n现在开始行动吧! 📈👇`, - }; - } }