mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-05-11 10:07:03 +00:00
cc3fffeb54
- 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.
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
HF Conditions Command - Provides HF band conditions for ham radio
|
|
"""
|
|
|
|
from .base_command import BaseCommand
|
|
from ..solar_conditions import hf_band_conditions
|
|
from ..models import MeshMessage
|
|
|
|
|
|
class HfcondCommand(BaseCommand):
|
|
"""Command to get HF band conditions.
|
|
|
|
Retrieves and displays propagation conditions for High Frequency (HF) bands,
|
|
useful for amateur radio operators.
|
|
"""
|
|
|
|
# Plugin metadata
|
|
name = "hfcond"
|
|
keywords = ['hfcond']
|
|
description = "Get HF band conditions for ham radio"
|
|
category = "solar"
|
|
requires_internet = True # Requires internet access for hamqsl.com API
|
|
|
|
def __init__(self, bot):
|
|
"""Initialize the hfcond command.
|
|
|
|
Args:
|
|
bot: The MeshCoreBot instance.
|
|
"""
|
|
super().__init__(bot)
|
|
self.hfcond_enabled = self.get_config_value('Hfcond_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.hfcond_enabled:
|
|
return False
|
|
return super().can_execute(message)
|
|
|
|
async def execute(self, message: MeshMessage) -> bool:
|
|
"""Execute the hfcond command.
|
|
|
|
Args:
|
|
message: The message that triggered the command.
|
|
|
|
Returns:
|
|
bool: True if executed successfully, False otherwise.
|
|
"""
|
|
try:
|
|
# Get HF band conditions
|
|
hf_info = hf_band_conditions()
|
|
|
|
# Send response using unified method
|
|
response = self.translate('commands.hfcond.header', info=hf_info)
|
|
return await self.send_response(message, response)
|
|
|
|
except Exception as e:
|
|
error_msg = self.translate('commands.hfcond.error', error=str(e))
|
|
return await self.send_response(message, error_msg)
|
|
|
|
def get_help_text(self) -> str:
|
|
"""Get help text for this command.
|
|
|
|
Returns:
|
|
str: The help text for this command.
|
|
"""
|
|
return self.translate('commands.hfcond.help')
|