Created
December 16, 2014 15:05
-
-
Save oprypin/51e13bc0bcc1326a5297 to your computer and use it in GitHub Desktop.
Skype Bot that matches inconsistent number of brackets in received messages as a protest to eyeless emoticons ")))"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python2 | |
import re | |
import unicodedata | |
import Skype4Py | |
emoticons = open('emoticons.txt').read().split() | |
emoticons_re = r'(' + '|'.join(re.escape(' '.join(e)).replace(' ', ' ?') for e in emoticons) + r')' | |
emoticons_re = re.compile(emoticons_re) | |
brackets = open('brackets.txt').read().splitlines() | |
brackets = (unicodedata.lookup(name) for name in brackets) | |
brackets = list(zip(brackets, brackets)) | |
def botmsg(msg): | |
msg = emoticons_re.sub('', msg) | |
result = '' | |
for a, b in brackets: | |
na, nb = msg.count(a), msg.count(b) | |
if na>nb: | |
result += b*(na-nb) | |
elif nb>na: | |
result += a*(nb-na) | |
return result or None | |
class SkypeBot(object): | |
def __init__(self): | |
self.skype = Skype4Py.Skype(Events=self) | |
self.skype.Attach() | |
def AttachmentStatus(self, status): | |
if status == Skype4Py.apiAttachAvailable: | |
self.skype.Attach() | |
def MessageStatus(self, msg, status): | |
if status == Skype4Py.cmsReceived: | |
body = botmsg(msg.Body) | |
if body: | |
msg.Chat.SendMessage(body) | |
if __name__ == "__main__": | |
import time | |
bot_ = SkypeBot() | |
while True: | |
time.sleep(1.0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
LEFT PARENTHESIS | |
RIGHT PARENTHESIS | |
LEFT SQUARE BRACKET | |
RIGHT SQUARE BRACKET | |
LEFT CURLY BRACKET | |
RIGHT CURLY BRACKET | |
TIBETAN MARK GUG RTAGS GYON | |
TIBETAN MARK GUG RTAGS GYAS | |
TIBETAN MARK ANG KHANG GYON | |
TIBETAN MARK ANG KHANG GYAS | |
OGHAM FEATHER MARK | |
OGHAM REVERSED FEATHER MARK | |
LEFT SQUARE BRACKET WITH QUILL | |
RIGHT SQUARE BRACKET WITH QUILL | |
SUPERSCRIPT LEFT PARENTHESIS | |
SUPERSCRIPT RIGHT PARENTHESIS | |
SUBSCRIPT LEFT PARENTHESIS | |
SUBSCRIPT RIGHT PARENTHESIS | |
LEFT CEILING | |
RIGHT CEILING | |
LEFT FLOOR | |
RIGHT FLOOR | |
LEFT-POINTING ANGLE BRACKET | |
RIGHT-POINTING ANGLE BRACKET | |
MEDIUM LEFT PARENTHESIS ORNAMENT | |
MEDIUM RIGHT PARENTHESIS ORNAMENT | |
MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT | |
MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT | |
MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT | |
MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT | |
HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT | |
HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT | |
HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT | |
HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT | |
LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT | |
LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT | |
MEDIUM LEFT CURLY BRACKET ORNAMENT | |
MEDIUM RIGHT CURLY BRACKET ORNAMENT | |
LEFT S-SHAPED BAG DELIMITER | |
RIGHT S-SHAPED BAG DELIMITER | |
MATHEMATICAL LEFT WHITE SQUARE BRACKET | |
MATHEMATICAL RIGHT WHITE SQUARE BRACKET | |
MATHEMATICAL LEFT ANGLE BRACKET | |
MATHEMATICAL RIGHT ANGLE BRACKET | |
MATHEMATICAL LEFT DOUBLE ANGLE BRACKET | |
MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET | |
MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET | |
MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET | |
MATHEMATICAL LEFT FLATTENED PARENTHESIS | |
MATHEMATICAL RIGHT FLATTENED PARENTHESIS | |
LEFT WHITE CURLY BRACKET | |
RIGHT WHITE CURLY BRACKET | |
LEFT WHITE PARENTHESIS | |
RIGHT WHITE PARENTHESIS | |
Z NOTATION LEFT IMAGE BRACKET | |
Z NOTATION RIGHT IMAGE BRACKET | |
Z NOTATION LEFT BINDING BRACKET | |
Z NOTATION RIGHT BINDING BRACKET | |
LEFT SQUARE BRACKET WITH UNDERBAR | |
RIGHT SQUARE BRACKET WITH UNDERBAR | |
LEFT SQUARE BRACKET WITH TICK IN TOP CORNER | |
RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER | |
LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER | |
RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER | |
LEFT ANGLE BRACKET WITH DOT | |
RIGHT ANGLE BRACKET WITH DOT | |
LEFT ARC LESS-THAN BRACKET | |
RIGHT ARC GREATER-THAN BRACKET | |
DOUBLE LEFT ARC GREATER-THAN BRACKET | |
DOUBLE RIGHT ARC LESS-THAN BRACKET | |
LEFT BLACK TORTOISE SHELL BRACKET | |
RIGHT BLACK TORTOISE SHELL BRACKET | |
LEFT WIGGLY FENCE | |
RIGHT WIGGLY FENCE | |
LEFT DOUBLE WIGGLY FENCE | |
RIGHT DOUBLE WIGGLY FENCE | |
LEFT-POINTING CURVED ANGLE BRACKET | |
RIGHT-POINTING CURVED ANGLE BRACKET | |
TOP LEFT HALF BRACKET | |
TOP RIGHT HALF BRACKET | |
BOTTOM LEFT HALF BRACKET | |
BOTTOM RIGHT HALF BRACKET | |
LEFT SIDEWAYS U BRACKET | |
RIGHT SIDEWAYS U BRACKET | |
LEFT DOUBLE PARENTHESIS | |
RIGHT DOUBLE PARENTHESIS | |
LEFT ANGLE BRACKET | |
RIGHT ANGLE BRACKET | |
LEFT DOUBLE ANGLE BRACKET | |
RIGHT DOUBLE ANGLE BRACKET | |
LEFT CORNER BRACKET | |
RIGHT CORNER BRACKET | |
LEFT WHITE CORNER BRACKET | |
RIGHT WHITE CORNER BRACKET | |
LEFT BLACK LENTICULAR BRACKET | |
RIGHT BLACK LENTICULAR BRACKET | |
LEFT TORTOISE SHELL BRACKET | |
RIGHT TORTOISE SHELL BRACKET | |
LEFT WHITE LENTICULAR BRACKET | |
RIGHT WHITE LENTICULAR BRACKET | |
LEFT WHITE TORTOISE SHELL BRACKET | |
RIGHT WHITE TORTOISE SHELL BRACKET | |
LEFT WHITE SQUARE BRACKET | |
RIGHT WHITE SQUARE BRACKET | |
SMALL LEFT PARENTHESIS | |
SMALL RIGHT PARENTHESIS | |
SMALL LEFT CURLY BRACKET | |
SMALL RIGHT CURLY BRACKET | |
SMALL LEFT TORTOISE SHELL BRACKET | |
SMALL RIGHT TORTOISE SHELL BRACKET | |
FULLWIDTH LEFT PARENTHESIS | |
FULLWIDTH RIGHT PARENTHESIS | |
FULLWIDTH LEFT SQUARE BRACKET | |
FULLWIDTH RIGHT SQUARE BRACKET | |
FULLWIDTH LEFT CURLY BRACKET | |
FULLWIDTH RIGHT CURLY BRACKET | |
FULLWIDTH LEFT WHITE PARENTHESIS | |
FULLWIDTH RIGHT WHITE PARENTHESIS | |
HALFWIDTH LEFT CORNER BRACKET | |
HALFWIDTH RIGHT CORNER BRACKET | |
SINGLE LEFT-POINTING ANGLE QUOTATION MARK | |
SINGLE RIGHT-POINTING ANGLE QUOTATION MARK | |
LEFT-POINTING DOUBLE ANGLE QUOTATION MARK | |
RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK | |
TOP PARENTHESIS | |
BOTTOM PARENTHESIS | |
TOP SQUARE BRACKET | |
BOTTOM SQUARE BRACKET | |
TOP CURLY BRACKET | |
BOTTOM CURLY BRACKET | |
TOP TORTOISE SHELL BRACKET | |
BOTTOM TORTOISE SHELL BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET | |
PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET | |
PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET | |
PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET | |
LEFT LOW PARAPHRASE BRACKET | |
RIGHT LOW PARAPHRASE BRACKET | |
LEFT RAISED OMISSION BRACKET | |
RIGHT RAISED OMISSION BRACKET | |
LEFT SUBSTITUTION BRACKET | |
RIGHT SUBSTITUTION BRACKET | |
LEFT DOTTED SUBSTITUTION BRACKET | |
RIGHT DOTTED SUBSTITUTION BRACKET | |
LEFT TRANSPOSITION BRACKET | |
RIGHT TRANSPOSITION BRACKET |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:) :=) :-) (: (-: =) (= | |
:( :=( :-( ): )-: =( )= | |
8=) 8-) B=) B-) | |
;) ;-) ;=) (; (-; | |
;( ;-( ;=( ); )-; | |
(:| | |
:"> | |
:^) | |
|-) I-) I=) | |
|( |-( |=( | |
]:) >:) | |
x( x-( x=( X( X- (X=( |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment