summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorailin-nemui2016-09-22 17:15:32 +0200
committerGitHub2016-09-22 17:15:32 +0200
commit14a110ff3bbbc106ebff3548324abd6a40b86bdb (patch)
tree8b054206c5df278c6a5f4f0396434a27e46171de /scripts
parent2dc30a0db0d7aa337e4057fcac6d9e61d7f42520 (diff)
parent909f44022ca94d2633fbc5d27e0daa0ce79d526c (diff)
downloadscripts.irssi.org-14a110ff3bbbc106ebff3548324abd6a40b86bdb.tar.bz2
Merge pull request #308 from rud01f/rud_emotes
added rud_emotes.pl
Diffstat (limited to 'scripts')
-rw-r--r--scripts/rud_emotes.pl157
1 files changed, 157 insertions, 0 deletions
diff --git a/scripts/rud_emotes.pl b/scripts/rud_emotes.pl
new file mode 100644
index 0000000..e783d75
--- /dev/null
+++ b/scripts/rud_emotes.pl
@@ -0,0 +1,157 @@
+# Copyright (C) 2015 Dawid Lekawski
+# contact: xxrud0lf@gmail.com
+#
+# --- INFORMATION ---
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# --- END OF INFORMATION ---
+#
+# Emote script - replace :emote_name: in your sent messages into predefined
+# emotes (mostly but not limited to unicode). Result is visible both for you
+# and channel/query target users.
+#
+# Feel free to modify or add your own ones!
+#
+# (that's a lot of "emote" word, isn't it?)
+#
+# commands:
+#
+# - /emotes - shows list of emotes in status window
+#
+# notes:
+#
+# - script doesn't work with /msg target text; must be typed in a channel
+# or query window
+#
+# - Ctrl+O (ascii 15) at the beggining of your text turns off emote replacing
+# for this text
+#
+# - remeber to escape "\" characters in emotes (just type it twice -> "\\"),
+# take a look at 'shrug' emote for reference
+#
+
+use strict;
+use warnings;
+use utf8;
+
+use Irssi qw(signal_add signal_continue command_bind);
+
+our $VERSION = "1.00";
+our %IRSSI = (
+ authors => "Dawid 'rud0lf' Lekawski",
+ contact => 'rud0lf/IRCnet; rud0lf/freenode; xxrud0lf@gmail.com',
+ name => 'emotes script',
+ description => 'Replaces :emote_name: text in your sent messages into pre-defined emotes (unicode mostly).',
+ license => 'GPLv3'
+);
+
+my $pattern = '';
+my %emotes = (
+ 'huh', '°-°',
+ 'lenny', '( ͡° ͜ʖ ͡°)',
+ 'shrug', '¯\\_(ツ)_/¯',
+ 'smile', '☺',
+ 'sad', '☹',
+ 'heart', '♥',
+ 'note', '♪',
+ 'victory', '✌',
+ 'coffee', '☕',
+ 'kiss', '💋',
+ 'inlove', '♥‿♥',
+ 'annoyed', '(¬_¬)',
+ 'bear', 'ʕ•ᴥ•ʔ',
+ 'animal', '(•ω•)',
+ 'happyanimal', '(ᵔᴥᵔ)',
+ 'strong', 'ᕙ(⇀‸↼‶)ᕗ',
+ 'happyeyeroll', '◔ ⌣ ◔',
+ 'tableflip', '(╯°□°)╯︵ ┻━┻',
+ 'tableback', '┬──┬ ノ( ゜-゜ノ)',
+ 'tm', '™',
+ 'birdflip', '╭∩╮(-_-)╭∩╮',
+ 'lolshrug', '¯\\(°_o)/¯',
+ 'shades', '(⌐■_■)',
+ 'smoke', '🚬',
+ 'poop', '💩',
+ 'drops', '💦',
+ 'yuno', 'щ(゚Д゚щ)',
+ 'dead', '✖_✖',
+ 'wtf', '☉_☉',
+ 'disapprove', '๏̯͡๏',
+ 'wave', '(•◡•)/',
+ 'shock', '⊙▃⊙',
+ 'wink', '◕‿↼',
+ 'gift', '(´・ω・)っ由',
+ 'success', '(•̀ᴗ•́)و',
+ 'whatever', '◔_◔'
+);
+
+sub init {
+ $pattern = join('|', keys %emotes);
+ if ($pattern eq '') {
+ $pattern = '!?';
+ }
+}
+
+sub process_emotes {
+ my ($line) = @_;
+
+ # don't process line starting with Ctrl+O (ascii 15)
+ if ($line =~ /^\x0f/) {
+ return $line;
+ }
+
+ $line =~ s/:($pattern):/$emotes{$1}/g;
+
+ return $line;
+}
+
+sub sig_send_text {
+ my ($line, $server, $witem) = @_;
+
+ return unless ($witem);
+ return unless ($witem->{type} eq "CHANNEL" or $witem->{type} eq "QUERY");
+
+ my $newline = process_emotes($line);
+ signal_continue($newline, $server, $witem);
+}
+
+sub pad {
+ my ($txt, $cnt) = @_;
+
+ if (length($txt) >= $cnt) {
+ return $txt;
+ }
+
+ $txt .= " " x ($cnt - length($txt));
+ return $txt;
+}
+
+sub cmd_emotes {
+ my ($data, $server, $witem) = @_;
+
+ Irssi::print('List of emotes:', MSGLEVEL_CLIENTCRAP);
+ foreach my $key (sort(keys %emotes)) {
+ my $emote = $emotes{$key};
+ Irssi::print('* '. pad($key, 15) . ' : ' . $emote, MSGLEVEL_CLIENTCRAP);
+ }
+ Irssi::print('Total of '.scalar(keys %emotes).' emotes.', MSGLEVEL_CLIENTCRAP);
+}
+
+init();
+
+signal_add("send text", "sig_send_text");
+command_bind("emotes", "cmd_emotes");
+
+