diff --git a/sblorgo.sh b/sblorgo.sh
new file mode 100755
index 0000000..f5c785e
--- /dev/null
+++ b/sblorgo.sh
@@ -0,0 +1,188 @@
+#!/bin/bash
+# sblorgo - simple irc bot
+# Copyright (C) 2022 jornmann & contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+version="0.1dev"
+
+server="irc.libera.chat"
+chan="#ff"
+path="$HOME/sblorgo/fifo/${server}/"
+prefix=":"
+
+printf "\n\
+ '|| '||\`\n\
+ || || \n\
+('''' ||''|, || .|''|, '||''| .|''|, .|''|,\n\
+ \`'') || || || || || || || || || ||\n\
+\`...' .||..|' .||. \`|..|' .||. \`|..|| \`|..|'\n\
+ ||\n\
+ \`..|'\n"
+printf "version: $version\n\n\
+server: $server\n\
+channel: $chan\n\
+path: $path\n\
+prefix: $prefix\n\n"
+
+send() {
+ printf "$1\n" >> "${path}${chan}/in"
+ printf "\e[32m[sent]\e[39m $1\n"
+}
+
+nsend() {
+ export message="${message}$1"
+}
+
+echo "/j $chan" >> "${path}/in" && printf "\e[34m[sys]\e[39m joined $chan\n"
+
+tail -n 1 -f "${path}${chan}/out" | while read -r line; do
+ cmd=$(printf '%s\n' "$line" | cut -d ' ' -f 3)
+ name=$(printf '%s\n' "$line" | cut -d ' ' -f 2 | tr -d '<>')
+ if [ "$name" = "jorngirl" ]; then
+ if [ "${cmd:0:1}" = "${prefix}" ]; then
+ send "Fuck off."
+ cmd="poop"
+ fi
+ fi
+ if [ "${cmd:0:1}" = "${prefix}" ]; then
+ printf "\e[31m[cmd]\e[39m $name used command $cmd\n"
+ fi
+ case "$cmd" in
+ "${prefix}hey")
+ send "$name: Hello!"
+ ;;
+ "${prefix}coffee")
+ arg=$(printf '%s\n' "$line" | cut -d ' ' -f 4-)
+ [ "$arg" = "" ] && send "$name drinks some coffee." || send "$name hands $arg a cup of coffee."
+ ;;
+ "${prefix}tea")
+ arg=$(printf '%s\n' "$line" | cut -d ' ' -f 4-)
+ [ "$arg" = "" ] && send "$name drinks some tea." || send "$name hands $arg a cup of tea."
+ ;;
+ "${prefix}fortune")
+ send "$name: $(fortune -s)"
+ ;;
+ "${prefix}uptime")
+ send "$name: $(uptime -p)"
+ ;;
+ "${prefix}about")
+ send "$name: sblorgo ${version}\nwritten by jornmann for #ff\n"
+ ;;
+ "${prefix}rr")
+ if (("$RANDOM % 6 + 1" == "1")); then
+ send "$name: BANG!! You're dead!"
+ echo "/KICK $chan $name" >> "${path}/in"
+ else
+ send "$name: click..."
+ fi
+ ;;
+ "${prefix}coinflip")
+ if (("$RANDOM % 2 + 1" == "1")); then
+ send "$name: Heads."
+ else
+ send "$name: Tails."
+ fi
+ ;;
+ "${prefix}dice")
+ send "$name rolled a $((RANDOM % 6 + 1))."
+ ;;
+ "${prefix}help")
+ send "$name: commands: coffee, tea, fortune, uptime, about, rr, coinflip, dice, uname, time, penis, hey, ping, test, 8ball, grep, help"
+ ;;
+ "${prefix}penis")
+ arg=$(printf '%s\n' "$line" | cut -d ' ' -f 4-)
+ length="$(($RANDOM % 16))"
+ [ "$arg" = "" ] && export message="${name}'s penis: c" || export message="${name}: ${arg}'s penis: c"
+ # I know this is a shitty way to do it, but it works.
+ # TODO: Make this not terrible!
+ case "$length" in
+ "1") nsend "=" ;;
+ "2") nsend "==" ;;
+ "3") nsend "===" ;;
+ "4") nsend "====" ;;
+ "5") nsend "=====" ;;
+ "6") nsend "======" ;;
+ "7") nsend "=======" ;;
+ "8") nsend "========" ;;
+ "9") nsend "=========" ;;
+ "10") nsend "==========" ;;
+ "11") nsend "===========" ;;
+ "12") nsend "============" ;;
+ "13") nsend "=============" ;;
+ "14") nsend "==============" ;;
+ "15") nsend "===============" ;;
+ "16") nsend "================" ;;
+ esac
+ [ "$arg" = "CtrlHD" ] && send "CtrlHD's penis: you really think he has one?" || send "${message}3"
+ ;;
+# "${prefix}search")
+# arg=$(printf '%s\n' "$line" | cut -d ' ' -f 4-)
+# search=$(curl -s 'http://donut.gq:8080/search?q="${arg}"' | grep '"result-1"' | sed 's/.*aria-labelledby="result-1">// ; s/// ; s/<\/span>// ; s/<\/a>.*//')
+# send "$name: $search"
+# ;;
+ "${prefix}uname")
+ send "$name: $(uname -a)"
+ ;;
+ "${prefix}time")
+ send "$name: $(date +%s)"
+ ;;
+ "${prefix}ping")
+ send "$name: Pong!"
+ ;;
+ "${prefix}test")
+ arg=$(printf '%s\n' "$line" | cut -d ' ' -f 4-)
+ if [ ! "$arg" = "" ]; then
+ if (("$RANDOM % 2 + 1" == "1")); then
+ send "$name: Checking if $arg... [ OK ]"
+ else
+ send "$name: Checking if $arg... [ FAILED ]"
+ fi
+ else
+ send "$name: You need an argument for this!"
+ fi
+ ;;
+ "${prefix}8ball")
+ case "$(($RANDOM % 19))" in
+ "0") send "$name: It is certain." ;;
+ "1") send "$name: It is decidedly so." ;;
+ "2") send "$name: Without a doubt." ;;
+ "3") send "$name: Yes definitely." ;;
+ "4") send "$name: You may rely on it." ;;
+ "5") send "$name: As I see it, yes." ;;
+ "6") send "$name: Most likely." ;;
+ "7") send "$name: Outlook good." ;;
+ "8") send "$name: Yes." ;;
+ "9") send "$name: Signs point to yes." ;;
+ "10") send "$name: Reply hazy, try again." ;;
+ "11") send "$name: Ask again later." ;;
+ "12") send "$name: Better not tell you now." ;;
+ "13") send "$name: Cannot predict now." ;;
+ "14") send "$name: Concentrate and try again." ;;
+ "15") send "$name: Don't count on it." ;;
+ "16") send "$name: My reply is no." ;;
+ "17") send "$name: My sources say no." ;;
+ "18") send "$name: Outlook not so good." ;;
+ "19") send "$name: Very doubtful." ;;
+ esac
+ ;;
+ "${prefix}grep")
+ arg=$(printf '%s\n' "$line" | cut -d ' ' -f 4-)
+ results=$(cut -b 12- "${path}${chan}/out" | grep -i "${arg}" | tail -n 6 | sed '$d')
+ [ "$results" = "" ] \
+ && send "$name: no results for '$arg'" \
+ || send "$name: $results"
+ ;;
+ esac
+done
diff --git a/start.sh b/start.sh
new file mode 100755
index 0000000..0520af5
--- /dev/null
+++ b/start.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+# sblorgo start - start ii for sblorgo
+# Copyright (C) jornmann & contributors
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+server="irc.libera.chat"
+name="sblorgo"
+path="$HOME/sblorgo/fifo"
+port="6667"
+realname="an IRC bot by jornmann"
+
+ii -s "$server" -n "$name" -i "$path" -p "$port" -f "$realname"