Skip to content

Extensible Mumble bot that can play audio and control MPD through chat commands.

License

Notifications You must be signed in to change notification settings

promi/mumble-pluginbot-plusplus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

May 1, 2017
e17eb15 · May 1, 2017
Apr 29, 2017
Feb 13, 2017
Feb 13, 2017
Feb 11, 2017
Feb 18, 2017
Jan 11, 2017
Apr 30, 2017
Dec 2, 2016
Dec 2, 2016
Mar 4, 2017
May 1, 2017
Dec 2, 2016
May 1, 2017

Repository files navigation

mumble-pluginbot-plusplus

Build Status Coverty Scan Status

Introduction

mumble-pluginbot-plusplus is an extensible Mumble bot which can play audio, can be fed by different sources, and much more.

It is a C++ rewrite of several libraries and the original mumble-ruby-pluginbot written in Ruby:

Thanks to all the original authors! See the source code for copyright information.

Status

The rewrite is not complete yet.

What works:

  • Command line parsing (Pass "--help" to the executable to see the syntax)
  • Creating a RSA private + public key pair (PEM format)
  • Creating a X.509 certificate (PEM format)
  • Connection to a Mumble server
  • Auto moving to a channel after connect
  • Some simple chat commands such as ".help"
  • FIFO reading / OPUS encoding / Streaming
  • MPD plugin
  • Version plugin
  • Messages plugin
  • YouTube plugin

What doesn't work:

  • Some chat commands don't work
  • Soundcloud plugin
  • Bandcamp plugin
  • Ektoplazm plugin
  • Radiostream plugin
  • CELT support
  • Portaudio support
  • WAV reading / writing
  • Automatic MPD startup
  • Probably more ;)

Dependencies

The code is using modern C++ language features only present in C++14.

  • GCC 4.9+ or Clang 3.6+
  • autoconf
  • automake
  • libtool
  • OpenSSL (libcrypto + libssl)
  • libopus 1.1
  • libprotobuf
  • protobuf (for the protoc compiler)
  • libmpdclient
  • libuv (will most likely be an optional dependency in the future)
  • uvw (is automatically pulled in via a Git submodule)

On Debian you can get the dependencies using Apt:

sudo apt-get install build-essential automake libtool pkg-config libopus-dev libssl-dev libprotobuf-dev libmpdclient-dev protobuf-compiler

On Ubuntu 14.04 (Trusty Thar) (GCC) you have to also add the ubuntu-toolchain-r/test PPA:

sudo apt-add-repository "ppa:ubuntu-toolchain-r/test"
sudo apt-get install build-essential automake libtool g++-4.9 libopus-dev libssl-dev libprotobuf-dev libmpdclient-dev protobuf-compiler

Building + Installing

The repository is autotools-based, you have to regenerate the configure script:

./autogen.sh

Then the usual autotools process applies:

./configure
make
sudo make install

There is experimental support for Debian Jessie and Ubuntu Trusty, invoke configure like this:

CXX='g++ -std=c++1y' ./configure --without-libuv

It also works without installing. libtool provides a wrapper script for this:

./mumble-pluginbot-plusplus --help

A running mpd is currently necessary or the bot will crash, there is a script included to start mpd:

tools/start-mpd.sh

However the script expects a working mpd.conf in ~/.config/mumble-pluginbot-plusplus/mpd.conf. You can start with the example script from the mumble-ruby-pluginbot repository:

https://github.com/MusicGenerator/mumble-ruby-pluginbot/blob/master/templates/mpd.conf

Debugging

When using gdb either install first and invoke gdb as usual or use libtools execute mode to debug without installing:

libtool --mode=execute gdb --args ./mumble-pluginbot-plusplus -h mumble.example.org ...

For the best debugging experience compile with debugging symbols and without optimizations:

CXX='clang++ -std=c++14' CXXFLAGS='-O0 -ggdb' ./configure

License

mumble-pluginbot-plusplus is licensed under the AGPLv3+ license. The original code is licensed under the MIT license.

Code structure

The code consists of several libtool libraries and a binary:

  • libaither - Contains a Log class with severity levels
  • libmumble-pluginbot-plusplus-io - Basic File I/O
  • libmumble-pluginbot-plusplus-network - TCP network socket
  • libmumble-pluginbot-plusplus-openssl - Wrapper for OpenSSL (certificate + SSL/TLS)
  • libmumble-pluginbot-plusplus-opus - libopus C++ wrapper
  • libmumble-pluginbot-plusplus-mumble - Utility classes to talk to a Mumble server
  • libmumble-pluginbot-plusplus-mpd - Utility classes to talk to a MPD server
  • mumble-pluginbot-plusplus - The main binary containing the core Bot and the enabled plugins

About

Extensible Mumble bot that can play audio and control MPD through chat commands.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published