mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-03-30 12:05:38 +00:00
- Implemented a configuration option for enabling or disabling commands across multiple command classes. - Each command now checks its enabled state before execution, improving control over command availability. - Updated the configuration loading mechanism to retrieve the enabled state from the config file for commands like Advert, AQI, Catfact, and others.
81 lines
2.6 KiB
Python
81 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Solar Command - Provides solar conditions and HF band information
|
|
"""
|
|
|
|
from .base_command import BaseCommand
|
|
from ..solar_conditions import solar_conditions, hf_band_conditions
|
|
from ..models import MeshMessage
|
|
|
|
|
|
class SolarCommand(BaseCommand):
|
|
"""Command to get solar conditions.
|
|
|
|
Provides information about current solar activity (SFI, sunspots, A-index, K-index)
|
|
and improved HF band conditions.
|
|
"""
|
|
|
|
# Plugin metadata
|
|
name = "solar"
|
|
keywords = ['solar']
|
|
description = "Get current solar conditions and HF band info"
|
|
category = "solar"
|
|
requires_internet = True # Requires internet access for hamqsl.com API
|
|
|
|
def __init__(self, bot):
|
|
"""Initialize the solar command.
|
|
|
|
Args:
|
|
bot: The MeshCoreBot instance.
|
|
"""
|
|
super().__init__(bot)
|
|
self.solar_enabled = self.get_config_value('Solar_Command', 'enabled', fallback=True, value_type='bool')
|
|
|
|
def can_execute(self, message: MeshMessage) -> bool:
|
|
"""Check if this command can be executed with the given message.
|
|
|
|
Args:
|
|
message: The message triggering the command.
|
|
|
|
Returns:
|
|
bool: True if command is enabled and checks pass, False otherwise.
|
|
"""
|
|
if not self.solar_enabled:
|
|
return False
|
|
return super().can_execute(message)
|
|
|
|
async def execute(self, message: MeshMessage) -> bool:
|
|
"""Execute the solar command.
|
|
|
|
Retrieves solar conditions and sends a formatted response to the user.
|
|
|
|
Args:
|
|
message: The message that triggered the command.
|
|
|
|
Returns:
|
|
bool: True if executed successfully, False otherwise.
|
|
"""
|
|
try:
|
|
# Get solar conditions (more readable format)
|
|
solar_info = solar_conditions()
|
|
|
|
# Send response (solar only, more readable)
|
|
response = self.translate('commands.solar.response', info=solar_info)
|
|
|
|
# Use the unified send_response method
|
|
return await self.send_response(message, response)
|
|
|
|
|
|
except Exception as e:
|
|
error_msg = self.translate('commands.solar.error', error=str(e))
|
|
await self.send_response(message, error_msg)
|
|
return False
|
|
|
|
def get_help_text(self) -> str:
|
|
"""Get help text for this command.
|
|
|
|
Returns:
|
|
str: The help text for this command.
|
|
"""
|
|
return self.translate('commands.solar.help')
|