interactive bots: create EncryptBot bot
This commit is contained in:
		
							parent
							
								
									366d57c291
								
							
						
					
					
						commit
						51b88e3d8c
					
				
					 6 changed files with 72 additions and 0 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-terminal.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-terminal.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 287 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-test.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-test.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 180 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-test2.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-test2.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 160 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-test3.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								contrib_bots/lib/EncryptBot/EncryptBot-test3.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 170 KiB  | 
							
								
								
									
										16
									
								
								contrib_bots/lib/EncryptBot/docs.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								contrib_bots/lib/EncryptBot/docs.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					About EncryptBot:
 | 
				
			||||||
 | 
					EncryptBot Allows for quick ROT13 encryption in the middle of a chat.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					What It Does:
 | 
				
			||||||
 | 
					The bot encrypts any message sent to it on any stream it is subscribed to with ROT13.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					How It Works:
 | 
				
			||||||
 | 
					The bot will Use ROT13(A -> N, B -> O... and vice-versa) in a python
 | 
				
			||||||
 | 
					implementation to provide quick and easy encryption.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					How to Use:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-Send the message you want to encrypt, add @encrypt to the beginning.
 | 
				
			||||||
 | 
					-The Encrypted message will be sent back to the stream the original
 | 
				
			||||||
 | 
					message was posted in to the topic <sender-email>'s encrypted text.
 | 
				
			||||||
 | 
					-Messages can be decrypted by sending them to EncryptBot in the same way.
 | 
				
			||||||
							
								
								
									
										56
									
								
								contrib_bots/lib/encrypt_bot.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										56
									
								
								contrib_bots/lib/encrypt_bot.py
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					def encrypt(text):
 | 
				
			||||||
 | 
					    # This is where the actual ROT13 is applied
 | 
				
			||||||
 | 
					    # WHY IS .JOIN NOT WORKING?!
 | 
				
			||||||
 | 
					    textlist = list(text)
 | 
				
			||||||
 | 
					    newtext = ''
 | 
				
			||||||
 | 
					    firsthalf = 'abcdefghijklmABCDEFGHIJKLM'
 | 
				
			||||||
 | 
					    lasthalf = 'nopqrstuvwxyzNOPQRSTUVWXYZ'
 | 
				
			||||||
 | 
					    for char in textlist:
 | 
				
			||||||
 | 
					        if char in firsthalf:
 | 
				
			||||||
 | 
					            newtext += lasthalf[firsthalf.index(char)]
 | 
				
			||||||
 | 
					        elif char in lasthalf:
 | 
				
			||||||
 | 
					            newtext += firsthalf[lasthalf.index(char)]
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            newtext += char
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return newtext
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class EncryptHandler(object):
 | 
				
			||||||
 | 
					    '''
 | 
				
			||||||
 | 
					    This bot allows users to quickly encrypt messages using ROT13 encryption.
 | 
				
			||||||
 | 
					    It encrypts/decrypts messages starting with @encrypt.
 | 
				
			||||||
 | 
					    '''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def usage(self):
 | 
				
			||||||
 | 
					        return '''
 | 
				
			||||||
 | 
					            This bot uses ROT13 encryption for its purposes.
 | 
				
			||||||
 | 
					            It responds to me starting with @encrypt.
 | 
				
			||||||
 | 
					            Feeding encrypted messages into the bot decrypts them.
 | 
				
			||||||
 | 
					            '''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def triage_message(self, message, client):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        original_content = message['content']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # This makes sure that the bot only replies to messages it supposed to reply to.
 | 
				
			||||||
 | 
					        should_be_encrypted = original_content.startswith('@encrypt')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return should_be_encrypted
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def handle_message(self, message, client, state_handler):
 | 
				
			||||||
 | 
					        original_content = message['content']
 | 
				
			||||||
 | 
					        temp_content = encrypt(original_content.replace('@encrypt', ''))
 | 
				
			||||||
 | 
					        send_content = "Encrypted/Decrypted text: " + temp_content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        client.send_message(dict(
 | 
				
			||||||
 | 
					            type='stream',
 | 
				
			||||||
 | 
					            to=message['display_recipient'],
 | 
				
			||||||
 | 
					            subject=message['subject'],
 | 
				
			||||||
 | 
					            content = send_content
 | 
				
			||||||
 | 
					        ))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					handler_class = EncryptHandler
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    assert encrypt('ABCDabcd1234') == 'NOPQnopq1234'
 | 
				
			||||||
 | 
					    assert encrypt('NOPQnopq1234') == 'ABCDabcd1234'
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue