From 0d32c727fa03b8ef19bb463de578e1ec50d85e80 Mon Sep 17 00:00:00 2001 From: Dennis Date: Sat, 12 Jan 2019 15:13:21 +0100 Subject: [PATCH] Added installation files This commit adds a convenient installation script for Linux and also adds a description on how to install the bot. Furthermore, a very simple example plugin is added. This way, new users can easily discover the possibilities of this plugin. Finally, the default character "Peter"---which is used within Alcuinus---is removed, and a more generic character is added. --- README.md | 53 +++++++- config.json.example | 17 --- config.json.template | 17 +++ images/default_avatar.png | Bin 0 -> 108144 bytes install.sh | 128 ++++++++++++++++++ matrix-chatbot.service.template | 14 ++ matrix_bot_api/matrix_bot_api.py | 7 +- .../{events.py => admidio_events.py} | 17 ++- plugins/hello/README.md | 1 + plugins/hello/hello.py | 25 ++++ plugins/hello/messages/help | 5 + requirements.txt | 1 + run.py | 23 +++- 13 files changed, 272 insertions(+), 36 deletions(-) delete mode 100644 config.json.example create mode 100644 config.json.template create mode 100644 images/default_avatar.png create mode 100755 install.sh create mode 100644 matrix-chatbot.service.template rename plugins/admidio_events/{events.py => admidio_events.py} (95%) create mode 100644 plugins/hello/README.md create mode 100644 plugins/hello/hello.py create mode 100644 plugins/hello/messages/help create mode 100644 requirements.txt diff --git a/README.md b/README.md index bf7a293..3521cf1 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,72 @@ The core of this chatbot is based on [github.com/shawnanastasio/python-matrix-bot-api](https://github.com/shawnanastasio/python-matrix-bot-api/) which was published under GPL-3.0. It is heavily modified to create an API to easily add plugins. This bot is intended to operate on the [Matrix network](https://matrix.org). -This code has two purposes. Firstly, and mainly, it serves as virtual assistent in the Matrix based communication platform of members of the Dutch student association [Alcuinus](https://alcuinus.nl). Secondly, the bot's easy to use API makes the development of a simple plugin an approachable first project for new members of Alcuinus' IT working groups during their training. +This bot was orginally created to serve two purposes. Firstly, and mainly, it serves as virtual assistent in the Matrix based communication platform of members of the Dutch student association [Alcuinus](https://alcuinus.nl). Secondly, the bot's easy to use API makes the development of a simple plugin an approachable first project for new members of Alcuinus' IT working groups during their training. ## Content * [Installation & Requirements](#installation-requirements) + * [Automatic installation (Linux)](#automatic-installation-linux) + * [Manual installation](#manual-installation) * [Plugins](#plugins) * [List of available plugins](#list-of-available-plugins) * [API](#api) - * [Mandatory files](#mandatory-files) + * [Mandatory/recommended files](#mandatory-recommended-files) * [Help template](#help-template) * [Plugin class template](#plugin-class-template) * [Additional tips](#additional-tips) ## Installation & Requirements: -... +First, clone this repository: +``` +git clone https://git.dennispotter.eu/Dennis/matrix-chatbot +``` +In order for the bot framework to work, Python 3, [virtualenv](https://virtualenv.pypa.io/en/latest/), and [pip](https://pypi.org/project/pip/) must be installed on your computer or server. + +### Automatic installation (Linux) +On Linux, the bash script `install.sh` can be used to install the bot. +``` +install.sh : Creates a virtualenv, an initial config.json, and installs + all required packages +install.sh service: Runs ./install and additionally adds a systemd service. + This command will ask you for root credentials! +install.sh help : Prints this message. +``` +### Manual installation +Create a virtual environment by entering the directory and running: +``` +virtualenv . +``` +Enter the virtual environment +``` +source bin/activate +``` +and install all required packages +``` +pip3 install -r requirements.txt +``` +Now, you need to create a configuration file `config.json`. The template `config.json.template` can be used for this purpose. + +Finally, the bot can be started by executing the following command within the virtual environment: + +``` +./run.py +``` ## Plugins The bot has different plugins that can be activated by sending `[Keyword in bot's config.json] [Keyword(s) in plugin's config.json]` to a room in which the bot is present. Below, under [List of available plugins](list-of-available-plugins), you can first find a list of already available plugins. Then, under [API](#api), you can find a description on how to develop a new plugin. ### List of available plugins: -* [Admidio events plugin](src/branch/master/plugins/events) +* [Hello plugin](src/branch/master/plugins/events): An example plugin that interacts with users that send "Hello bot" to the bot. +* [Admidio events plugin](src/branch/master/plugins/events): a plugin that interacts with an [Admidio](https://admidio.org) installation. ### API To interact with rooms, the [Matrix Python SDK](http://matrix-org.github.io/matrix-python-sdk/) can be used. -#### Mandatory files -To create a plugin, a few mandatory files must be present. The tree below shows the general structure of a plugin. A new plugin must be placed in a directory with the same name. The main class (more on that later) of the plugin must be defined in a Python file with the same name within that directory. The event may not use bot's main configuration file. All configuration must be placed in a separate `config.json`. +#### Mandatory/recommended files +To create a plugin, a few mandatory or recommended files must be present. The tree below shows the general structure of a plugin. A new plugin must be placed in a directory with the same name. The main class (more on that later) of the plugin must be defined in a Python file with the same name within that directory. The event may not use bot's main configuration file. All configuration must be placed in a separate `config.json`. -A subdirectory `messages` is used to store messages. Within this directory, a file `help` must be present. The content of this file must be returned with a method of the plugin class (more on that later). Furthermore, for every language a file `messages..json` with all messages should exist. +A subdirectory `messages` is used to store messages. Within this directory, a file `help` may be present. The content of this file must be returned with a method of the plugin class (more on that later). Furthermore, for every language a file `messages..json` with all messages should exist. + +The help file is not mandatory. If no help message for a plugin should appear when sending a help request to the bot, this file can be ommitted. The Plugin's `help()` method should return 0 in that case. ``` . └── plugins diff --git a/config.json.example b/config.json.example deleted file mode 100644 index 3c9526f..0000000 --- a/config.json.example +++ /dev/null @@ -1,17 +0,0 @@ -{ - "bot_credentials": { - "username": "", - "password": "", - "server": "" - }, - - "character": { - "name": "Peter", - "avatar": "images/profilepic.jpg", - "avatar_mime": "image/jpeg" - }, - - "plugins": [ - "events" - ] -} diff --git a/config.json.template b/config.json.template new file mode 100644 index 0000000..765f116 --- /dev/null +++ b/config.json.template @@ -0,0 +1,17 @@ +{ + "bot_credentials": { + "username": "${uservar}", + "password": "${passvar}", + "server": "${servervar}" + }, + + "character": { + "name": "Bot", + "avatar": "images/default_avatar.png", + "avatar_mime": "image/png" + }, + + "plugins": [ + "hello" + ] +} diff --git a/images/default_avatar.png b/images/default_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..26916c1352e210f57d15a33d91d367e071ea695e GIT binary patch literal 108144 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 Jny+FO^gnHrE_na| literal 0 HcmV?d00001 diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..ab1e782 --- /dev/null +++ b/install.sh @@ -0,0 +1,128 @@ +#!/bin/bash +# +# Installation script for matrix-chatbot +# +# @author Dennis Potter +# @copyright 2019, Dennis Potter +# @license GNU General Public License (version 3) +# +# matrix-chatbot +# +# 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 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 . +################################################################################## + +# This script does the following: +# - create virtualenv +# - install requirements of main bot +# - create initial config.json +# - (optional) create systemd service + +if [[ $1 == help ]]; then + echo "Help:" + echo "install.sh : Creates a virtualenv, an initial config.json, and installs" + echo " all required packages" + echo "install.sh service: Runs ./install and additionally adds a systemd service." + echo " This command will ask you for root credentials!" + echo "install.sh help : Prints this message." + + exit 0 +fi + +# Define directory of chatbot +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +# Check if user is superuser +if [[ "$EUID" -eq 0 ]]; then + echo "ERR: Please do not run this script as super user!" + exit 1 +fi + +################################################################# +# Create function to check availability of software +################################################################# +function availability { + if [[ ! $(command -v $1) ]]; then + echo "ERR: '$1' is not available but required. Please install it!" + exit 1 + fi +} + +################################################################# +# Create virtualenv +################################################################# +# Check whether virtualenv is present +availability virtualenv + +# Create virtualenv +virtualenv $DIR + +# Enter virtualenv +source $DIR/bin/activate + +################################################################# +# Install requirements +################################################################# +# Check whether pip3 is present +availability pip3 + +# Install requirements +pip3 install -r requirements.txt + +################################################################# +# Create config.json +################################################################# +echo "" +echo "############################################################################" +echo "This step will generate a configuration file. The resulting bot will be very" +echo "simple and is only able to respond to the message "Hello bot". However, it" +echo "forms the perfect base for further development." +echo "" +echo "In the following steps, an _existing_ user must be provided. If you did not" +echo "yet create a user for your bot, please do so now!" +echo "############################################################################" +echo "" + +if [[ -f $DIR/config.json ]]; then + read -p "$DIR/config.json already exists. Should I overwrite it? [y/n]: " ow + + if [[ $ow != y ]]; then + echo "ERR: Cannot write to $DIR/config.json!" + exit 1 + fi +fi + +read -p 'Matrix homeserver: ' servervar +read -p 'Matrix username: ' uservar +read -p 'Matrix password: ' passvar + +sed -e "s/\${servervar}/${servervar}/"\ + -e "s/\${uservar}/${uservar}/"\ + -e "s/\${passvar}/${passvar}/"\ + $DIR/config.json.template > $DIR/config.json + +################################################################# +# Configure service +################################################################# +if [[ $1 != service ]]; then + exit 0 +fi + +sudo useradd -r mchatbot + +sed -e "s/\${DIR}/${DIR}/"\ + $DIR/matrix-chatbot.service.template > $DIR/matrix-chatbot.service + +sudo mv $DIR/matrix-chatbot.service /etc/systemd/system/matrix-chatbot.service + +sudo systemctl enable matrix-chatbot.service +sudo systemctl start matrix-chatbot.service diff --git a/matrix-chatbot.service.template b/matrix-chatbot.service.template new file mode 100644 index 0000000..8a54bd8 --- /dev/null +++ b/matrix-chatbot.service.template @@ -0,0 +1,14 @@ +[Unit] +Description=Matrix chatbot +After=multi-user.target + +[Service] +Type=simple +Restart=always +RestartSec=3 +User=mchatbot +WorkingDirectory=${DIR} +ExecStart=${DIR}/bin/python run.py + +[Install] +WantedBy=multi-user.target diff --git a/matrix_bot_api/matrix_bot_api.py b/matrix_bot_api/matrix_bot_api.py index 1bec33f..ef51e96 100644 --- a/matrix_bot_api/matrix_bot_api.py +++ b/matrix_bot_api/matrix_bot_api.py @@ -15,6 +15,7 @@ HELP_LOCATION = os.path.join(os.path.dirname(__file__), 'help') private_message = "Hey {}! Ik heb je even een privébericht gestuurd 🙂" def eprint(*args, **kwargs): + '''Print error messages to stderr''' print(*args, file=sys.stderr, **kwargs) class MatrixBotAPI: @@ -159,7 +160,11 @@ class MatrixBotAPI: help_text = open(HELP_LOCATION, mode="r").read() for plugin in self.plugins: - help_text += plugin.help() + try: + help_text += plugin.help() + except TypeError: + # The plugin probably returned 0, ignore it + pass self.send_message_private_public(room, event, help_text) diff --git a/plugins/admidio_events/events.py b/plugins/admidio_events/admidio_events.py similarity index 95% rename from plugins/admidio_events/events.py rename to plugins/admidio_events/admidio_events.py index 8436958..2d139be 100644 --- a/plugins/admidio_events/events.py +++ b/plugins/admidio_events/admidio_events.py @@ -2,7 +2,7 @@ __author__ = "Dennis Potter" __copyright__ = "Copyright 2019, Dennis Potter" __credits__ = ["Dennis Potter"] __license__ = "GPL-3.0" -__version__ = "1.0.1" +__version__ = "0.5.0" __maintainer__ = "Dennis Potter" __email__ = "dennis@dennispotter.eu" @@ -16,14 +16,19 @@ import MySQLdb as mysql from matrix_bot_api.mregex_handler import MRegexHandler +EVENTS_DATA_DIR = os.path.join(os.path.dirname(__file__), + '../../data/events') +DATA_LOCATION = os.path.join(os.path.dirname(__file__), + '../../data/events/data.db') CONFIG_LOCATION = os.path.join(os.path.dirname(__file__), 'config.json') HELP_LOCATION = os.path.join(os.path.dirname(__file__), 'messages/help') MESSAGES_LOCATION = os.path.join(os.path.dirname(__file__), 'messages/messages.dutch.json') class Plugin: - """ Description of event plugin """ - + """ This plugin grabs events from Admidio (https://admidio.org) + and lets users interact with the data + """ def __init__(self, bot): # Load the configuration with open(CONFIG_LOCATION) as json_data: @@ -61,7 +66,7 @@ class Plugin: try: # Try to make a new directory - os.mkdir("data/events") + os.mkdir(EVENTS_DATA_DIR) # Define query to INSERT event table to SQLite DB sql = """CREATE TABLE 'events' ( @@ -69,7 +74,7 @@ class Plugin: 'datetime_posted' datetime);""" # Open, execute, commit, and close SQLite database - sqlite_db = sqlite3.connect('data/events/data.db') + sqlite_db = sqlite3.connect(DATA_LOCATION) sqlite_cursor = sqlite_db.cursor() sqlite_cursor.execute(sql) sqlite_db.commit() @@ -120,7 +125,7 @@ class Plugin: results = mysql_cursor.fetchall() # Open SQLite database - sqlite_db = sqlite3.connect('data/events/data.db') + sqlite_db = sqlite3.connect(DATA_LOCATION) sqlite_cursor = sqlite_db.cursor() diff --git a/plugins/hello/README.md b/plugins/hello/README.md new file mode 100644 index 0000000..3a84af2 --- /dev/null +++ b/plugins/hello/README.md @@ -0,0 +1 @@ +This is an example plugin with only a single callback. When a user says "Hello bot" in a room in which te bot is present, the user replies with "Hello \!". diff --git a/plugins/hello/hello.py b/plugins/hello/hello.py new file mode 100644 index 0000000..f2f323f --- /dev/null +++ b/plugins/hello/hello.py @@ -0,0 +1,25 @@ +from matrix_bot_api.mregex_handler import MRegexHandler +import os + +HELP_LOCATION = os.path.join(os.path.dirname(__file__), 'messages/help') + +class Plugin: + """ This is an example plugin with only a single callback. When + a user says "Hello bot" in a room in which te bot is present, + the user replies with "Hello !". + """ + + def __init__(self, bot): + # Define sensitivity + self.handler = [] + + self.handler.append(MRegexHandler("Hello bot", self.info_callback)) + + # Save parent bot + self.bot = bot + + def info_callback(self, room, event): + room.send_text(f"Hello {event['sender']}!") + + def help(self): + return open(HELP_LOCATION, mode="r").read() diff --git a/plugins/hello/messages/help b/plugins/hello/messages/help new file mode 100644 index 0000000..c01c7f6 --- /dev/null +++ b/plugins/hello/messages/help @@ -0,0 +1,5 @@ +
Hello
+This is an example help message of an example plugin. This message is made up in HTML. +
    +
  • bot: greet me with "Hello bot". I will greet you back.
  • +
diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c5f69d1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +matrix-client>=0.3.2 diff --git a/run.py b/run.py index 99cff11..989dc96 100755 --- a/run.py +++ b/run.py @@ -3,14 +3,27 @@ This is Peter. Peter is using the Python Matrix Bot API """ +__author__ = "Dennis Potter" +__copyright__ = "Copyright 2019, Dennis Potter" +__credits__ = ["Dennis Potter"] +__license__ = "GPL-3.0" +__version__ = "0.5.0" +__maintainer__ = "Dennis Potter" +__email__ = "dennis@dennispotter.eu" + import json +import os +import time +import threading # Bot API import from matrix_bot_api.matrix_bot_api import MatrixBotAPI +CONFIG_LOCATION = os.path.join(os.path.dirname(__file__), 'config.json') + def main(): # Load the configuration - with open('config.json') as json_data: + with open(CONFIG_LOCATION) as json_data: config = json.load(json_data) # Create an instance of the MatrixBotAPI @@ -19,11 +32,11 @@ def main(): # Start polling bot.start_polling() - # Infinitely read stdin to stall main thread while the bot runs in other - # threads. + # Stall this thread while the bot runs in other threads. On ^C, this will + # indicate to all threads that they should cancel try: - while True: - input() + forever = threading.Event(); + forever.wait() except: bot.cancel = True