interactive bots: create EncryptBot bot
This commit is contained in:
parent
366d57c291
commit
51b88e3d8c
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…
Reference in a new issue