Additional Tools#
- sopel.tools.calculation
- sopel.tools.events
eventsevents.ERR_ALREADYREGISTEREDevents.ERR_ALREADYREGISTREDevents.ERR_BADCHANMASKevents.ERR_BADCHANNELKEYevents.ERR_BADMASKevents.ERR_BANLISTFULLevents.ERR_BANNEDFROMCHANevents.ERR_CANNOTSENDTOCHANevents.ERR_CANTKILLSERVERevents.ERR_CHANNELISFULLevents.ERR_CHANOPRIVSNEEDEDevents.ERR_ERRONEUSNICKNAMEevents.ERR_FILEERRORevents.ERR_INVALIDCAPCMDevents.ERR_INVITEONLYCHANevents.ERR_KEYINVALIDevents.ERR_KEYNOPERMISSIONevents.ERR_KEYNOTSETevents.ERR_KEYSETevents.ERR_METADATALIMITevents.ERR_MONLISTFULLevents.ERR_NEEDMOREPARAMSevents.ERR_NICKCOLLISIONevents.ERR_NICKLOCKEDevents.ERR_NICKNAMEINUSEevents.ERR_NOADMININFOevents.ERR_NOCHANMODESevents.ERR_NOLOGINevents.ERR_NOMATCHINGKEYevents.ERR_NOMOTDevents.ERR_NONICKNAMEGIVENevents.ERR_NOOPERHOSTevents.ERR_NOORIGINevents.ERR_NOPERMFORHOSTevents.ERR_NOPRIVILEGESevents.ERR_NORECIPIENTevents.ERR_NOSUCHCHANNELevents.ERR_NOSUCHNICKevents.ERR_NOSUCHSERVERevents.ERR_NOSUCHSERVICEevents.ERR_NOTEXTTOSENDevents.ERR_NOTONCHANNELevents.ERR_NOTOPLEVELevents.ERR_NOTREGISTEREDevents.ERR_PASSWDMISMATCHevents.ERR_RESTRICTEDevents.ERR_SASLABORTEDevents.ERR_SASLALREADYevents.ERR_SASLFAILevents.ERR_SASLTOOLONGevents.ERR_STARTTLSevents.ERR_SUMMONDISABLEDevents.ERR_TARGETINVALIDevents.ERR_TOOMANYCHANNELSevents.ERR_TOOMANYTARGETSevents.ERR_UMODEUNKNOWNFLAGevents.ERR_UNAVAILRESOURCEevents.ERR_UNIQOPPRIVSNEEDEDevents.ERR_UNKNOWNCOMMANDevents.ERR_UNKNOWNMODEevents.ERR_USERNOTINCHANNELevents.ERR_USERONCHANNELevents.ERR_USERSDISABLEDevents.ERR_USERSDONTMATCHevents.ERR_WASNOSUCHNICKevents.ERR_WILDTOPLEVELevents.ERR_YOUREBANNEDCREEPevents.ERR_YOUWILLBEBANNEDevents.RPL_ADMINEMAILevents.RPL_ADMINLOC1events.RPL_ADMINLOC2events.RPL_ADMINMEevents.RPL_AWAYevents.RPL_BANLISTevents.RPL_BOUNCEevents.RPL_CHANNELMODEISevents.RPL_CREATEDevents.RPL_ENDOFBANLISTevents.RPL_ENDOFEXCEPTLISTevents.RPL_ENDOFINFOevents.RPL_ENDOFINVEXLISTevents.RPL_ENDOFINVITELISTevents.RPL_ENDOFLINKSevents.RPL_ENDOFMONLISTevents.RPL_ENDOFMOTDevents.RPL_ENDOFNAMESevents.RPL_ENDOFSTATSevents.RPL_ENDOFUSERSevents.RPL_ENDOFWHOevents.RPL_ENDOFWHOISevents.RPL_ENDOFWHOWASevents.RPL_EXCEPTLISTevents.RPL_INFOevents.RPL_INVEXLISTevents.RPL_INVITELISTevents.RPL_INVITINGevents.RPL_ISONevents.RPL_ISUPPORTevents.RPL_KEYVALUEevents.RPL_LINKSevents.RPL_LISTevents.RPL_LISTENDevents.RPL_LISTSTARTevents.RPL_LOGGEDINevents.RPL_LOGGEDOUTevents.RPL_LUSERCHANNELSevents.RPL_LUSERCLIENTevents.RPL_LUSERMEevents.RPL_LUSEROPevents.RPL_LUSERUNKNOWNevents.RPL_METADATAENDevents.RPL_MONLISTevents.RPL_MONOFFLINEevents.RPL_MONONLINEevents.RPL_MOTDevents.RPL_MOTDSTARTevents.RPL_MYINFOevents.RPL_NAMREPLYevents.RPL_NONEevents.RPL_NOTOPICevents.RPL_NOUSERSevents.RPL_NOWAWAYevents.RPL_REHASHINGevents.RPL_SASLMECHSevents.RPL_SASLSUCCESSevents.RPL_SERVLISTevents.RPL_SERVLISTENDevents.RPL_STARTTLSevents.RPL_STATSCLINEevents.RPL_STATSCOMMANDSevents.RPL_STATSHLINEevents.RPL_STATSILINEevents.RPL_STATSKLINEevents.RPL_STATSLINKINFOevents.RPL_STATSLLINEevents.RPL_STATSNLINEevents.RPL_STATSOLINEevents.RPL_STATSUPTIMEevents.RPL_STATSYLINEevents.RPL_SUMMONINGevents.RPL_TIMEevents.RPL_TOPICevents.RPL_TRACECLASSevents.RPL_TRACECONNECTINGevents.RPL_TRACEENDevents.RPL_TRACEHANDSHAKEevents.RPL_TRACELINKevents.RPL_TRACELOGevents.RPL_TRACENEWTYPEevents.RPL_TRACEOPERATORevents.RPL_TRACERECONNECTevents.RPL_TRACESERVERevents.RPL_TRACESERVICEevents.RPL_TRACEUNKNOWNevents.RPL_TRACEUSERevents.RPL_TRYAGAINevents.RPL_UMODEISevents.RPL_UNAWAYevents.RPL_UNIQOPISevents.RPL_USERHOSTevents.RPL_USERSevents.RPL_USERSSTARTevents.RPL_VERSIONevents.RPL_WELCOMEevents.RPL_WHOISBOTevents.RPL_WHOISCHANNELSevents.RPL_WHOISIDLEevents.RPL_WHOISKEYVALUEevents.RPL_WHOISOPERATORevents.RPL_WHOISSERVERevents.RPL_WHOISUSERevents.RPL_WHOREPLYevents.RPL_WHOSPCRPLevents.RPL_WHOWASUSERevents.RPL_YOUREOPERevents.RPL_YOURESERVICEevents.RPL_YOURHOST
- sopel.tools.identifiers
- sopel.tools.jobs
- sopel.tools.memories
- sopel.tools.target
ChannelChannel.add_user()Channel.clear_user()Channel.has_privilege()Channel.is_admin()Channel.is_halfop()Channel.is_op()Channel.is_oper()Channel.is_owner()Channel.is_voiced()Channel.join_timeChannel.last_whoChannel.make_identifierChannel.modesChannel.nameChannel.privilegesChannel.rename_user()Channel.topicChannel.users
User
- sopel.tools.time
- sopel.tools.web
sopel.tools#
Useful miscellaneous tools and shortcuts for Sopel plugins
Availability: 3+
- class sopel.tools.OutputRedirect(logpath, stderr=False, quiet=False)#
Redirect the output to the terminal and a log file.
A simplified object used to write to both the terminal and a log file.
- flush()#
Flush the file writing buffer.
- sopel.tools.chain_loaders(*lazy_loaders)#
Chain lazy loaders into one.
- Parameters:
lazy_loaders (function) – one or more lazy loader functions
- Returns:
a lazy loader that combines all of the given ones
- Return type:
This function takes any number of lazy loaders as arguments and merges them together into one. It’s primarily a helper for lazy rule decorators such as
sopel.plugin.url_lazy().Important
This function doesn’t check the uniqueness of regexes generated by all the loaders.
- sopel.tools.get_hostmask_regex(mask)#
Get a compiled regex pattern for an IRC hostmask
- Parameters:
mask (str) – the hostmask that the pattern should match
- Returns:
a compiled regex pattern matching the given
mask- Return type:
- sopel.tools.get_input(prompt)#
Get decoded input from the terminal (equivalent to Python 3’s
input).- Parameters:
prompt (str) – what to display as a prompt on the terminal
- Returns:
the user’s input
- Return type:
Deprecated since version 7.1: Use of this function will become a warning when Python 2 support is dropped in Sopel 8.0. The function will be removed in Sopel 8.1.
- sopel.tools.get_logger(plugin_name)#
Return a logger for a plugin.
- Parameters:
plugin_name (str) – name of the plugin
- Returns:
the logger for the given plugin
This:
from sopel import tools LOGGER = tools.get_logger('my_custom_plugin')
is equivalent to this:
import logging LOGGER = logging.getLogger('sopel.externals.my_custom_plugin')
Internally, Sopel configures logging for the
sopelnamespace, so external plugins can’t benefit from it withlogging.getLogger(__name__)as they won’t be in the same namespace. This function uses theplugin_namewith a prefix inside this namespace.New in version 7.0.
- sopel.tools.get_sendable_message(text, max_length=400)#
Get a sendable
textmessage, with its excess when needed.- Parameters:
- Returns:
a tuple of two values, the sendable text and its excess text
- Return type:
We’re arbitrarily saying that the (default) max is 400 bytes of text when messages will be split, but callers can specify a different value (e.g. to account precisely for the bot’s hostmask).
The
max_lengthis the max length of text in bytes, but we take care of multibyte UTF-8 characters by working on the Unicode string, then making sure the bytes version is smaller than the max length.New in version 6.6.2.