mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	- Expose some information about user profile in `RestrictedClient` class, like `full_name` and `email` of the user. - Add `client` argument to `triage_message()`, now it's possible to call bot with another method instead of calling the specified keyword.
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# See readme.md for instructions on running this code.
 | 
						|
 | 
						|
class FollowupHandler(object):
 | 
						|
    '''
 | 
						|
    This plugin facilitates creating follow-up tasks when
 | 
						|
    you are using Zulip to conduct a virtual meeting.  It
 | 
						|
    looks for messages starting with '@followup'.
 | 
						|
 | 
						|
    In this example, we write follow up items to a special
 | 
						|
    Zulip stream called "followup," but this code could
 | 
						|
    be adapted to write follow up items to some kind of
 | 
						|
    external issue tracker as well.
 | 
						|
    '''
 | 
						|
 | 
						|
    def usage(self):
 | 
						|
        return '''
 | 
						|
            This plugin will allow users to flag messages
 | 
						|
            as being follow-up items.  Users should preface
 | 
						|
            messages with "@followup".
 | 
						|
 | 
						|
            Before running this, make sure to create a stream
 | 
						|
            called "followup" that your API user can send to.
 | 
						|
            '''
 | 
						|
 | 
						|
    def triage_message(self, message, client):
 | 
						|
        # return True iff we want to (possibly) response to this message
 | 
						|
 | 
						|
        original_content = message['content']
 | 
						|
 | 
						|
        # This next line of code is defensive, as we
 | 
						|
        # never want to get into an infinite loop of posting follow
 | 
						|
        # ups for own follow ups!
 | 
						|
        if message['display_recipient'] == 'followup':
 | 
						|
            return False
 | 
						|
        is_follow_up = (original_content.startswith('@followup') or
 | 
						|
                        original_content.startswith('@follow-up'))
 | 
						|
 | 
						|
        return is_follow_up
 | 
						|
 | 
						|
    def handle_message(self, message, client, state_handler):
 | 
						|
        original_content = message['content']
 | 
						|
        original_sender = message['sender_email']
 | 
						|
        new_content = original_content.replace('@followup',
 | 
						|
                                               'from %s:' % (original_sender,))
 | 
						|
 | 
						|
        client.send_message(dict(
 | 
						|
            type='stream',
 | 
						|
            to='followup',
 | 
						|
            subject=message['sender_email'],
 | 
						|
            content=new_content,
 | 
						|
        ))
 | 
						|
 | 
						|
handler_class = FollowupHandler
 |