mirror of
https://github.com/chainstacklabs/pumpfun-bonkfun-bot.git
synced 2026-07-27 23:37:45 +00:00
fix(core): use logger exception
This commit is contained in:
+7
-7
@@ -186,7 +186,7 @@ class SolanaClient:
|
||||
|
||||
except Exception as e:
|
||||
if attempt == max_retries - 1:
|
||||
logger.error(
|
||||
logger.exception(
|
||||
f"Failed to send transaction after {max_retries} attempts"
|
||||
)
|
||||
raise
|
||||
@@ -215,8 +215,8 @@ class SolanaClient:
|
||||
signature, commitment=commitment, sleep_seconds=1
|
||||
)
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to confirm transaction {signature}: {e!s}")
|
||||
except Exception:
|
||||
logger.exception(f"Failed to confirm transaction {signature}")
|
||||
return False
|
||||
|
||||
async def post_rpc(self, body: dict[str, Any]) -> dict[str, Any] | None:
|
||||
@@ -238,9 +238,9 @@ class SolanaClient:
|
||||
) as response:
|
||||
response.raise_for_status()
|
||||
return await response.json()
|
||||
except aiohttp.ClientError as e:
|
||||
logger.error(f"RPC request failed: {e!s}", exc_info=True)
|
||||
except aiohttp.ClientError:
|
||||
logger.exception("RPC request failed")
|
||||
return None
|
||||
except json.JSONDecodeError as e:
|
||||
logger.error(f"Failed to decode RPC response: {e!s}", exc_info=True)
|
||||
except json.JSONDecodeError:
|
||||
logger.exception("Failed to decode RPC response")
|
||||
return None
|
||||
|
||||
@@ -62,8 +62,6 @@ class DynamicPriorityFee(PriorityFeePlugin):
|
||||
|
||||
return prior_fee
|
||||
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Failed to fetch recent priority fee: {str(e)}", exc_info=True
|
||||
)
|
||||
except Exception:
|
||||
logger.exception("Failed to fetch recent priority fee")
|
||||
return None
|
||||
|
||||
@@ -129,8 +129,8 @@ class UniversalBlockListener(BaseTokenListener):
|
||||
logger.warning("WebSocket connection closed. Reconnecting...")
|
||||
ping_task.cancel()
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"WebSocket connection error: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("WebSocket connection error")
|
||||
logger.info("Reconnecting in 5 seconds...")
|
||||
await asyncio.sleep(5)
|
||||
|
||||
@@ -183,8 +183,8 @@ class UniversalBlockListener(BaseTokenListener):
|
||||
return
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except Exception as e:
|
||||
logger.error(f"Ping error: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Ping error")
|
||||
|
||||
async def _wait_for_token_creation(self, websocket) -> TokenInfo | None:
|
||||
"""Wait for token creation event from any platform.
|
||||
@@ -234,7 +234,7 @@ class UniversalBlockListener(BaseTokenListener):
|
||||
except websockets.exceptions.ConnectionClosed:
|
||||
logger.warning("WebSocket connection closed")
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing WebSocket message: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Error processing WebSocket message")
|
||||
|
||||
return None
|
||||
@@ -160,18 +160,17 @@ class UniversalGeyserListener(BaseTokenListener):
|
||||
await token_callback(token_info)
|
||||
|
||||
except Exception as e:
|
||||
import grpc
|
||||
if isinstance(e, grpc.aio.AioRpcError):
|
||||
logger.error(f"gRPC error: {e.details()}")
|
||||
logger.exception(f"gRPC error: {e.details()}")
|
||||
else:
|
||||
logger.error(f"Geyser error: {e}")
|
||||
logger.exception("Geyser error occurred")
|
||||
await asyncio.sleep(5)
|
||||
|
||||
finally:
|
||||
await channel.close()
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Geyser connection error: {e}")
|
||||
except Exception:
|
||||
logger.exception("Geyser connection error")
|
||||
logger.info("Reconnecting in 10 seconds...")
|
||||
await asyncio.sleep(10)
|
||||
|
||||
@@ -208,6 +207,6 @@ class UniversalGeyserListener(BaseTokenListener):
|
||||
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing Geyser update: {e}")
|
||||
except Exception:
|
||||
logger.exception("Error processing Geyser update")
|
||||
return None
|
||||
@@ -127,8 +127,8 @@ class UniversalLogsListener(BaseTokenListener):
|
||||
logger.warning("WebSocket connection closed. Reconnecting...")
|
||||
ping_task.cancel()
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"WebSocket connection error: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("WebSocket connection error")
|
||||
logger.info("Reconnecting in 5 seconds...")
|
||||
await asyncio.sleep(5)
|
||||
|
||||
@@ -177,8 +177,8 @@ class UniversalLogsListener(BaseTokenListener):
|
||||
return
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except Exception as e:
|
||||
logger.error(f"Ping error: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Ping error")
|
||||
|
||||
async def _wait_for_token_creation(self, websocket) -> TokenInfo | None:
|
||||
"""Wait for token creation events from any platform."""
|
||||
@@ -206,7 +206,7 @@ class UniversalLogsListener(BaseTokenListener):
|
||||
except websockets.exceptions.ConnectionClosed:
|
||||
logger.warning("WebSocket connection closed")
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing WebSocket message: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Error processing WebSocket message")
|
||||
|
||||
return None
|
||||
@@ -156,8 +156,8 @@ class UniversalPumpPortalListener(BaseTokenListener):
|
||||
return
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except Exception as e:
|
||||
logger.error(f"Ping error: {e}")
|
||||
except Exception:
|
||||
logger.exception("Ping error")
|
||||
|
||||
async def _wait_for_token_creation(self, websocket) -> TokenInfo | None:
|
||||
"""Wait for token creation event from PumpPortal.
|
||||
@@ -208,9 +208,9 @@ class UniversalPumpPortalListener(BaseTokenListener):
|
||||
except websockets.exceptions.ConnectionClosed:
|
||||
logger.warning("PumpPortal WebSocket connection closed")
|
||||
raise
|
||||
except json.JSONDecodeError as e:
|
||||
logger.error(f"Failed to decode PumpPortal message: {e}")
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing PumpPortal WebSocket message: {e}")
|
||||
except json.JSONDecodeError:
|
||||
logger.exception("Failed to decode PumpPortal message")
|
||||
except Exception:
|
||||
logger.exception("Error processing PumpPortal WebSocket message")
|
||||
|
||||
return None
|
||||
@@ -60,7 +60,7 @@ class LetsBonkCurveManager(CurveManager):
|
||||
return pool_state_data
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to get pool state: {e!s}")
|
||||
logger.exception("Failed to get pool state")
|
||||
raise ValueError(f"Invalid pool state: {e!s}")
|
||||
|
||||
async def calculate_price(self, pool_address: Pubkey) -> float:
|
||||
@@ -239,6 +239,6 @@ class LetsBonkCurveManager(CurveManager):
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Pool state validation failed: {e}")
|
||||
except Exception:
|
||||
logger.exception("Pool state validation failed")
|
||||
return False
|
||||
@@ -113,6 +113,6 @@ class LetsBonkPumpPortalProcessor:
|
||||
creator=creator,
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to process PumpPortal LetsBonk token data: {e}")
|
||||
except Exception:
|
||||
logger.exception("Failed to process PumpPortal LetsBonk token data")
|
||||
return None
|
||||
@@ -58,7 +58,7 @@ class PumpFunCurveManager(CurveManager):
|
||||
return curve_state_data
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to get curve state: {e!s}")
|
||||
logger.exception("Failed to get curve state")
|
||||
raise ValueError(f"Invalid bonding curve state: {e!s}")
|
||||
|
||||
async def calculate_price(self, pool_address: Pubkey) -> float:
|
||||
@@ -317,6 +317,6 @@ class PumpFunCurveManager(CurveManager):
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Curve state validation failed: {e}")
|
||||
except Exception:
|
||||
logger.exception("Curve state validation failed")
|
||||
return False
|
||||
@@ -191,8 +191,8 @@ class PumpFunEventParser(EventParser):
|
||||
logger.info("❌ No valid CreateEvent found in any Program data entries")
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to parse token creation from logs: {e}")
|
||||
except Exception:
|
||||
logger.exception("Failed to parse token creation from logs")
|
||||
return None
|
||||
|
||||
def parse_token_creation_from_instruction(
|
||||
|
||||
@@ -99,6 +99,6 @@ class PumpFunPumpPortalProcessor:
|
||||
creator_vault=creator_vault,
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to process PumpPortal token data: {e}")
|
||||
except Exception:
|
||||
logger.exception("Failed to process PumpPortal token data")
|
||||
return None
|
||||
@@ -110,8 +110,8 @@ class UniversalTrader:
|
||||
from platforms import platform_factory
|
||||
if not platform_factory.registry.is_platform_supported(self.platform):
|
||||
raise ValueError(f"Platform {self.platform.value} is not supported")
|
||||
except Exception as e:
|
||||
logger.error(f"Platform validation failed: {e}")
|
||||
except Exception:
|
||||
logger.exception("Platform validation failed")
|
||||
raise
|
||||
|
||||
# Get platform-specific implementations
|
||||
@@ -234,8 +234,8 @@ class UniversalTrader:
|
||||
self.match_string,
|
||||
self.bro_address,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Token listening stopped due to error: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Token listening stopped due to error")
|
||||
finally:
|
||||
processor_task.cancel()
|
||||
try:
|
||||
@@ -243,8 +243,8 @@ class UniversalTrader:
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Trading stopped due to error: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Trading stopped due to error")
|
||||
|
||||
finally:
|
||||
await self._cleanup_resources()
|
||||
@@ -306,8 +306,8 @@ class UniversalTrader:
|
||||
self.cleanup_with_priority_fee,
|
||||
self.cleanup_force_close_with_burn,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Error during cleanup: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Error during cleanup")
|
||||
|
||||
old_keys = {k for k in self.token_timestamps if k not in self.processed_tokens}
|
||||
for key in old_keys:
|
||||
@@ -352,8 +352,8 @@ class UniversalTrader:
|
||||
except asyncio.CancelledError:
|
||||
logger.info("Token queue processor was cancelled")
|
||||
break
|
||||
except Exception as e:
|
||||
logger.error(f"Error in token queue processor: {e!s}")
|
||||
except Exception:
|
||||
logger.exception("Error in token queue processor")
|
||||
finally:
|
||||
self.token_queue.task_done()
|
||||
|
||||
@@ -385,8 +385,8 @@ class UniversalTrader:
|
||||
logger.info(f"YOLO mode enabled. Waiting {self.wait_time_before_new_token} seconds before looking for next token...")
|
||||
await asyncio.sleep(self.wait_time_before_new_token)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error handling token {token_info.symbol}: {e!s}")
|
||||
except Exception:
|
||||
logger.exception(f"Error handling token {token_info.symbol}")
|
||||
|
||||
async def _handle_successful_buy(self, token_info: TokenInfo, buy_result: TradeResult) -> None:
|
||||
"""Handle successful token purchase."""
|
||||
@@ -526,8 +526,8 @@ class UniversalTrader:
|
||||
# Wait before next price check
|
||||
await asyncio.sleep(self.price_check_interval)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error monitoring position: {e}")
|
||||
except Exception:
|
||||
logger.exception("Error monitoring position")
|
||||
await asyncio.sleep(self.price_check_interval) # Continue monitoring despite errors
|
||||
|
||||
def _get_pool_address(self, token_info: TokenInfo) -> Pubkey:
|
||||
|
||||
@@ -242,7 +242,7 @@ class IDLManager:
|
||||
"event_count": len(event_names),
|
||||
}
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to get capabilities for {platform.value}: {e}")
|
||||
logger.exception(f"Failed to get capabilities for {platform.value}")
|
||||
return {
|
||||
"platform": platform.value,
|
||||
"has_idl_support": False,
|
||||
|
||||
Reference in New Issue
Block a user