Giter Site home page Giter Site logo

yamathedestroyer / hiddenbot-v1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from topkecleon/otouto

0.0 1.0 0.0 1.18 MB

Hiddenbot, der Fork von Brawlbot

Home Page: http://HiddenDatabase.de.tl

License: GNU Affero General Public License v3.0

Shell 0.03% Lua 99.97%

hiddenbot-v1's Introduction

HiddenBotV1

Der multifunktionale Telegram-Bot.

Offizielle Webseite | Entwickler auf Telegram KEIN SUPPORT! |

HiddenBot ist ein auf Plugins basierender Bot, der die offizielle Telegram Bot API benutzt. HiddenBotV1 basiert auf Brawlbot von Brawl345.

HINWEIS:: Ich gebe KEINEN Support für das Aufsetzen des Bots!

Hiddenbot 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.

##Anleitung

Für User Für Entwickler
Setup Plugins
Bot steuern Bindings
Datenbank

Für User

Setup

Ubuntu und Debian

Ubuntu und Debian liefern Luarocks nur für Lua 5.1 aus. Um Luarocks für Lua 5.2 zu verwenden, folge bitte der Anleitung auf StackOverflow.

Setup

Du benötigst Lua 5.2+, eine aktive Redis-Instanz und die folgenden LuaRocks-Module:

  • 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:

Plugin Kommando Funktion
banhammer.lua Siehe /hilfe banhammer Blockt User vom Bot und kann Whitelist aktivieren
control.lua /restart Startet den Bot neu
/halt Speichert die Datenbank und stoppt den Bot
/script Führt mehrere Kommandos aus, getrennt mit Zeilenumbrüchen
luarun.lua /lua Führt LUA-Kommandos aus
plugins.lua /plugins enable/disable Aktiviert/deaktiviert Plugins
shell.lua /sh Führt Shell-Kommandos aus

Gruppenadministration über tg-cli

Dieses Feature wird in Brawlbot nicht unterstützt.


Liste aller Plugins

#Für Entwickler

Plugins

Brawlbot benutzt ein Plugin-System, ähnlich Yagops Telegram-Bot.

Ein Plugin kann zehn Komponenten haben, aber nur zwei werden benötigt:

Komponente Beschreibung Benötigt?
plugin:action Hauptfunktion. Benötigt msg als Argument, empfohlen wird auch matches als drittes Argument nach config J
plugin.triggers Tabelle von Triggern (Lua-Patterns), auf die der Bot reagiert J
plugin.inline_triggers Tabelle von Triggern (Lua-Patterns), auf die der Bot bei Inline-Querys reagiert N
plugin:init Optionale Funkion, die beim Start geladen wird N
plugin:cron Wird jede Minute ausgeführt N
plugin.command Einfaches Kommando mit Syntax. Wird bei /hilfe gelistet N
plugin.doc Plugin-Hilfe. Wird mit /help $kommando gelistet N
plugin.error Plugin-spezifische Fehlermeldung N
plugin:callback Aktion, die ausgeführt wird, nachdem auf einen Callback-Button gedrückt wird. Siehe gImages.lua für ein Beispiel. Argumente: callback (enthält Callback-Daten), msg, self, config, input (enthält Parameter ohne callback) N
plugin:inline_callback Aktion, die ausgeführt wird, wenn der Bot per Inline-Query ausgelöst wird. Argumente sind inline_query für die Daten, config und matches N

Diebot:on_msg_receive Funktion fügt einige nützte Variablen zur msg Tabelle hinzu. Diese sind:msg.from.id_str, msg.to.id_str, msg.chat.id_str, msg.text_lower, msg.from.name.

Interaktionen mit der Bot-API sind sehr einfach. Siehe Bindings für Details.

Einige Funktionen, die oft benötigt werden, sind in utilites.lua verfügbar.


Bindings

Die Telegram-API wird mithilfe der binding.lua über die multipart-post Library kontaktiert. Brawlbots Bindings-Datei unterstützt alle Standard API-Methoden und Argumente. Die Hauptufnktion bindings.request akzeptiert drei Parameter: method, parameters und file. Bevor du die Bindings-Datei nutzt, initialisiere das Modul mit der init-Funktion, wobei der Bot-Token als Argument übergeben werden sollte.

method ist der Name der API-Methode (bspw. sendMessage), parameters (optional) ist eine Tabelle mit Schlüssel/Werte-Paaren der Parameter dieser Methode. file (optional) ist eine Tabelle mit einem einzigen Schlüssel/Werte-Paar, wobei der Schlüssel der Name de Parameters und der Wert der Dateiname oder die File-ID ist (wenn dies in den parameters übergeben wird, wird Brawlbot den Dateinamen als File-ID senden).

Zusätzlich kann jede Methode als Schlüssel in der bindings Tabelle (zum Beispiel bindings.getMe) aufgerufen werden. Die bindings.gen Funktion (welche auch die __index Funktion in der Metatabelle ist) wird ihre Argumente an bindings.request in der richtigen Form übergeben. Mit diesem Weg sind die folgenden zwei Funktionsaufrufe gleich:

bindings.request(
    'sendMessage',
    {
        chat_id = 987654321,
        text = 'Brawlbot is best bot.',
        reply_to_message_id = 54321,
        disable_web_page_preview = false,
        parse_method = 'Markdown'
    }
)

bindings.sendMessage{
    chat_id = 987654321,
    text = 'Brawlbot is best bot.',
    reply_to_message_id = 54321,
    disable_web_page_preview = false,
    parse_method = 'Markdown'
}

utilities.lua hat mehrere "Abkürzungen", die dir das leben einfacher machen. Z.b.:

utilities.send_message(987654321, 'Brawlbot is best bot.', false, 54321, true)

Eine Datei mit sendPhoto hochzuladen würde so aussehen:

utilites.sendPhoto(987654321, 'photo.jpg', 'Beschreibungstext')

oder mit einer File-ID:

utilites.sendPhoto(987654321, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789', 'Beschreibungstext')

Falls erfolgreich, wird bindings das deserialisierte Ergebniss der API zurückgeben. Falls nicht erfolgreich, wird false und das Ergebnis zurückgegeben. Falls es einen Verbindungsfehler gab, werden zwei false Werte zurückgegeben. Wenn ein invalider Methodenname übergeben wurde, wird bindings eine Exception ausgeben. Damit sollen "stille Fehler" vermieden werden.


Datenbank

Hiddenbot benutzt eine interne Datenbank, wie Brawlbot sie benutzt und Redis. Die "Datenbank" ist eine Tabelle, auf die über die Variable database zugegriffen werden kann (normalerweise self.database) und die als JSON-encodierte Plaintext-Datei jede Stunde gespeichert wird oder wenn der Bot gestoppt wird (über /halt).

Das ist die Datenbank-Struktur:

{
	users = {
		["55994550"] = {
			id = 55994550,
			first_name = "Drew",
			username = "topkecleon"
		}
	},
	userdata = {
		["55994550"] = {
			nickname = "Best coder ever",
			lastfm = "topkecleon"
		}
	},
	version = "2.1"
}

database.users speichert User-Informationen, wie Usernamen, IDs, etc., wenn der Bot den User sieht. Jeder Tabellen-Key ist die User-ID als String.

database.userdata speichert Daten von verschiedenen Plugins, hierzu wird aber für Brawlbot-Plugins Redis verwendet.

database.version speichert die Bot-Version.

hiddenbot-v1's People

Contributors

brawl345 avatar topkecleon avatar bb010g avatar tiagodanin avatar heitorpb avatar cwxda avatar akronix avatar akamaru avatar cosmoconsole avatar juanpotato avatar mrhalix avatar imandaneshi avatar yamathedestroyer avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.