From fbc58b0f7d3587bf81a735f44b46959d73b9e55a Mon Sep 17 00:00:00 2001 From: mogad0n Date: Sun, 20 Sep 2020 17:19:40 +0530 Subject: [PATCH] Initial Commit --- README.md | 1 + __init__.py | 71 +++++++++++++++++++ config.py | 56 +++++++++++++++ local/__init__.py | 1 + plugin.py | 173 ++++++++++++++++++++++++++++++++++++++++++++++ test.py | 38 ++++++++++ 6 files changed, 340 insertions(+) create mode 100644 README.md create mode 100644 __init__.py create mode 100644 config.py create mode 100644 local/__init__.py create mode 100644 plugin.py create mode 100644 test.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..19f4cfd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +A growing set of Unicode Emojis diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..2f0ac0b --- /dev/null +++ b/__init__.py @@ -0,0 +1,71 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +""" +UnicodeEmoji: A growing set of Unicode Emojis +""" + +import sys +import supybot +from supybot import world + +# Use this for the version of this plugin. +__version__ = "" + +# XXX Replace this with an appropriate author or supybot.Author instance. +__author__ = supybot.authors.unknown + +# This is a dictionary mapping supybot.Author instances to lists of +# contributions. +__contributors__ = {} + +# This is a url where the most recent plugin package can be downloaded. +__url__ = '' + +from . import config +from . import plugin +if sys.version_info >= (3, 4): + from importlib import reload +else: + from imp import reload +# In case we're being reloaded. +reload(config) +reload(plugin) +# Add more reloads here if you add third-party modules and want them to be +# reloaded when this plugin is reloaded. Don't forget to import them as well! + +if world.testing: + from . import test + +Class = plugin.Class +configure = config.configure + + +# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: diff --git a/config.py b/config.py new file mode 100644 index 0000000..d2b6261 --- /dev/null +++ b/config.py @@ -0,0 +1,56 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +from supybot import conf, registry +try: + from supybot.i18n import PluginInternationalization + _ = PluginInternationalization('UnicodeEmoji') +except: + # Placeholder that allows to run the plugin on a bot + # without the i18n module + _ = lambda x: x + + +def configure(advanced): + # This will be called by supybot to configure this module. advanced is + # a bool that specifies whether the user identified themself as an advanced + # user or not. You should effect your configuration by manipulating the + # registry as appropriate. + from supybot.questions import expect, anything, something, yn + conf.registerPlugin('UnicodeEmoji', True) + + +UnicodeEmoji = conf.registerPlugin('UnicodeEmoji') +# This is where your configuration variables (if any) should go. For example: +# conf.registerGlobalValue(UnicodeEmoji, 'someConfigVariableName', +# registry.Boolean(False, _("""Help for someConfigVariableName."""))) + + +# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: diff --git a/local/__init__.py b/local/__init__.py new file mode 100644 index 0000000..e86e97b --- /dev/null +++ b/local/__init__.py @@ -0,0 +1 @@ +# Stub so local is a module, used for third-party modules diff --git a/plugin.py b/plugin.py new file mode 100644 index 0000000..3f3e1b9 --- /dev/null +++ b/plugin.py @@ -0,0 +1,173 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +from supybot import utils, plugins, ircutils, callbacks +from supybot.commands import * +try: + from supybot.i18n import PluginInternationalization + _ = PluginInternationalization('UnicodeEmoji') +except ImportError: + # Placeholder that allows to run the plugin on a bot + # without the i18n module + _ = lambda x: x + +emoji = {'innocent':'ʘ‿ʘ', + 'disapproval':'ಠ_ಠ', + 'tableflip':'(╯°□°)╯︵ ┻━┻', + 'putbacktable':'┬─┬ ノ( ゜-゜ノ)', + 'tidy-up':'┬─┬⃰͡ (ᵔᵕᵔ͜ )', + 'double-Flip':'┻━┻ ︵ヽ(`Д´)ノ︵ ┻━┻', + 'fisticuffs':'ლ(`ー´ლ)', + 'cute-bear':'ʕ•ᴥ•ʔ', + 'squinting-bear':'ʕᵔᴥᵔʔ', + 'gtfo-bear':'ʕ •`ᴥ•´ʔ', + 'cuteface':'(。◕‿◕。)', + 'surprised':'( ゚Д゚)', + 'shrug-face':'¯\\_(ツ)_/¯', + 'meh':'¯\\(°_o)/¯', + 'feel-perky':'(`・ω・´)', + 'angry-face':'(╬ ಠ益ಠ)', + 'at-what-cost':'ლ(ಠ益ಠლ)', + 'excited':'☜(⌒▽⌒)☞', + 'running':'ε=ε=ε=┌(;*´Д`)ノ', + 'happy-face':'ヽ(´▽`)/', + 'glory':'ヽ(´ー`)ノ', + 'kitty-emote':'ᵒᴥᵒ#', + 'fido':'V•ᴥ•V', + 'meow':'ฅ^•ﻌ•^ฅ', + 'cheers':'( ^_^)o自自o(^_^ )', + 'devious':'ಠ‿ಠ', + '4chan':'( ͡° ͜ʖ ͡°)', + 'crying':'ಥ_ಥ', + 'breakdown':'ಥ﹏ಥ', + 'disagree':'٩◔̯◔۶', + 'flexing':'ᕙ(⇀‸↼‶)ᕗ', + 'do-you-even-lift-bro?':' ᕦ(ò_óˇ)ᕤ', + 'kirby':'⊂(◉‿◉)つ', + 'tripping-out':'q(❂‿❂)p', + 'discombobulated':'⊙﹏⊙', + 'sad-and-confused':'¯\\_(⊙︿⊙)_/¯', + 'japanese-lion-face':'°‿‿°', + 'confused':'¿ⓧ_ⓧﮌ', + 'confused-scratch':'(⊙.☉)7', + 'worried':'(´・_・`)', + 'dear-god-why':'щ(゚Д゚щ)', + 'staring':'٩(๏_๏)۶', + 'pretty-eyes':'ఠ_ఠ', + 'strut':'ᕕ( ᐛ )ᕗ', + 'zoned':'(⊙_◎)', + 'crazy':'ミ●﹏☉ミ', + 'trolling':'༼∵༽ ༼⍨༽ ༼⍢༽ ༼⍤༽', + 'angry-troll':'ヽ༼ ಠ益ಠ ༽ノ', + 'fuck-it':'t(-_-t)', + 'sad-face':'(ಥ⌣ಥ)', + 'hugger':'(づ ̄ ³ ̄)づ', + 'stranger-danger':'(づ。◕‿‿◕。)づ', + 'flip-friend':'(ノಠ ∩ಠ)ノ彡( \\o°o)\\', + 'cry-face':'。゚( ゚இ‸இ゚)゚。', + 'cry-troll':'༼ ༎ຶ ෴ ༎ຶ༽', + 'tgif':'“ヽ(´▽`)ノ”', + 'dancing':'┌(ㆆ㉨ㆆ)ʃ', + 'sleepy':'눈_눈', + 'angry-birds':'( ఠൠఠ )ノ', + 'no-support':'乁( ◔ ౪◔)「 ┑( ̄Д  ̄)┍', + 'shy':'(๑•́ ₃ •̀๑)', + 'fly-away':'⁽⁽ଘ( ˊᵕˋ )ଓ⁾⁾', + 'careless':'◔_◔', + 'love':'♥‿♥', + 'ididit':'ԅ(≖‿≖ԅ)', + 'kissing':'( ˘ ³˘)♥', + 'shark-face':'( ˇ෴ˇ )', + 'emo-dance':'ヾ(-_- )ゞ', + 'dance':'♪♪ ヽ(ˇ∀ˇ )ゞ', + 'opera':'ヾ(´〇`)ノ♪♪♪', + 'winnie-the-pooh':'ʕ •́؈•̀)', + 'boxing':'ლ(•́•́ლ)', + 'fight':"(ง'̀-'́)ง", + 'headphones':'◖ᵔᴥᵔ◗ ♪ ♫', + 'robot':'{•̃_•̃}', + 'seal':'(ᵔᴥᵔ)', + 'questionable':'(Ծ‸ Ծ)', + 'winning':'(•̀ᴗ•́)و ̑̑', + 'zombie':'[¬º-°]¬', + 'pointing':'(☞゚ヮ゚)☞', + 'whistling':'(っ•́。•́)♪♬', + 'injured':'(҂◡_◡)', + 'creeper':'ƪ(ړײ)‎ƪ​​', + 'eye-roll':'⥀.⥀', + 'flying':'ح˚௰˚づ', + 'cannotunsee':'♨_♨', + 'looking-down':'(._.)', + 'imahugger':'(⊃。•́‿•̀。)⊃', + 'wizard':'(∩`-´)⊃━☆゚.*・。゚', + 'yum':'(っ˘ڡ˘ς)', + 'judging':'( ఠ ͟ʖ ఠ)', + 'tired':'( ͡ಠ ʖ̯ ͡ಠ)', + 'dislike':'( ಠ ʖ̯ ಠ)', + 'hitchhiking':'(งツ)ว', + 'satisfied':'(◠﹏◠)', + 'sadcry':'(ᵟຶ︵ ᵟຶ)', + 'stunna-shades':'(っ▀¯▀)つ', + 'chicken':'ʚ(•`', + 'barf':'(´ж`ς)', + 'fuck-off':'(° ͜ʖ͡°)╭∩╮', + 'smiley-toast':'ʕʘ̅͜ʘ̅ʔ', + 'exorcism':'ح(•̀ж•́)ง †', + 'love':'-`ღ´-', + 'taking-a-dump':'(⩾﹏⩽)', + 'dab':'ヽ( •_)ᕗ', + 'wave-dance':'~(^-^)~', + 'happy-hug':'\\(ᵔᵕᵔ)/', + 'resting-my-eyes':'ᴖ̮ ̮ᴖ', + 'peepers':'ಠಠ', + 'judgemental':'{ಠʖಠ}', + } + + +class UnicodeEmoji(callbacks.Plugin): + """A growing set of Unicode Emojis""" + + def e(self, irc, msg, args, emote): + """ + + Prints the Unicode emoji as listed here https://gist.github.com/mogad0n/476c3880dc0e0a059ed03efa265e50f7 + """ + + re = emoji[emote] + irc.reply('%s' % re, msg=msg, prefixNick=False ) + + e = wrap(e, ['text']) + + +Class = UnicodeEmoji + + + +# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79: diff --git a/test.py b/test.py new file mode 100644 index 0000000..b741b54 --- /dev/null +++ b/test.py @@ -0,0 +1,38 @@ +### +# Copyright (c) 2020, mogad0n +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions, and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions, and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author of this software nor the name of +# contributors to this software may be used to endorse or promote products +# derived from this software without specific prior written consent. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +### + +from supybot.test import * + + +class UnicodeEmojiTestCase(PluginTestCase): + plugins = ('UnicodeEmoji',) + + +# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: