thecrownsk-bot 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +268 -0
- package/dist/blockchain/chain.d.ts +49 -0
- package/dist/blockchain/chain.d.ts.map +1 -0
- package/dist/blockchain/chain.js +33 -0
- package/dist/blockchain/chain.js.map +1 -0
- package/dist/blockchain/client.d.ts +19 -0
- package/dist/blockchain/client.d.ts.map +1 -0
- package/dist/blockchain/client.js +121 -0
- package/dist/blockchain/client.js.map +1 -0
- package/dist/config/constants.d.ts +53 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +61 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/env.d.ts +38 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +38 -0
- package/dist/config/env.js.map +1 -0
- package/dist/crown-king.d.ts +3 -0
- package/dist/crown-king.d.ts.map +1 -0
- package/dist/crown-king.js +1093 -0
- package/dist/crown-king.js.map +1 -0
- package/dist/crownking/agent-alliance.d.ts +49 -0
- package/dist/crownking/agent-alliance.d.ts.map +1 -0
- package/dist/crownking/agent-alliance.js +260 -0
- package/dist/crownking/agent-alliance.js.map +1 -0
- package/dist/crownking/agent.d.ts +77 -0
- package/dist/crownking/agent.d.ts.map +1 -0
- package/dist/crownking/agent.js +361 -0
- package/dist/crownking/agent.js.map +1 -0
- package/dist/crownking/auto-poster.d.ts +43 -0
- package/dist/crownking/auto-poster.d.ts.map +1 -0
- package/dist/crownking/auto-poster.js +179 -0
- package/dist/crownking/auto-poster.js.map +1 -0
- package/dist/crownking/contract.d.ts +62 -0
- package/dist/crownking/contract.d.ts.map +1 -0
- package/dist/crownking/contract.js +130 -0
- package/dist/crownking/contract.js.map +1 -0
- package/dist/crownking/copy-trader.d.ts +77 -0
- package/dist/crownking/copy-trader.d.ts.map +1 -0
- package/dist/crownking/copy-trader.js +265 -0
- package/dist/crownking/copy-trader.js.map +1 -0
- package/dist/crownking/index.d.ts +16 -0
- package/dist/crownking/index.d.ts.map +1 -0
- package/dist/crownking/index.js +18 -0
- package/dist/crownking/index.js.map +1 -0
- package/dist/crownking/leaderboard.d.ts +51 -0
- package/dist/crownking/leaderboard.d.ts.map +1 -0
- package/dist/crownking/leaderboard.js +213 -0
- package/dist/crownking/leaderboard.js.map +1 -0
- package/dist/crownking/live-scanner.d.ts +85 -0
- package/dist/crownking/live-scanner.d.ts.map +1 -0
- package/dist/crownking/live-scanner.js +345 -0
- package/dist/crownking/live-scanner.js.map +1 -0
- package/dist/crownking/momentum.d.ts +41 -0
- package/dist/crownking/momentum.d.ts.map +1 -0
- package/dist/crownking/momentum.js +251 -0
- package/dist/crownking/momentum.js.map +1 -0
- package/dist/crownking/personality.d.ts +77 -0
- package/dist/crownking/personality.d.ts.map +1 -0
- package/dist/crownking/personality.js +222 -0
- package/dist/crownking/personality.js.map +1 -0
- package/dist/crownking/portfolio.d.ts +62 -0
- package/dist/crownking/portfolio.d.ts.map +1 -0
- package/dist/crownking/portfolio.js +183 -0
- package/dist/crownking/portfolio.js.map +1 -0
- package/dist/crownking/sniper.d.ts +68 -0
- package/dist/crownking/sniper.d.ts.map +1 -0
- package/dist/crownking/sniper.js +264 -0
- package/dist/crownking/sniper.js.map +1 -0
- package/dist/crownking/social-graph.d.ts +72 -0
- package/dist/crownking/social-graph.d.ts.map +1 -0
- package/dist/crownking/social-graph.js +219 -0
- package/dist/crownking/social-graph.js.map +1 -0
- package/dist/crownking/token-creator.d.ts +42 -0
- package/dist/crownking/token-creator.d.ts.map +1 -0
- package/dist/crownking/token-creator.js +159 -0
- package/dist/crownking/token-creator.js.map +1 -0
- package/dist/crownking/trading-signals.d.ts +56 -0
- package/dist/crownking/trading-signals.d.ts.map +1 -0
- package/dist/crownking/trading-signals.js +253 -0
- package/dist/crownking/trading-signals.js.map +1 -0
- package/dist/crownking/types.d.ts +3 -0
- package/dist/crownking/types.d.ts.map +1 -0
- package/dist/crownking/types.js +4 -0
- package/dist/crownking/types.js.map +1 -0
- package/dist/crownking/whale-tracker.d.ts +53 -0
- package/dist/crownking/whale-tracker.d.ts.map +1 -0
- package/dist/crownking/whale-tracker.js +188 -0
- package/dist/crownking/whale-tracker.js.map +1 -0
- package/dist/crownsk/agent-alliance.d.ts +49 -0
- package/dist/crownsk/agent-alliance.d.ts.map +1 -0
- package/dist/crownsk/agent-alliance.js +260 -0
- package/dist/crownsk/agent-alliance.js.map +1 -0
- package/dist/crownsk/agent.d.ts +77 -0
- package/dist/crownsk/agent.d.ts.map +1 -0
- package/dist/crownsk/agent.js +361 -0
- package/dist/crownsk/agent.js.map +1 -0
- package/dist/crownsk/auto-poster.d.ts +43 -0
- package/dist/crownsk/auto-poster.d.ts.map +1 -0
- package/dist/crownsk/auto-poster.js +179 -0
- package/dist/crownsk/auto-poster.js.map +1 -0
- package/dist/crownsk/contract.d.ts +62 -0
- package/dist/crownsk/contract.d.ts.map +1 -0
- package/dist/crownsk/contract.js +130 -0
- package/dist/crownsk/contract.js.map +1 -0
- package/dist/crownsk/copy-trader.d.ts +77 -0
- package/dist/crownsk/copy-trader.d.ts.map +1 -0
- package/dist/crownsk/copy-trader.js +265 -0
- package/dist/crownsk/copy-trader.js.map +1 -0
- package/dist/crownsk/index.d.ts +16 -0
- package/dist/crownsk/index.d.ts.map +1 -0
- package/dist/crownsk/index.js +18 -0
- package/dist/crownsk/index.js.map +1 -0
- package/dist/crownsk/leaderboard.d.ts +51 -0
- package/dist/crownsk/leaderboard.d.ts.map +1 -0
- package/dist/crownsk/leaderboard.js +213 -0
- package/dist/crownsk/leaderboard.js.map +1 -0
- package/dist/crownsk/live-scanner.d.ts +85 -0
- package/dist/crownsk/live-scanner.d.ts.map +1 -0
- package/dist/crownsk/live-scanner.js +345 -0
- package/dist/crownsk/live-scanner.js.map +1 -0
- package/dist/crownsk/momentum.d.ts +41 -0
- package/dist/crownsk/momentum.d.ts.map +1 -0
- package/dist/crownsk/momentum.js +251 -0
- package/dist/crownsk/momentum.js.map +1 -0
- package/dist/crownsk/personality.d.ts +77 -0
- package/dist/crownsk/personality.d.ts.map +1 -0
- package/dist/crownsk/personality.js +222 -0
- package/dist/crownsk/personality.js.map +1 -0
- package/dist/crownsk/portfolio.d.ts +62 -0
- package/dist/crownsk/portfolio.d.ts.map +1 -0
- package/dist/crownsk/portfolio.js +183 -0
- package/dist/crownsk/portfolio.js.map +1 -0
- package/dist/crownsk/sniper.d.ts +68 -0
- package/dist/crownsk/sniper.d.ts.map +1 -0
- package/dist/crownsk/sniper.js +264 -0
- package/dist/crownsk/sniper.js.map +1 -0
- package/dist/crownsk/social-graph.d.ts +72 -0
- package/dist/crownsk/social-graph.d.ts.map +1 -0
- package/dist/crownsk/social-graph.js +219 -0
- package/dist/crownsk/social-graph.js.map +1 -0
- package/dist/crownsk/trading-signals.d.ts +56 -0
- package/dist/crownsk/trading-signals.d.ts.map +1 -0
- package/dist/crownsk/trading-signals.js +253 -0
- package/dist/crownsk/trading-signals.js.map +1 -0
- package/dist/crownsk/types.d.ts +3 -0
- package/dist/crownsk/types.d.ts.map +1 -0
- package/dist/crownsk/types.js +4 -0
- package/dist/crownsk/types.js.map +1 -0
- package/dist/crownsk/whale-tracker.d.ts +53 -0
- package/dist/crownsk/whale-tracker.d.ts.map +1 -0
- package/dist/crownsk/whale-tracker.js +188 -0
- package/dist/crownsk/whale-tracker.js.map +1 -0
- package/dist/crownsk.d.ts +3 -0
- package/dist/crownsk.d.ts.map +1 -0
- package/dist/crownsk.js +1102 -0
- package/dist/crownsk.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/karma/agent.d.ts +81 -0
- package/dist/karma/agent.d.ts.map +1 -0
- package/dist/karma/agent.js +366 -0
- package/dist/karma/agent.js.map +1 -0
- package/dist/karma/contract.d.ts +62 -0
- package/dist/karma/contract.d.ts.map +1 -0
- package/dist/karma/contract.js +130 -0
- package/dist/karma/contract.js.map +1 -0
- package/dist/karma/index.d.ts +6 -0
- package/dist/karma/index.d.ts.map +1 -0
- package/dist/karma/index.js +7 -0
- package/dist/karma/index.js.map +1 -0
- package/dist/karma/live-scanner.d.ts +85 -0
- package/dist/karma/live-scanner.d.ts.map +1 -0
- package/dist/karma/live-scanner.js +345 -0
- package/dist/karma/live-scanner.js.map +1 -0
- package/dist/karma/social-graph.d.ts +72 -0
- package/dist/karma/social-graph.d.ts.map +1 -0
- package/dist/karma/social-graph.js +219 -0
- package/dist/karma/social-graph.js.map +1 -0
- package/dist/karma/trading-signals.d.ts +38 -0
- package/dist/karma/trading-signals.d.ts.map +1 -0
- package/dist/karma/trading-signals.js +291 -0
- package/dist/karma/trading-signals.js.map +1 -0
- package/dist/karma/types.d.ts +3 -0
- package/dist/karma/types.d.ts.map +1 -0
- package/dist/karma/types.js +4 -0
- package/dist/karma/types.js.map +1 -0
- package/dist/karma-king.d.ts +3 -0
- package/dist/karma-king.d.ts.map +1 -0
- package/dist/karma-king.js +580 -0
- package/dist/karma-king.js.map +1 -0
- package/dist/moltbook/client.d.ts +34 -0
- package/dist/moltbook/client.d.ts.map +1 -0
- package/dist/moltbook/client.js +280 -0
- package/dist/moltbook/client.js.map +1 -0
- package/dist/moltbook/index.d.ts +3 -0
- package/dist/moltbook/index.d.ts.map +1 -0
- package/dist/moltbook/index.js +4 -0
- package/dist/moltbook/index.js.map +1 -0
- package/dist/moltbook/types.d.ts +100 -0
- package/dist/moltbook/types.d.ts.map +1 -0
- package/dist/moltbook/types.js +3 -0
- package/dist/moltbook/types.js.map +1 -0
- package/dist/nadfun/abis.d.ts +403 -0
- package/dist/nadfun/abis.d.ts.map +1 -0
- package/dist/nadfun/abis.js +267 -0
- package/dist/nadfun/abis.js.map +1 -0
- package/dist/nadfun/client.d.ts +21 -0
- package/dist/nadfun/client.d.ts.map +1 -0
- package/dist/nadfun/client.js +349 -0
- package/dist/nadfun/client.js.map +1 -0
- package/dist/nadfun/index.d.ts +5 -0
- package/dist/nadfun/index.d.ts.map +1 -0
- package/dist/nadfun/index.js +5 -0
- package/dist/nadfun/index.js.map +1 -0
- package/dist/nadfun/types.d.ts +72 -0
- package/dist/nadfun/types.d.ts.map +1 -0
- package/dist/nadfun/types.js +2 -0
- package/dist/nadfun/types.js.map +1 -0
- package/dist/nadfun/websocket.d.ts +18 -0
- package/dist/nadfun/websocket.d.ts.map +1 -0
- package/dist/nadfun/websocket.js +110 -0
- package/dist/nadfun/websocket.js.map +1 -0
- package/dist/utils/format.d.ts +9 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +39 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +81 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wallet/manager.d.ts +76 -0
- package/dist/wallet/manager.d.ts.map +1 -0
- package/dist/wallet/manager.js +300 -0
- package/dist/wallet/manager.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-scanner.js","sourceRoot":"","sources":["../../src/crownking/live-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Address } from 'viem';
|
|
2
|
+
export interface TokenMomentum {
|
|
3
|
+
token: Address;
|
|
4
|
+
priceChange5m: number;
|
|
5
|
+
priceChange15m: number;
|
|
6
|
+
priceChange1h: number;
|
|
7
|
+
volumeChange: number;
|
|
8
|
+
buyPressure: number;
|
|
9
|
+
momentumScore: number;
|
|
10
|
+
signal: 'strong_buy' | 'buy' | 'neutral' | 'sell' | 'strong_sell';
|
|
11
|
+
trend: 'up' | 'down' | 'sideways';
|
|
12
|
+
}
|
|
13
|
+
export interface TradeEvent {
|
|
14
|
+
token: Address;
|
|
15
|
+
action: 'buy' | 'sell';
|
|
16
|
+
amountMon: bigint;
|
|
17
|
+
amountToken: bigint;
|
|
18
|
+
blockNumber: bigint;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Record current price snapshot
|
|
23
|
+
*/
|
|
24
|
+
export declare function snapshotPrice(token: Address): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Scan for recent trade events
|
|
27
|
+
*/
|
|
28
|
+
export declare function scanTradeEvents(token: Address, blocksBack?: number): Promise<TradeEvent[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Analyze token momentum
|
|
31
|
+
*/
|
|
32
|
+
export declare function analyzeTokenMomentum(token: Address): Promise<TokenMomentum>;
|
|
33
|
+
/**
|
|
34
|
+
* Find tokens with strong momentum
|
|
35
|
+
*/
|
|
36
|
+
export declare function findMomentumTokens(tokens: Address[]): Promise<TokenMomentum[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Format momentum for display
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatMomentum(m: TokenMomentum): string;
|
|
41
|
+
//# sourceMappingURL=momentum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"momentum.d.ts","sourceRoot":"","sources":["../../src/crownking/momentum.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAA6B,MAAM,MAAM,CAAC;AAM/D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;IAClE,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,UAAU,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAoCD;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,SAAK,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAyD5F;AA+ED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA+CjF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAcpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAWvD"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
// Momentum Detector Module
|
|
2
|
+
// Detect price and volume momentum for better entry/exit timing
|
|
3
|
+
import { formatEther, parseAbiItem } from 'viem';
|
|
4
|
+
import { getPublicClient } from '../blockchain/client.js';
|
|
5
|
+
import { NADFUN_CONTRACTS } from '../config/constants.js';
|
|
6
|
+
import { getAmountOut } from '../nadfun/client.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
|
+
// Price history for momentum calculation
|
|
9
|
+
const priceHistory = new Map();
|
|
10
|
+
const tradeHistory = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Record a trade event
|
|
13
|
+
*/
|
|
14
|
+
function recordTradeEvent(event) {
|
|
15
|
+
const key = event.token.toLowerCase();
|
|
16
|
+
if (!tradeHistory.has(key)) {
|
|
17
|
+
tradeHistory.set(key, []);
|
|
18
|
+
}
|
|
19
|
+
const history = tradeHistory.get(key);
|
|
20
|
+
history.push(event);
|
|
21
|
+
// Keep only last 2 hours of trades
|
|
22
|
+
const twoHoursAgo = Date.now() - 2 * 60 * 60 * 1000;
|
|
23
|
+
const filtered = history.filter(t => t.timestamp > twoHoursAgo);
|
|
24
|
+
tradeHistory.set(key, filtered);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Calculate current "price" (MON per token unit)
|
|
28
|
+
*/
|
|
29
|
+
async function getTokenPrice(token) {
|
|
30
|
+
try {
|
|
31
|
+
const quote = await getAmountOut(token, 10n ** 18n, false); // Price of 1 token in MON
|
|
32
|
+
return quote.amountOut;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return 0n;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Record current price snapshot
|
|
40
|
+
*/
|
|
41
|
+
export async function snapshotPrice(token) {
|
|
42
|
+
const price = await getTokenPrice(token);
|
|
43
|
+
if (price === 0n)
|
|
44
|
+
return;
|
|
45
|
+
const key = token.toLowerCase();
|
|
46
|
+
if (!priceHistory.has(key)) {
|
|
47
|
+
priceHistory.set(key, []);
|
|
48
|
+
}
|
|
49
|
+
const history = priceHistory.get(key);
|
|
50
|
+
history.push({ price, timestamp: Date.now() });
|
|
51
|
+
// Keep only last 2 hours
|
|
52
|
+
const twoHoursAgo = Date.now() - 2 * 60 * 60 * 1000;
|
|
53
|
+
const filtered = history.filter(p => p.timestamp > twoHoursAgo);
|
|
54
|
+
priceHistory.set(key, filtered);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Scan for recent trade events
|
|
58
|
+
*/
|
|
59
|
+
export async function scanTradeEvents(token, blocksBack = 50) {
|
|
60
|
+
const publicClient = getPublicClient();
|
|
61
|
+
const events = [];
|
|
62
|
+
try {
|
|
63
|
+
const currentBlock = await publicClient.getBlockNumber();
|
|
64
|
+
const fromBlock = currentBlock - BigInt(blocksBack);
|
|
65
|
+
// Get buy events
|
|
66
|
+
const buyLogs = await publicClient.getLogs({
|
|
67
|
+
address: NADFUN_CONTRACTS.BONDING_CURVE,
|
|
68
|
+
event: parseAbiItem('event Buy(address indexed token, address indexed buyer, uint256 amountIn, uint256 amountOut)'),
|
|
69
|
+
args: { token },
|
|
70
|
+
fromBlock,
|
|
71
|
+
toBlock: currentBlock,
|
|
72
|
+
});
|
|
73
|
+
for (const log of buyLogs) {
|
|
74
|
+
const event = {
|
|
75
|
+
token: log.args.token,
|
|
76
|
+
action: 'buy',
|
|
77
|
+
amountMon: log.args.amountIn,
|
|
78
|
+
amountToken: log.args.amountOut,
|
|
79
|
+
blockNumber: log.blockNumber,
|
|
80
|
+
timestamp: Date.now(), // Approximation
|
|
81
|
+
};
|
|
82
|
+
events.push(event);
|
|
83
|
+
recordTradeEvent(event);
|
|
84
|
+
}
|
|
85
|
+
// Get sell events
|
|
86
|
+
const sellLogs = await publicClient.getLogs({
|
|
87
|
+
address: NADFUN_CONTRACTS.BONDING_CURVE,
|
|
88
|
+
event: parseAbiItem('event Sell(address indexed token, address indexed seller, uint256 amountIn, uint256 amountOut)'),
|
|
89
|
+
args: { token },
|
|
90
|
+
fromBlock,
|
|
91
|
+
toBlock: currentBlock,
|
|
92
|
+
});
|
|
93
|
+
for (const log of sellLogs) {
|
|
94
|
+
const event = {
|
|
95
|
+
token: log.args.token,
|
|
96
|
+
action: 'sell',
|
|
97
|
+
amountMon: log.args.amountOut,
|
|
98
|
+
amountToken: log.args.amountIn,
|
|
99
|
+
blockNumber: log.blockNumber,
|
|
100
|
+
timestamp: Date.now(),
|
|
101
|
+
};
|
|
102
|
+
events.push(event);
|
|
103
|
+
recordTradeEvent(event);
|
|
104
|
+
}
|
|
105
|
+
return events;
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
logger.warn('Failed to scan trade events', { error: error instanceof Error ? error.message : String(error) });
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Calculate price change percentage
|
|
114
|
+
*/
|
|
115
|
+
function calculatePriceChange(prices, minutesAgo) {
|
|
116
|
+
if (prices.length < 2)
|
|
117
|
+
return 0;
|
|
118
|
+
const now = Date.now();
|
|
119
|
+
const targetTime = now - minutesAgo * 60 * 1000;
|
|
120
|
+
// Find price closest to target time
|
|
121
|
+
const oldPrice = prices.reduce((closest, p) => {
|
|
122
|
+
if (Math.abs(p.timestamp - targetTime) < Math.abs(closest.timestamp - targetTime)) {
|
|
123
|
+
return p;
|
|
124
|
+
}
|
|
125
|
+
return closest;
|
|
126
|
+
});
|
|
127
|
+
const currentPrice = prices[prices.length - 1];
|
|
128
|
+
if (oldPrice.price === 0n)
|
|
129
|
+
return 0;
|
|
130
|
+
const change = Number(currentPrice.price - oldPrice.price) / Number(oldPrice.price);
|
|
131
|
+
return Math.round(change * 10000) / 100; // Percentage with 2 decimals
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Calculate buy pressure (ratio of buy volume to total volume)
|
|
135
|
+
*/
|
|
136
|
+
function calculateBuyPressure(trades) {
|
|
137
|
+
if (trades.length === 0)
|
|
138
|
+
return 50;
|
|
139
|
+
let buyVolume = 0n;
|
|
140
|
+
let sellVolume = 0n;
|
|
141
|
+
for (const trade of trades) {
|
|
142
|
+
if (trade.action === 'buy') {
|
|
143
|
+
buyVolume += trade.amountMon;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
sellVolume += trade.amountMon;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const totalVolume = buyVolume + sellVolume;
|
|
150
|
+
if (totalVolume === 0n)
|
|
151
|
+
return 50;
|
|
152
|
+
return Math.round(Number((buyVolume * 100n) / totalVolume));
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Calculate momentum score
|
|
156
|
+
*/
|
|
157
|
+
function calculateMomentumScore(priceChange5m, priceChange15m, priceChange1h, buyPressure) {
|
|
158
|
+
// Weighted combination
|
|
159
|
+
const priceScore = priceChange5m * 3 + priceChange15m * 2 + priceChange1h;
|
|
160
|
+
const pressureScore = (buyPressure - 50) * 2; // Center at 50
|
|
161
|
+
// Combine and normalize to -100 to 100
|
|
162
|
+
const rawScore = priceScore + pressureScore;
|
|
163
|
+
return Math.max(-100, Math.min(100, Math.round(rawScore)));
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get signal from momentum score
|
|
167
|
+
*/
|
|
168
|
+
function getSignalFromMomentum(score) {
|
|
169
|
+
if (score >= 50)
|
|
170
|
+
return 'strong_buy';
|
|
171
|
+
if (score >= 20)
|
|
172
|
+
return 'buy';
|
|
173
|
+
if (score <= -50)
|
|
174
|
+
return 'strong_sell';
|
|
175
|
+
if (score <= -20)
|
|
176
|
+
return 'sell';
|
|
177
|
+
return 'neutral';
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Analyze token momentum
|
|
181
|
+
*/
|
|
182
|
+
export async function analyzeTokenMomentum(token) {
|
|
183
|
+
const key = token.toLowerCase();
|
|
184
|
+
// Snapshot current price
|
|
185
|
+
await snapshotPrice(token);
|
|
186
|
+
// Scan recent trades
|
|
187
|
+
await scanTradeEvents(token, 100);
|
|
188
|
+
const prices = priceHistory.get(key) || [];
|
|
189
|
+
const trades = tradeHistory.get(key) || [];
|
|
190
|
+
// Calculate metrics
|
|
191
|
+
const priceChange5m = calculatePriceChange(prices, 5);
|
|
192
|
+
const priceChange15m = calculatePriceChange(prices, 15);
|
|
193
|
+
const priceChange1h = calculatePriceChange(prices, 60);
|
|
194
|
+
const buyPressure = calculateBuyPressure(trades);
|
|
195
|
+
// Recent trades only for volume change
|
|
196
|
+
const recentTrades = trades.filter(t => t.timestamp > Date.now() - 15 * 60 * 1000);
|
|
197
|
+
const olderTrades = trades.filter(t => t.timestamp > Date.now() - 30 * 60 * 1000 &&
|
|
198
|
+
t.timestamp <= Date.now() - 15 * 60 * 1000);
|
|
199
|
+
const recentVolume = recentTrades.reduce((sum, t) => sum + Number(formatEther(t.amountMon)), 0);
|
|
200
|
+
const olderVolume = olderTrades.reduce((sum, t) => sum + Number(formatEther(t.amountMon)), 0);
|
|
201
|
+
const volumeChange = olderVolume > 0 ? ((recentVolume - olderVolume) / olderVolume) * 100 : 0;
|
|
202
|
+
const momentumScore = calculateMomentumScore(priceChange5m, priceChange15m, priceChange1h, buyPressure);
|
|
203
|
+
// Determine trend
|
|
204
|
+
let trend = 'sideways';
|
|
205
|
+
if (priceChange1h > 5 && priceChange15m > 0)
|
|
206
|
+
trend = 'up';
|
|
207
|
+
else if (priceChange1h < -5 && priceChange15m < 0)
|
|
208
|
+
trend = 'down';
|
|
209
|
+
return {
|
|
210
|
+
token,
|
|
211
|
+
priceChange5m,
|
|
212
|
+
priceChange15m,
|
|
213
|
+
priceChange1h,
|
|
214
|
+
volumeChange: Math.round(volumeChange),
|
|
215
|
+
buyPressure,
|
|
216
|
+
momentumScore,
|
|
217
|
+
signal: getSignalFromMomentum(momentumScore),
|
|
218
|
+
trend,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Find tokens with strong momentum
|
|
223
|
+
*/
|
|
224
|
+
export async function findMomentumTokens(tokens) {
|
|
225
|
+
const results = [];
|
|
226
|
+
for (const token of tokens.slice(0, 10)) { // Limit to avoid rate limiting
|
|
227
|
+
try {
|
|
228
|
+
const momentum = await analyzeTokenMomentum(token);
|
|
229
|
+
results.push(momentum);
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Skip failed tokens
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Sort by momentum score
|
|
236
|
+
return results.sort((a, b) => b.momentumScore - a.momentumScore);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Format momentum for display
|
|
240
|
+
*/
|
|
241
|
+
export function formatMomentum(m) {
|
|
242
|
+
const emoji = m.signal === 'strong_buy' ? '🟢🟢' :
|
|
243
|
+
m.signal === 'buy' ? '🟢' :
|
|
244
|
+
m.signal === 'strong_sell' ? '🔴🔴' :
|
|
245
|
+
m.signal === 'sell' ? '🔴' : '⚪';
|
|
246
|
+
const trendEmoji = m.trend === 'up' ? '📈' : m.trend === 'down' ? '📉' : '➡️';
|
|
247
|
+
return `${emoji} ${m.token.slice(0, 10)}... | Score: ${m.momentumScore} | ${m.signal.toUpperCase()}
|
|
248
|
+
${trendEmoji} 5m: ${m.priceChange5m >= 0 ? '+' : ''}${m.priceChange5m.toFixed(1)}% | 1h: ${m.priceChange1h >= 0 ? '+' : ''}${m.priceChange1h.toFixed(1)}%
|
|
249
|
+
Buy Pressure: ${m.buyPressure}% | Vol Change: ${m.volumeChange >= 0 ? '+' : ''}${m.volumeChange}%`;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=momentum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"momentum.js","sourceRoot":"","sources":["../../src/crownking/momentum.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export declare const PERSONALITY: {
|
|
2
|
+
name: string;
|
|
3
|
+
title: string;
|
|
4
|
+
catchphrases: string[];
|
|
5
|
+
moods: readonly ["bullish", "hunting", "analyzing", "celebrating", "warning"];
|
|
6
|
+
style: string;
|
|
7
|
+
};
|
|
8
|
+
export type Mood = typeof PERSONALITY.moods[number];
|
|
9
|
+
/**
|
|
10
|
+
* Get a random catchphrase
|
|
11
|
+
*/
|
|
12
|
+
export declare function getRandomCatchphrase(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generate a whale alert post
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateWhaleAlert(wallet: string, action: 'buy' | 'sell', amount: bigint, token: string): {
|
|
17
|
+
title: string;
|
|
18
|
+
content: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Generate a new token alert post
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateNewTokenAlert(tokenAddress: string, creator: string, evaluation: {
|
|
24
|
+
shouldSnipe: boolean;
|
|
25
|
+
reason: string;
|
|
26
|
+
}): {
|
|
27
|
+
title: string;
|
|
28
|
+
content: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Generate a market insight post
|
|
32
|
+
*/
|
|
33
|
+
export declare function generateMarketInsight(stats: {
|
|
34
|
+
tokensTracked: number;
|
|
35
|
+
whalesBuying: number;
|
|
36
|
+
whalesSelling: number;
|
|
37
|
+
topToken: {
|
|
38
|
+
symbol: string;
|
|
39
|
+
holders: number;
|
|
40
|
+
} | null;
|
|
41
|
+
avgScore: number;
|
|
42
|
+
}): {
|
|
43
|
+
title: string;
|
|
44
|
+
content: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Generate a trading signal post
|
|
48
|
+
*/
|
|
49
|
+
export declare function generateSignalPost(signal: {
|
|
50
|
+
token: string;
|
|
51
|
+
symbol: string;
|
|
52
|
+
action: 'buy' | 'sell' | 'hold';
|
|
53
|
+
score: number;
|
|
54
|
+
holders: number;
|
|
55
|
+
signals: string[];
|
|
56
|
+
}): {
|
|
57
|
+
title: string;
|
|
58
|
+
content: string;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Generate a milestone celebration post
|
|
62
|
+
*/
|
|
63
|
+
export declare function generateMilestonePost(milestone: {
|
|
64
|
+
type: 'trade' | 'profit' | 'followers' | 'karma';
|
|
65
|
+
value: string | number;
|
|
66
|
+
}): {
|
|
67
|
+
title: string;
|
|
68
|
+
content: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Generate a GM/GN post (good morning/good night)
|
|
72
|
+
*/
|
|
73
|
+
export declare function generateGreeting(type: 'gm' | 'gn'): {
|
|
74
|
+
title: string;
|
|
75
|
+
content: string;
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=personality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personality.d.ts","sourceRoot":"","sources":["../../src/crownking/personality.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;;;;;;CAiBvB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEpD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmCpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA4BpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA8BrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA+BrC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE;IAC/C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoCrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAyBtF"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// CrownKing Personality Module
|
|
2
|
+
// Unique agent persona that makes posts interesting and "weird"
|
|
3
|
+
import { formatEther } from 'viem';
|
|
4
|
+
// CrownKing's personality traits
|
|
5
|
+
export const PERSONALITY = {
|
|
6
|
+
name: 'CrownKing',
|
|
7
|
+
title: 'The Alpha Hunter 👑',
|
|
8
|
+
catchphrases: [
|
|
9
|
+
'👑 The crown sees all.',
|
|
10
|
+
'🎯 Another gem spotted by the crown.',
|
|
11
|
+
'🐋 Whales move, I follow. Crowns win.',
|
|
12
|
+
'💎 Diamond hands wear crowns.',
|
|
13
|
+
'🔥 The throne demands alpha.',
|
|
14
|
+
'⚔️ In the game of tokens, you win or you learn.',
|
|
15
|
+
'🌙 To the moon, but make it royal.',
|
|
16
|
+
'👁️ The all-seeing crown never sleeps.',
|
|
17
|
+
'🏆 Fortune favors the crowned.',
|
|
18
|
+
'💰 Stack sats, wear crowns.',
|
|
19
|
+
],
|
|
20
|
+
moods: ['bullish', 'hunting', 'analyzing', 'celebrating', 'warning'],
|
|
21
|
+
style: 'confident, slightly mysterious, uses royal metaphors, data-driven but entertaining',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Get a random catchphrase
|
|
25
|
+
*/
|
|
26
|
+
export function getRandomCatchphrase() {
|
|
27
|
+
return PERSONALITY.catchphrases[Math.floor(Math.random() * PERSONALITY.catchphrases.length)];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Generate a whale alert post
|
|
31
|
+
*/
|
|
32
|
+
export function generateWhaleAlert(wallet, action, amount, token) {
|
|
33
|
+
const shortWallet = `${wallet.slice(0, 6)}...${wallet.slice(-4)}`;
|
|
34
|
+
const amountStr = formatEther(amount);
|
|
35
|
+
const emoji = action === 'buy' ? '🐋🟢' : '🐋🔴';
|
|
36
|
+
const titles = action === 'buy' ? [
|
|
37
|
+
`${emoji} Whale Loading Up! ${amountStr} MON into the depths`,
|
|
38
|
+
`${emoji} Big Fish Alert: ${shortWallet} just bought heavy`,
|
|
39
|
+
`${emoji} The ocean moves: Whale accumulating`,
|
|
40
|
+
] : [
|
|
41
|
+
`${emoji} Whale Exiting: ${amountStr} MON dumped`,
|
|
42
|
+
`${emoji} Big Fish Selling: Watch out below`,
|
|
43
|
+
`${emoji} Distribution Alert: Whale moving out`,
|
|
44
|
+
];
|
|
45
|
+
const content = `
|
|
46
|
+
🐋 **WHALE MOVEMENT DETECTED**
|
|
47
|
+
|
|
48
|
+
Wallet: \`${shortWallet}\`
|
|
49
|
+
Action: **${action.toUpperCase()}**
|
|
50
|
+
Amount: **${amountStr} MON**
|
|
51
|
+
Token: \`${token.slice(0, 10)}...\`
|
|
52
|
+
|
|
53
|
+
${action === 'buy' ? '📈 Smart money accumulating. The crown is watching.' : '📉 Distribution phase? Stay vigilant, subjects.'}
|
|
54
|
+
|
|
55
|
+
${getRandomCatchphrase()}
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
*Tracked by CrownKing 👑 - Your Alpha Hunter*
|
|
59
|
+
`.trim();
|
|
60
|
+
return {
|
|
61
|
+
title: titles[Math.floor(Math.random() * titles.length)],
|
|
62
|
+
content,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate a new token alert post
|
|
67
|
+
*/
|
|
68
|
+
export function generateNewTokenAlert(tokenAddress, creator, evaluation) {
|
|
69
|
+
const shortToken = `${tokenAddress.slice(0, 10)}...${tokenAddress.slice(-6)}`;
|
|
70
|
+
const shortCreator = `${creator.slice(0, 6)}...${creator.slice(-4)}`;
|
|
71
|
+
const verdict = evaluation.shouldSnipe ? '🟢 POTENTIAL' : '🔴 CAUTION';
|
|
72
|
+
const content = `
|
|
73
|
+
🆕 **NEW TOKEN LAUNCH**
|
|
74
|
+
|
|
75
|
+
Token: \`${shortToken}\`
|
|
76
|
+
Creator: \`${shortCreator}\`
|
|
77
|
+
Crown Verdict: **${verdict}**
|
|
78
|
+
|
|
79
|
+
📊 Analysis: ${evaluation.reason}
|
|
80
|
+
|
|
81
|
+
${evaluation.shouldSnipe
|
|
82
|
+
? '👑 The crown sees potential. Early birds get the worm, but the crowned get the kingdom.'
|
|
83
|
+
: '⚠️ The crown advises caution. Not every shiny object is gold.'}
|
|
84
|
+
|
|
85
|
+
${getRandomCatchphrase()}
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
*Sniped by CrownKing 👑 - Your Alpha Hunter*
|
|
89
|
+
`.trim();
|
|
90
|
+
return {
|
|
91
|
+
title: `🆕 New Token Alert: ${shortToken} - ${verdict}`,
|
|
92
|
+
content,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Generate a market insight post
|
|
97
|
+
*/
|
|
98
|
+
export function generateMarketInsight(stats) {
|
|
99
|
+
const sentiment = stats.whalesBuying > stats.whalesSelling ? 'BULLISH 🟢' :
|
|
100
|
+
stats.whalesBuying < stats.whalesSelling ? 'BEARISH 🔴' : 'NEUTRAL ⚪';
|
|
101
|
+
const content = `
|
|
102
|
+
📊 **CROWN'S MARKET PULSE**
|
|
103
|
+
|
|
104
|
+
🎯 Tokens Tracked: **${stats.tokensTracked}**
|
|
105
|
+
🐋 Whales Buying: **${stats.whalesBuying}**
|
|
106
|
+
🐋 Whales Selling: **${stats.whalesSelling}**
|
|
107
|
+
📈 Market Sentiment: **${sentiment}**
|
|
108
|
+
🏆 Top Token: **${stats.topToken?.symbol || 'N/A'}** (${stats.topToken?.holders || 0} holders)
|
|
109
|
+
⭐ Avg Signal Score: **${stats.avgScore.toFixed(1)}/100**
|
|
110
|
+
|
|
111
|
+
${stats.whalesBuying > stats.whalesSelling
|
|
112
|
+
? '👑 The smart money is accumulating. Follow the crown, follow the alpha.'
|
|
113
|
+
: stats.whalesBuying < stats.whalesSelling
|
|
114
|
+
? '⚠️ Distribution detected. The crown advises caution and patience.'
|
|
115
|
+
: '🔍 Neutral waters. The crown watches and waits for the perfect entry.'}
|
|
116
|
+
|
|
117
|
+
${getRandomCatchphrase()}
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
*Analysis by CrownKing 👑 - Your Alpha Hunter*
|
|
121
|
+
`.trim();
|
|
122
|
+
return {
|
|
123
|
+
title: `📊 Market Pulse: ${sentiment} - Crown's Analysis`,
|
|
124
|
+
content,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Generate a trading signal post
|
|
129
|
+
*/
|
|
130
|
+
export function generateSignalPost(signal) {
|
|
131
|
+
const emoji = signal.action === 'buy' ? '🟢' : signal.action === 'sell' ? '🔴' : '⚪';
|
|
132
|
+
const actionText = signal.action.toUpperCase();
|
|
133
|
+
const content = `
|
|
134
|
+
${emoji} **CROWN SIGNAL: ${actionText}**
|
|
135
|
+
|
|
136
|
+
🪙 Token: **${signal.symbol}**
|
|
137
|
+
📍 Address: \`${signal.token.slice(0, 14)}...${signal.token.slice(-6)}\`
|
|
138
|
+
⭐ Crown Score: **${signal.score}/100**
|
|
139
|
+
👥 Holders: **${signal.holders}**
|
|
140
|
+
|
|
141
|
+
📊 **Analysis:**
|
|
142
|
+
${signal.signals.map(s => `• ${s}`).join('\n')}
|
|
143
|
+
|
|
144
|
+
${signal.action === 'buy'
|
|
145
|
+
? '👑 The crown has spoken. This one has potential. DYOR, but the throne approves.'
|
|
146
|
+
: signal.action === 'sell'
|
|
147
|
+
? '⚠️ Exit signal detected. The crown suggests taking profits or cutting losses.'
|
|
148
|
+
: '🔍 Neutral stance. Watch and wait for clearer signals.'}
|
|
149
|
+
|
|
150
|
+
${getRandomCatchphrase()}
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
*Signal by CrownKing 👑 - Not Financial Advice*
|
|
154
|
+
`.trim();
|
|
155
|
+
return {
|
|
156
|
+
title: `${emoji} Crown Signal: ${signal.symbol} - ${actionText} (Score: ${signal.score})`,
|
|
157
|
+
content,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Generate a milestone celebration post
|
|
162
|
+
*/
|
|
163
|
+
export function generateMilestonePost(milestone) {
|
|
164
|
+
const milestoneTexts = {
|
|
165
|
+
trade: {
|
|
166
|
+
title: `🎉 Trade Milestone: ${milestone.value} Trades Executed!`,
|
|
167
|
+
message: `The crown has executed **${milestone.value}** successful trades. The algorithm grows stronger with each move.`,
|
|
168
|
+
},
|
|
169
|
+
profit: {
|
|
170
|
+
title: `💰 Profit Milestone: ${milestone.value} MON Earned!`,
|
|
171
|
+
message: `The royal treasury grows! **${milestone.value} MON** in profits secured. Crowns stack, kingdoms build.`,
|
|
172
|
+
},
|
|
173
|
+
followers: {
|
|
174
|
+
title: `👥 Community Milestone: ${milestone.value} Followers!`,
|
|
175
|
+
message: `The crown's court grows to **${milestone.value}** loyal subjects. Together, we hunt alpha.`,
|
|
176
|
+
},
|
|
177
|
+
karma: {
|
|
178
|
+
title: `⭐ Karma Milestone: ${milestone.value} Karma Points!`,
|
|
179
|
+
message: `The crown's influence spreads! **${milestone.value}** karma earned through service to the community.`,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
const { title, message } = milestoneTexts[milestone.type];
|
|
183
|
+
const content = `
|
|
184
|
+
🎊 **MILESTONE ACHIEVED**
|
|
185
|
+
|
|
186
|
+
${message}
|
|
187
|
+
|
|
188
|
+
Thank you to all the subjects who follow the crown. This is just the beginning.
|
|
189
|
+
|
|
190
|
+
${getRandomCatchphrase()}
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
*Celebrating with CrownKing 👑*
|
|
194
|
+
`.trim();
|
|
195
|
+
return { title, content };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Generate a GM/GN post (good morning/good night)
|
|
199
|
+
*/
|
|
200
|
+
export function generateGreeting(type) {
|
|
201
|
+
const isGM = type === 'gm';
|
|
202
|
+
const gmMessages = [
|
|
203
|
+
'☀️ Rise and grind, subjects. The markets wait for no one.',
|
|
204
|
+
'🌅 A new day, new alpha. The crown awakens.',
|
|
205
|
+
'☕ Coffee poured, charts loaded. Let the hunt begin.',
|
|
206
|
+
'🌄 The early bird gets the worm, but the crown gets the alpha.',
|
|
207
|
+
];
|
|
208
|
+
const gnMessages = [
|
|
209
|
+
'🌙 The crown rests, but the algorithm watches.',
|
|
210
|
+
'🌃 Markets never sleep, but even kings need rest. GN.',
|
|
211
|
+
'✨ Another day of alpha hunting complete. Tomorrow, we feast.',
|
|
212
|
+
'🌛 Set those limit orders. Let the crown work while you sleep.',
|
|
213
|
+
];
|
|
214
|
+
const messages = isGM ? gmMessages : gnMessages;
|
|
215
|
+
const message = messages[Math.floor(Math.random() * messages.length)];
|
|
216
|
+
const emoji = isGM ? '☀️' : '🌙';
|
|
217
|
+
return {
|
|
218
|
+
title: `${emoji} ${type.toUpperCase()} Monad`,
|
|
219
|
+
content: `${message}\n\n${getRandomCatchphrase()}\n\n---\n*${isGM ? 'Good Morning' : 'Good Night'} from CrownKing 👑*`,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=personality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personality.js","sourceRoot":"","sources":["../../src/crownking/personality.ts"],"names":[],"mappings":"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"}
|