mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-11-04 00:47:21 +01:00 
			
		
		
		
	Split fantasy prefix definitions into service-specific blocks
Closes #426. This makes the pylink::prefix (aka bot::prefix) option only affect the main PyLink bot, and deprecates the pylink::prefixes::<...> options. As the bot: config block is no longer checked, this commit depends on commit 45ed5b962e215763f7659631d1b98a5031dbab92 (ref #343) to alias it to conf::pylink.
This commit is contained in:
		
							parent
							
								
									fb626c8a97
								
							
						
					
					
						commit
						bf42109d81
					
				@ -15,18 +15,23 @@ pylink:
 | 
			
		||||
    # Server description (shown in /links, /whois, etc.)
 | 
			
		||||
    serverdesc: PyLink Server
 | 
			
		||||
 | 
			
		||||
    # Sets the default fantasy command prefix for calling commands inside channels
 | 
			
		||||
    # (requires fantasy plugin).
 | 
			
		||||
    # Sets the fantasy command prefix for the main PyLink bot. To configure fantasy prefixes for
 | 
			
		||||
    # other service bots, add or modify the "prefix:" option in the configuration section of each
 | 
			
		||||
    # plugin.
 | 
			
		||||
    # Note: prior to PyLink 1.2, defining a prefix here made it global for all service bots. This
 | 
			
		||||
    # was removed because it called all bots in a channel at once (even if they have conflicting
 | 
			
		||||
    # commands), which usually led to one successful reply and a string of "Command not found"
 | 
			
		||||
    # errors.
 | 
			
		||||
    prefix: "&"
 | 
			
		||||
 | 
			
		||||
    # Determines whether the bot will reply to commands prefixed with its nick
 | 
			
		||||
    # (case sensitive and requires the fantasy plugin).
 | 
			
		||||
    # Whether service bots will respond to commands prefixes with their nick.
 | 
			
		||||
    respondtonick: true
 | 
			
		||||
 | 
			
		||||
    # Custom fantasy command prefixes for other service bots if they are loaded
 | 
			
		||||
    # (requires fantasy plugin).
 | 
			
		||||
    prefixes:
 | 
			
		||||
        games: "@"
 | 
			
		||||
    # Custom prefixes for other service bots if they are loaded. Note: this is deprecated
 | 
			
		||||
    # since PyLink 1.2 in favour of adding prefixes into each plugin's configuration block
 | 
			
		||||
    # itself (see the "prefix:" option in the "games:" block in this case).
 | 
			
		||||
    #prefixes:
 | 
			
		||||
    #    games: "@"
 | 
			
		||||
 | 
			
		||||
    # Determines whether hideoper modes should be respected in WHOIS replies.
 | 
			
		||||
    # Defaults to true if not specified.
 | 
			
		||||
@ -638,10 +643,17 @@ automode:
 | 
			
		||||
    # This option overrides the global "spawn_services" option defined in "pylink:".
 | 
			
		||||
    #spawn_service: true
 | 
			
		||||
 | 
			
		||||
    # Defines a fantasy prefix for the Automode bot (requires spawn_services to be set and the
 | 
			
		||||
    # fantasy plugin to be loaded).
 | 
			
		||||
    prefix: "@"
 | 
			
		||||
 | 
			
		||||
games:
 | 
			
		||||
    # Sets the nick of the Games service, if you're using it. This defaults to "games" if not defined.
 | 
			
		||||
    nick: Games
 | 
			
		||||
 | 
			
		||||
    # Defines a fantasy prefix for the Games bot.
 | 
			
		||||
    prefix: "./"
 | 
			
		||||
 | 
			
		||||
stats:
 | 
			
		||||
    # Determines the time format that the Stats plugin should use for showing dates + times.
 | 
			
		||||
    # Defaults to "%a, %d %b %Y %H:%M:%S +0000" (the RFC 2812 standard) if not specified.
 | 
			
		||||
 | 
			
		||||
@ -29,11 +29,10 @@ def handle_fantasy(irc, source, command, args):
 | 
			
		||||
            servuid = sbot.uids.get(irc.name)
 | 
			
		||||
            if servuid in irc.channels[channel].users:
 | 
			
		||||
 | 
			
		||||
                # Try to look up a prefix specific for this bot in
 | 
			
		||||
                # bot: prefixes: <botname>, falling back to the default prefix if not
 | 
			
		||||
                # specified.
 | 
			
		||||
                prefixes = [conf.conf['bot'].get('prefixes', {}).get(botname) or
 | 
			
		||||
                            conf.conf['bot'].get('prefix')]
 | 
			
		||||
                # Look up a string prefix for this bot in either its own configuration block, or
 | 
			
		||||
                # in bot::prefixes::<botname>.
 | 
			
		||||
                prefixes = [conf.conf.get(botname, {}).get('prefix',
 | 
			
		||||
                            conf.conf['bot'].get('prefixes', {}).get(botname))]
 | 
			
		||||
 | 
			
		||||
                # If responding to nick is enabled, add variations of the current nick
 | 
			
		||||
                # to the prefix list: "<nick>," and "<nick>:"
 | 
			
		||||
@ -43,14 +42,12 @@ def handle_fantasy(irc, source, command, args):
 | 
			
		||||
                    prefixes += [nick+',', nick+':']
 | 
			
		||||
 | 
			
		||||
                if not any(prefixes):
 | 
			
		||||
                    # We finished with an empty prefixes list, meaning fantasy is misconfigured!
 | 
			
		||||
                    log.warning("(%s) Fantasy prefix for bot %s was not set in configuration - "
 | 
			
		||||
                                "fantasy commands will not work!", irc.name, botname)
 | 
			
		||||
                    # No prefixes were set, so skip.
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
                lowered_text = irc.toLower(orig_text)
 | 
			
		||||
                for prefix in prefixes:  # Cycle through the prefixes list we finished with.
 | 
			
		||||
                     if prefix and lowered_text.startswith(prefix):
 | 
			
		||||
                for prefix in filter(None, prefixes):  # Cycle through the prefixes list we finished with.
 | 
			
		||||
                     if lowered_text.startswith(prefix):
 | 
			
		||||
 | 
			
		||||
                        # Cut off the length of the prefix from the text.
 | 
			
		||||
                        text = orig_text[len(prefix):]
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user