From 2cf8156f1c22a9e7963baeb90e6b036bc429a19f Mon Sep 17 00:00:00 2001 From: Andreas Bielawski Date: Mon, 23 Jan 2017 13:20:29 +0100 Subject: [PATCH 1/2] things --- README.md | 49 +++------------------ install-dependencies.sh | 29 ------------ install-on-uberspace.sh | 97 ----------------------------------------- 3 files changed, 6 insertions(+), 169 deletions(-) delete mode 100755 install-dependencies.sh delete mode 100755 install-on-uberspace.sh diff --git a/README.md b/README.md index 3225d9a..e04987d 100644 --- a/README.md +++ b/README.md @@ -3,62 +3,25 @@ Der multifunktionale Telegram-Bot. -[Offizielle Webseite](https://brawlbot.tk) | [Entwickler auf Telegram](http://telegram.me/Brawl) **KEIN SUPPORT!** | [Offizieller Kanal](https://telegram.me/brawlbot_updates) +[Offizielle Webseite](https://brawlbot.tk) | [Offizieller Kanal](https://telegram.me/brawlbot_updates) Brawlbot ist ein auf Plugins basierender Bot, der die [offizielle Telegram Bot API](http://core.telegram.org/bots/api) benutzt. Ursprünglich wurde er im Dezember 2014 auf Basis von Yagops [Telegram Bot](https://github.com/yagop/telegram-bot/) entwickelt, da aber die Entwicklung von tg-cli [zum Stillstand](https://brawlbot.tk/posts/ein-neuanfang) gekommen ist, wurden alle Plugins des bisher proprietären Brawlbots im Juni 2016 auf die Bot-API portiert und open-sourced. **Brawlbot v2 basiert auf [otouto](https://github.com/topkecleon/otouto) von topkecleon.** -**HINWEIS::** Ich gebe KEINEN Support für das Aufsetzen des Bots! +**HINWEIS::** Es gibt KEINEN Support für das Aufsetzen des Bots! -Brawlbot v2 ist freie Software; du darfst ihn modifizieren und weiterverbreiten, allerdings musst du dich an die GNU Affero General Public License v3 halten, siehe **LICENSE** für Details. +Brawlbot v2 ist freie Software; du darfst ihn modifizieren und weiterverbreiten, allerdings musst du dich an die GNU Affero General Public License v3 halten, siehe **LICENSE** für Details. **Das heißt, du musst den Quellcode veröffentlichen, wenn du den Bot selbst nutzt!** ##Anleitung | Für User | Für Entwickler| -|:----------------------------------------------|:------------------------------| -| [Setup](#setup) | [Plugins](#plugins) | -| [Bot steuern](#bot-steuern) | [Bindings](#bindings) | +|:---------------------------------------------|:------------------------------| +| [Bot steuern](#bot-steuern) | [Plugins](#plugins) | +| | [Bindings](#bindings) | | | [Datenbank](#datenbank) * * * # Für User -## Setup -### Uberspace -Der Bot kann mit einem einfachen Installationsskript bei [Uberspace](https://uberspace.de) gehostet werden. Führe einfach `./install-on-uberspace.sh` aus! - -### Ubuntu und Debian -Falls du Ubuntu oder Debian verwendest, kannst du einfach `./install-dependencies.sh` ausführen, damit alles installiert wird. Ergänze dann noch den `bot_api_key` und die `admin`-ID (Bekommst du in Telegram mit `@Brawlbot id`) und kopiere die config.lua.example nach config.lua. - -Für eine manuelle Installation musst du LuaRocks für 5.2 [selbst kompilieren](http://stackoverflow.com/a/20359102). - -### Setup -Du benötigst **Lua 5.2** (Lua 5.3 funktioniert NICHT!), eine aktive **Redis-Instanz** und die folgenden **LuaRocks-Module**: -* luautf8 -* luasocket -* luasec -* multipart-post -* dkjson -* lpeg -* redis-lua -* fakeredis -* oauth -* xml -* feedparser -* serpent - -Klone danach diese Repo. kopiere die `config.lua.example` nach `config.lua` und trage folgendes ein: - - - `bot_api_key`: API-Token vom BotFather - - `admin`: Deine Telegram-ID - -Starte danach den Bot mit `./launch.sh`. Um den Bot anzuhalten, führe erst `/halt` über Telegram aus. - -Beim Start werden einige Werte in die Redis-Datenbank unter `telegram:credentials` und `telegram:enabled_plugins` eingetragen. Mit `/plugins enable` kannst du Plugins aktivieren, es sind nicht alle von Haus aus aktiviert. - -Einige Plugins benötigen API-Keys, bitte gehe die einzelnen Plugins durch, bevor du sie aktivierst! - -* * * - ## Bot steuern Ein Administrator kann den Bot über folgende Plugins steuern: diff --git a/install-dependencies.sh b/install-dependencies.sh deleted file mode 100755 index 988d761..0000000 --- a/install-dependencies.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# Installiert Lua, Luarocks und andere Abhängigkeiten. Sollte auch auf Debian funktionieren. - -rocklist="luasocket luasec multipart-post lpeg dkjson redis-lua fakeredis oauth xml feedparser serpent luautf8" - -echo "Dieses Skript ist für Ubuntu, es wird wahrscheinlich auch für Debian funktionieren." -echo "Dieses Skript benötigt Root-Rechte, um folgende Pakete zu installieren:" -echo "lua5.2 liblua5.2-dev git libssl-dev fortune-mod fortunes redis-server unzip make" -echo "Es werden auch Root-Rechte benötigt, um LuaRocks in /usr/local/" -echo "mit den folgenden Rocks zu installieren:" -echo $rocklist -echo "Drücke ENTER, um fortzufahren, oder Strg-C zum Beenden." -read smth - -sudo apt-get update -sudo apt-get install -y lua5.2 liblua5.2-dev git libssl-dev fortune-mod fortunes redis-server unzip make -git clone http://github.com/keplerproject/luarocks -cd luarocks -./configure --lua-version=5.2 --versioned-rocks-dir --lua-suffix=5.2 -make build -sudo make install -for rock in $rocklist; do - sudo luarocks-5.2 install $rock -done -sudo -k -cd .. - -echo "Vorgang beendet! Nutze ./launch.sh, um den Bot zu starten." -echo "Setze vorher dein Bot-Token in der config.lua.example und kopiere sie nach config.lua." diff --git a/install-on-uberspace.sh b/install-on-uberspace.sh deleted file mode 100755 index bc754eb..0000000 --- a/install-on-uberspace.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/bash -# Dieses Skript installiert den Bot auf Uberspace. -# Lua 5.2 (falls nicht vorhanden) und LuaRocks werden installiert und Redis wird gestartet, -# zudem wird die config.lua des Bots angepasst. -SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -cd $HOME - -if [ -n "$1" ]; then - echo "Überspringe Lua" -else - # LUA 5.2 - if [ -d "/package/host/localhost/lua-5.2" ]; then - echo "export PATH=/package/host/localhost/lua-5.2/bin:\$PATH" >> $HOME/.bash_profile - INSTALLED_DIR="/package/host/localhost/lua-5.2" - else - echo "Dieser Uberspace hat kein Lua 5.2, kompiliere selbst..." - wget https://www.lua.org/ftp/lua-5.2.4.tar.gz - tar -xvf lua-5.2.*.tar.gz - rm lua-5.2.*.tar.gz - cd lua-5.2.* - make linux - if [ ! -f "src/lua" ]; then - echo "Kompilierung nicht erfolgreich. Breche ab..." - exit 1 - fi - mkdir -p $HOME/lua5.2 - make install INSTALL_TOP=$HOME/lua5.2 - echo "export PATH=\$HOME/lua5.2/bin:\$PATH" >> $HOME/.bash_profile - INSTALLED_DIR="$HOME/lua5.2" - fi - cd $HOME - rm -rf lua-5.2.* - source $HOME/.bash_profile - echo "LUA 5.2 ist installiert!" -fi - -cd $HOME - -# LuaRocks -if [ -n "$2" ]; then - echo "Überspringe LuaRocks" -else - echo "Installiere LuaRocks" - git clone http://github.com/keplerproject/luarocks luarocks-git - cd luarocks-git - ./configure --lua-version=5.2 --versioned-rocks-dir --with-lua=$INSTALLED_DIR --prefix=$HOME/luarocks - make build - make install - if [ ! -f "$HOME/luarocks/bin/luarocks-5.2" ]; then - echo "Kompilierung nicht erfolgreich. Breche ab..." - exit 1 - fi - echo "export PATH=\$HOME/luarocks/bin:\$PATH" >> $HOME/.bash_profile - cd $HOME - rm -rf luarocks-git - source $HOME/.bash_profile - luarocks-5.2 path >> $HOME/.bash_profile - source $HOME/.bash_profile - echo "Luarocks ist installiert!" -fi - -cd $HOME - -# LuaRocks-Module -if [ -n "$3" ]; then - echo "Überspringe LuaRocks-Module" -else - echo "Installiere LuaRocks-Module" - rocklist="luasocket luasec multipart-post lpeg dkjson redis-lua fakeredis oauth xml feedparser serpent luautf8" - for rock in $rocklist; do - luarocks-5.2 install $rock --local - done - echo "Alle LuaRocks-Module wurden installiert!" -fi - -cd $SCRIPTDIR - -# Redis -if [ -n "$4" ]; then - echo "Überspringe Redis" -else - echo "Setze Redis auf" - test -d ~/service || uberspace-setup-svscan - uberspace-setup-redis - # Passe Config an - NAME=$(whoami) - sed s/"use_socket = false,"/"use_socket = true,"/ config.lua.example > config.lua - sed -i s/"socket_path = 'unix:\/\/\/home\/path\/to\/your\/redis\/sock',"/"socket_path = \'unix:\/\/\/home\/$NAME\/.redis\/sock',"/g config.lua - echo "Redis aufgesetzt!" -fi - -echo "Alles fertig! Vergiss nicht, noch deinen Bot-Token und deine Telegram-ID in der config.lua zu ergänzen!" -echo "Führe bitte vorher noch einmal" -echo "source ~/.bash_profile" -echo "aus oder melde dich ab und wieder an." - -exit 0 From f3865a22076453cf8c279d71e6908c09c7d596a1 Mon Sep 17 00:00:00 2001 From: Andreas Bielawski Date: Wed, 15 Feb 2017 14:48:04 +0100 Subject: [PATCH 2/2] Nutze neue Cleverbot-API --- config.lua.example | 7 ------- otouto/plugins/cleverbot.lua | 21 ++++++++------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/config.lua.example b/config.lua.example index ce27687..2e69c76 100644 --- a/config.lua.example +++ b/config.lua.example @@ -59,12 +59,5 @@ Sende /hilfe, um zu starten max_duration = 526000, max_reminders_group = 10, max_reminders_private = 50 - }, - - cleverbot = { - cleverbot_api = 'https://brawlbot.tk/apis/chatter-bot-api/cleverbot.php?text=', - connection = 'Ich möchte jetzt nicht reden.', - response = 'Ich weiß nicht, wie ich darauf reagieren soll.' } - } diff --git a/otouto/plugins/cleverbot.lua b/otouto/plugins/cleverbot.lua index 80bc896..276b599 100644 --- a/otouto/plugins/cleverbot.lua +++ b/otouto/plugins/cleverbot.lua @@ -6,34 +6,29 @@ function cleverbot:init(config) "^[Bb]rawlbot, (.+)$", "^[Bb]ot, (.+)$" } - cleverbot.url = config.cleverbot.cleverbot_api end cleverbot.command = 'cbot ' +local BASE_URL = 'https://www.cleverbot.com/getreply' +local apikey = cred_data.cleverbot_apikey -- get your key here: https://www.cleverbot.com/api/ + function cleverbot:action(msg, config, matches) utilities.send_typing(msg.chat.id, 'typing') local text = matches[1] - local query, code = https.request(cleverbot.url..URL.escape(text)) + local query, code = https.request(BASE_URL..'?key='..apikey..'&input='..URL.escape(text)) if code ~= 200 then - utilities.send_reply(msg, config.cleverbot.connection) + utilities.send_reply(msg, config.errors.connection) return end local data = json.decode(query) - if not data.clever then - utilities.send_reply(msg, config.cleverbot.response) + if not data.output then + utilities.send_reply(msg, 'Ich möchte jetzt nicht reden...') return end - local answer = string.gsub(data.clever, "Ä", "Ä") - local answer = string.gsub(answer, "ä", "ä") - local answer = string.gsub(answer, "Ö", "Ö") - local answer = string.gsub(answer, "ö", "ö") - local answer = string.gsub(answer, "Ü", "Ü") - local answer = string.gsub(answer, "ü", "ü") - local answer = string.gsub(answer, "ß", "ß") - utilities.send_reply(msg, answer) + utilities.send_reply(msg, data.output) end return cleverbot \ No newline at end of file