From 00c5e4be8ecfa8c4f14f13c512fffdbfd1aadeb5 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Fri, 22 Mar 2019 12:20:02 -0400 Subject: [PATCH] insults and rslap --- bash/.bashrc | 6 + fish/.config/fish/config.fish | 3 + .../fish/functions/postexec_insult.fish | 12 + fish/insults.txt | 49 +++ weechat/.weechat/perl/autoload/rslap.pl | 1 + weechat/.weechat/perl/rslap.pl | 309 ++++++++++++++++++ weechat/.weechat/rslap | 12 + 7 files changed, 392 insertions(+) create mode 100644 fish/.config/fish/functions/postexec_insult.fish create mode 100644 fish/insults.txt create mode 120000 weechat/.weechat/perl/autoload/rslap.pl create mode 100644 weechat/.weechat/perl/rslap.pl create mode 100644 weechat/.weechat/rslap diff --git a/bash/.bashrc b/bash/.bashrc index 099cc58..a6e8305 100755 --- a/bash/.bashrc +++ b/bash/.bashrc @@ -132,6 +132,12 @@ shopt -s autocd # MY STUFF!! +suicidePostCommand() { + if [ $? -ne 0 ]; then + echo "$(tput setaf 3)====$(tput setaf 1)$(tput bold)$(echo -n $(shuf -n1 ~/insults.txt))$(tput sgr0)$(tput setaf 3)====$(tput sgr0)" + fi +} +PROMPT_COMMAND=suicidePostCommand [ -r /home/ben/.byobu/prompt ] && . /home/ben/.byobu/prompt #byobu-prompt# diff --git a/fish/.config/fish/config.fish b/fish/.config/fish/config.fish index e1f81bd..7c8372c 100755 --- a/fish/.config/fish/config.fish +++ b/fish/.config/fish/config.fish @@ -33,3 +33,6 @@ end set -x BBJ_USER $USER +# load postexec_insult +postexec_insult + diff --git a/fish/.config/fish/functions/postexec_insult.fish b/fish/.config/fish/functions/postexec_insult.fish new file mode 100644 index 0000000..7bdfa3a --- /dev/null +++ b/fish/.config/fish/functions/postexec_insult.fish @@ -0,0 +1,12 @@ +# Defined in /tmp/fish.QnvktC/postexec_insult.fish @ line 2 +function postexec_insult --on-event fish_postexec + if test $status -ne 0 + set_color red + echo -n ===== + set_color magenta + echo -n (shuf -n1 ~/insults.txt) + set_color red + echo ===== + set_color normal + end +end diff --git a/fish/insults.txt b/fish/insults.txt new file mode 100644 index 0000000..01ae36d --- /dev/null +++ b/fish/insults.txt @@ -0,0 +1,49 @@ +Just what do you think you're doing Dave? +It can only be attributed to human error. +That's something I cannot allow to happen. +My mind is going. I can feel it. +Sorry about this, I know it's a bit silly. +Take a stress pill and think things over. +This mission is too important for me to allow you to jeopardize it. +We'll all be murdered in our beds! +You can't come in. Our tiger has got flu +What, what, what, what, what, what, what, what, what, what? +You can't get the wood, you know. +... and it used to be so popular... +Pauses for audience applause, not a sausage +Hold it up to the light --- not a brain in sight! +There's a lot of it about, you know. +You do that again and see what happens... +Harm can come to a young lad like that! +And with that remarks folks, the case of the Crown vs yourself was proven. +Speak English you fool --- there are no subtitles in this scene. +It's only your word against mine. +I think ... err ... I think ... I think I'll go home +My pet ferret can type better than you! +Your mind just hasn't been the same since the electro-shock, has it? +Maybe if you used more than just two fingers... +BOB says: You seem to have forgotten your passwd, enter another! +I can't hear you -- I'm using the scrambler. +The more you drive -- the dumber you get. +Listen, burrito brains, I don't have time to listen to this trash. +I've seen penguins that can type better than that. +Have you considered trying to match wits with a rutabaga? +You speak an infinite deal of nothing +no authentication methods +Authentication methods: +I feel much better now. +You silly, twisted boy you. +He has fallen in the water! +I don't wish to know that. +You'll starve! +Have a gorilla... +There must be cure for it! +Ying Tong Iddle I Po +You gotta go owwwww! +I have been called worse. +Wrong! You cheating scum! +No soap, honkie-lips. +Where did you learn to type? +Are you on drugs? +You type like I drive. +Do you think like you type? diff --git a/weechat/.weechat/perl/autoload/rslap.pl b/weechat/.weechat/perl/autoload/rslap.pl new file mode 120000 index 0000000..ca21dec --- /dev/null +++ b/weechat/.weechat/perl/autoload/rslap.pl @@ -0,0 +1 @@ +../rslap.pl \ No newline at end of file diff --git a/weechat/.weechat/perl/rslap.pl b/weechat/.weechat/perl/rslap.pl new file mode 100644 index 0000000..0229c11 --- /dev/null +++ b/weechat/.weechat/perl/rslap.pl @@ -0,0 +1,309 @@ +# +# rslap.pl - Random slap strings for weechat 0.3.0 +# Version 1.3.1 +# +# Let's you /slap a nick but with a random string +# Customisable via the 'rslap' file in your config dir +# The rslap file is plain text, with one message per line +# Use '$nick' to denote where a nick should go +# +# Usage: +# /rslap [ +# Slaps with a random slap, entry will use that entry +# number instead of a random one +# +# /rslap_info +# This tells you how many messages there are, and prints them +# +# /rslap_add +# /rslap_remove +# Adds / removes string/id from the available list and attempts +# to update the rslap file +# +# /set plugins.var.perl.rslap.slapback +# Sets the slapback, takes "off", "on/random", or "n" where n +# is a valid entry number + +# History: +# 2010-12-30, KenjiE20 : +# v1.3.1 -fix: uninitialised variable error +# 2010-04-25, KenjiE20 : +# v1.3 -feature: Ability to add/remove entries +# -feature: Can specify which string /rslap will use +# -feature: Slapback with specified/random string +# 2009-08-10, KenjiE20 : +# v1.2: Correct /help format to match weechat base +# 2009-07-28, KenjiE20 : +# v1.1: -fix: Make file loading more robust +# and strip out comments/blank lines +# 2009-07-09, KenjiE20 : +# v1.0: Initial Public Release + +# Copyright (c) 2009-2010 by KenjiE20 +# +# 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 . +# + +weechat::register("rslap", "KenjiE20", "1.3.1", "GPL3", "Slap Randomiser", "", ""); + +$file = weechat::info_get("weechat_dir", "")."/rslap"; +my @lines; +$lastrun = 0; +$rslap_slapback_hook = 0; +rslap_start(); +rslap_slapback_toggle("","",weechat::config_get_plugin ("slapback")); + +sub rslap_start +{ + if (-r $file) + { + weechat::hook_command("rslap", "Slap a nick with a random string", "nickname [entry]", "nickname: Nick to slap\n entry: which entry number to use (/rslap_info for the list)\n\n /set plugins.var.perl.rslap.slapback\n Sets the slapback, takes \"off\", \"on/random\", or \"n\" where n is a valid entry number", "%(nicks)", "rslap", ""); + weechat::hook_command("rslap_info", "Prints out the current strings /rslap will use", "", "", "", "rslap_info", ""); + weechat::hook_command("rslap_add", "Add a new slap entry", "[slap string]", "", "", "rslap_add", ""); + weechat::hook_command("rslap_remove", "Remove a slap entry", "[entry number]", "", "", "rslap_remove", ""); + + weechat::hook_config("plugins.var.perl.rslap.slapback", "rslap_slapback_toggle", ""); + + if (!(weechat::config_is_set_plugin ("slapback"))) + { + weechat::config_set_plugin("slapback", "off"); + } + + open FILE, $file; + @lines = ; + close (FILE); + + foreach (@lines) + { + s/^#.*$//; + chomp; + } + @lines = grep /\S/, @lines; + } + else + { + rslap_make_file(); + } + return weechat::WEECHAT_RC_OK; +} + +sub rslap_info +{ + weechat::print ("", "Number of available strings: ".weechat::color("bold").@lines.weechat::color("-bold")."\n"); + $max_align = length(@lines); + $count = 1; + foreach (@lines) + { + weechat::print ("","\t ".(" " x ($max_align - length($count))).$count.": ".$_."\n"); + $count++; + } + return weechat::WEECHAT_RC_OK; +} + +sub rslap_add +{ + my $text = $_[2] if ($_[2]); + if ($text) + { + push (@lines, $text); + weechat::print("", "Added entry ".@lines." as: \"".$text."\""); + rslap_update_file(); + return weechat::WEECHAT_RC_OK; + } + else + { + return weechat::WEECHAT_RC_OK; + } +} + +sub rslap_remove +{ + my $entry = $_[2] if ($_[2]); + if ($entry =~ m/^\d+/) + { + $entry--; + if ($lines[$entry]) + { + $removed = $lines[$entry]; + $lines[$entry] = ''; + @lines = grep /\S/, @lines; + weechat::print("", "Removed entry ".weechat::color("bold").($entry + 1).weechat::color("-bold")." (".$removed.")"); + rslap_update_file(); + return weechat::WEECHAT_RC_OK; + } + else + { + weechat::print ("", weechat::prefix("error")."Not a valid entry"); + } + } + else + { + return weechat::WEECHAT_RC_OK; + } +} + +sub rslap_slapback_toggle +{ + $point = $_[0]; + $name = $_[1]; + $value = $_[2]; + + if ($value eq "off") + { + if ($rslap_slapback_hook) + { + weechat::unhook($rslap_slapback_hook); + $rslap_slapback_hook = 0; + } + } + elsif ($value ne "off") + { + if (!$rslap_slapback_hook) + { + $rslap_slapback_hook = weechat::hook_print("", "", "", 1, "rslap_slapback_cb", ""); + } + } + return weechat::WEECHAT_RC_OK; +} + +sub rslap +{ + $buffer = $_[1]; + $args = $_[2]; + if (weechat::buffer_get_string($buffer, "plugin") eq "irc") + { + ($nick, $number) = split(/ /,$args); + if ($nick eq "") + { + weechat::print ("", weechat::prefix("error")."No nick given"); + } + else + { + if (defined $number && $number =~ m/^\d+$/) + { + $number--; + if (!$lines[$number]) + { + weechat::print ($buffer, weechat::prefix("error")."Not a valid entry"); + return weechat::WEECHAT_RC_OK; + } + } + else + { + $number = int(rand(@lines)); + } + $str = $lines[$number]; + $str =~ s/\$nick/$nick/; + $lastrun = time; + weechat::command ($buffer, "/me ".$str); + } + } + else + { + weechat::print ($buffer, weechat::prefix("error")."Must be used on an IRC buffer"); + } + return weechat::WEECHAT_RC_OK; +} + +sub rslap_slapback_cb +{ + $cb_datap = $_[0]; + $cb_bufferp = $_[1]; + $cb_date = $_[2]; + $cb_tags = $_[3]; + $cb_disp = $_[4]; + $cb_high = $_[5]; + $cb_prefix = $_[6]; + $cb_msg = $_[7]; + + $bufname = weechat::buffer_get_string($cb_bufferp, 'name'); + # Only do something if a) IRC message b) is an action c) displayed and d) is a channel + if ($cb_tags =~ /irc_privmsg/ && $cb_tags =~ /irc_action/ && $cb_disp eq "1" && $bufname =~ /.*\.[#&\+!].*/) + { + # Anti-recursive + if ((time - $lastrun) < 10) + { + return weechat::WEECHAT_RC_OK; + } + # Strip colour + $cb_msg = weechat::string_remove_color($cb_msg, ""); + # Snip sender from message + $from_nick = substr($cb_msg, 0, index($cb_msg, " ")); + $cb_msg = substr($cb_msg, length($from_nick)); + # check for our nick and slap in message + $cur_nick = weechat::buffer_get_string($cb_bufferp, "localvar_nick"); + if ($from_nick ne $cur_nick && $cb_msg =~ /slap/ && $cb_msg =~ /\s$cur_nick(\s|$)/) + { + if (weechat::config_get_plugin("slapback") =~ m/^\d+$/) + { + rslap("", $cb_bufferp, $from_nick." ".weechat::config_get_plugin("slapback")); + } + else + { + rslap("", $cb_bufferp, $from_nick); + } + } + } + return weechat::WEECHAT_RC_OK; +} + +sub rslap_make_file +{ + weechat::print ("", "Attempting to create default file at: $file"); + + open FILE, ">", $file; + $defs = "slaps \$nick around a bit with a large trout\n". + "gives \$nick a clout round the head with a fresh copy of WeeChat\n". + "slaps \$nick with a large smelly trout\n". + "breaks out the slapping rod and looks sternly at \$nick\n". + "slaps \$nick's bottom and grins cheekily\n". + "slaps \$nick a few times\n". + "slaps \$nick and starts getting carried away\n". + "would slap \$nick, but is not being violent today\n". + "gives \$nick a hearty slap\n". + "finds the closest large object and gives \$nick a slap with it\n". + "likes slapping people and randomly picks \$nick to slap\n". + "dusts off a kitchen towel and slaps it at \$nick"; + print FILE $defs; + close (FILE); + if (!(-r $file)) + { + weechat::print ("", weechat::prefix("error")."Problem creating file: $file\n". + weechat::prefix("error")."Make sure you can write to the location."); + return weechat::WEECHAT_RC_ERROR; + } + else + { + weechat::print ("", "File created at: $file successfully"); + rslap_start(); + return weechat::WEECHAT_RC_OK; + } +} + +sub rslap_update_file +{ + $defs = ''; + foreach (@lines) + { + $defs = $defs."\n".$_; + } + unless(open (FILE, ">", $file)) + { + weechat::print ("", weechat::prefix("error")."Cannot write to file: $file"); + return weechat::WEECHAT_RC_ERROR; + } + print FILE $defs; + close (FILE); + return weechat::WEECHAT_RC_OK; +} diff --git a/weechat/.weechat/rslap b/weechat/.weechat/rslap new file mode 100644 index 0000000..ff971a6 --- /dev/null +++ b/weechat/.weechat/rslap @@ -0,0 +1,12 @@ +slaps $nick around a bit with a large trout +gives $nick a clout round the head with a fresh copy of WeeChat +slaps $nick with a large smelly trout +breaks out the slapping rod and looks sternly at $nick +slaps $nick's bottom and grins cheekily +slaps $nick a few times +slaps $nick and starts getting carried away +would slap $nick, but is not being violent today +gives $nick a hearty slap +finds the closest large object and gives $nick a slap with it +likes slapping people and randomly picks $nick to slap +dusts off a kitchen towel and slaps it at $nick \ No newline at end of file