minerbot2/plugins/emoji_text.py

45 lines
1.0 KiB
Python

import plugin
from bot import IRCLine
BOT = None
def say(target,msg):
BOT.socket.send(IRCLine("PRIVMSG",target,":"+msg))
class DefaultDict(dict):
def __init__(self,f,takes_args=True):
self.f = f
self.takes_args = takes_args
def __get__(self,k):
if k not in self:
if self.takes_args:
self[k]=self.f(k)
else:
self[k]=self.f()
return self[k]
PREFIX = "regional_indicator_"
mapping = dict()
for letter in "abcdefghijklmnopqrstuvwxyz":
mapping[letter]=":"+PREFIX+letter+":"
mapping["a"]=":a:"
mapping["b"]=":b:"
mapping[" "]=" "
def emojitext(event):
if not BOT: return None
channel = event.target if event.target.startswith("#") else event.hostmask.nick
words = event.parts
nick = event.hostmask.nick
try:
text = " ".join(words)
say(nick," ".join([mapping[c] for c in text]).replace(":a: :b:",":ab:"))
if channel!=nick: say(channel,nick+": PMed!")
except Exception as e:
say(nick,"ACCESS VIOLATON: "+e.__class__.__name__+": "+e.args[0])
def register(bot):
global BOT
BOT = bot
bot.event_manager.on("command_emojitext",emojitext)