mirror of
				https://github.com/jlu5/PyLink.git
				synced 2025-11-04 08:57:25 +01:00 
			
		
		
		
	relay_cb: implement outgoing PMs from clientbot networks via an 'rpm' command
Closes #292.
This commit is contained in:
		
							parent
							
								
									7817898c14
								
							
						
					
					
						commit
						7eb5e59842
					
				@ -176,3 +176,41 @@ utils.add_hook(cb_relay_core, 'CLIENTBOT_QUIT')
 | 
			
		||||
utils.add_hook(cb_relay_core, 'CLIENTBOT_NICK')
 | 
			
		||||
utils.add_hook(cb_relay_core, 'CLIENTBOT_SJOIN')
 | 
			
		||||
utils.add_hook(cb_relay_core, 'CLIENTBOT_SQUIT')
 | 
			
		||||
 | 
			
		||||
@utils.add_cmd
 | 
			
		||||
def rpm(irc, source, args):
 | 
			
		||||
    """<target> <text>
 | 
			
		||||
 | 
			
		||||
    Sends PMs to users over the relay, if Clientbot PMs are enabled.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        target = args[0]
 | 
			
		||||
        text = ' '.join(args[1:])
 | 
			
		||||
    except IndexError:
 | 
			
		||||
        irc.reply('Error: Not enough arguments. Needs 2: target nick and text.')
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    relay = world.plugins.get('relay')
 | 
			
		||||
    if irc.protoname != 'clientbot':
 | 
			
		||||
        irc.reply('Error: This command is only supported on Clientbot networks. Try /msg %s <text>' % target)
 | 
			
		||||
        return
 | 
			
		||||
    elif relay is None:
 | 
			
		||||
        irc.reply('Error: PyLink Relay is not loaded.')
 | 
			
		||||
        return
 | 
			
		||||
    elif not text:
 | 
			
		||||
        irc.reply('Error: No text given.')
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    uid = irc.nickToUid(target)
 | 
			
		||||
    if not uid:
 | 
			
		||||
        irc.reply('Error: Unknown user %s.' % target)
 | 
			
		||||
        return
 | 
			
		||||
    elif not relay.isRelayClient(irc, uid):
 | 
			
		||||
        irc.reply('Error: %s is not a relay user.' % target)
 | 
			
		||||
        return
 | 
			
		||||
    else:
 | 
			
		||||
        assert not irc.isInternalClient(source), "rpm is not allowed from PyLink bots"
 | 
			
		||||
        # Send the message through relay by faking a hook for its handler.
 | 
			
		||||
        relay.handle_messages(irc, source, 'RELAY_CLIENTBOT_PRIVMSG', {'target': uid, 'text': text})
 | 
			
		||||
        irc.reply('Message sent.')
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user