Giter Club home page Giter Club logo

metabot's Introduction

metabot

Virtual Reality bot with scripting.

Building

Libraries

You will need openssl, lua5.1, and json-c development libraries installed.

Compiling

autoreconf -i
./configure
make

Will produce the binary src/metabot

Commands

open

open('/home/user/MyBot.bot')

Loads bot configuration file, connects to specified server, joins specified room.

list

list()

Lists currently running bots.

select

select("MyBot2")

Selects the bot you want to interact with for other commands (say, kill, etc.)

say

say("Hello")

Sends a chat message through the currently selected bot.

kill

kill()

Shuts down and unloads currently seleted bot

Bot configuration files (*.bot)

{
  "server": "beta.vrsites.com",
  "port": 5567,
  "name": "MyBot",
  "owner": "Me",
  "avatar_file": "/full/path/to/avatars/bot.avatar",
  "room": "http://www.janusvr.com/index.html",
  "position": {
    "pos":"1.5 0 -5.0",
    "dir":"0 0 0",
    "view_dir":"0 0 0",
    "up_dir":"0 0 0",
    "head_pos":"0 0 0"
   }
}

Avatar files (*.avatar)

<FireBoxRoom>
  <Assets>
    <AssetObject id=^body^ src=^http://avatars.vrsites.com/chibii/body_male.obj^ mtl=^http://avatars.vrsites.com/chibii/mtls3/body_male13.mtl^ />
    <AssetObject id=^head^ src=^http://avatars.vrsites.com/chibii/head_male.obj^ mtl=^http://avatars.vrsites.com/chibii/mtls3/head_male13.mtl^ />
  </Assets>
  <Room>
    <Ghost id=^BOTNAME^ js_id=^2^ scale=^1.00000 1.00000 1.00000^ head_id=^head^ head_pos=^0.000000 0.750000 0.000000^ body_id=^body^ />
  </Room>
</FireBoxRoom>

Note that Ghost id is set to BOTNAME. This will be replaced with whatever name is defined in the .bot file.

metabot's People

Contributors

timschwartz avatar

Stargazers

 avatar

Watchers

 avatar  avatar

metabot's Issues

autoconf error message

$ autoconf
configure.ac:6: error: possibly undefined macro: AM_INIT_AUTOMAKE
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:16: error: possibly undefined macro: AC_DEFINE
configure.ac:51: error: possibly undefined macro: AM_CONDITIONAL
configure.ac:52: error: possibly undefined macro: AM_COND_IF
configure.ac:52: error: possibly undefined macro: AC_CONFIG_FILES

undefined reference problems with lua and openssl libraries

source@megumi:/Projects/c++/metabot$ make
make all-recursive
make[1]: Entering directory '/storage/mirror/home/source/Projects/c++/metabot'
Making all in src
make[2]: Entering directory '/storage/mirror/home/source/Projects/c++/metabot/src'
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include/lua5.1 -I../include -lssl -lcrypto -llua5.1 -std=c++11 -lpthread -static-libstdc++ -static-libgcc -g -O2 -MT metabot.o -MD -MP -MF .deps/metabot.Tpo -c -o metabot.o metabot.cpp
mv -f .deps/metabot.Tpo .deps/metabot.Po
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include/lua5.1 -I../include -lssl -lcrypto -llua5.1 -std=c++11 -lpthread -static-libstdc++ -static-libgcc -g -O2 -MT md5.o -MD -MP -MF .deps/md5.Tpo -c -o md5.o md5.cpp
mv -f .deps/md5.Tpo .deps/md5.Po
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include/lua5.1 -I../include -lssl -lcrypto -llua5.1 -std=c++11 -lpthread -static-libstdc++ -static-libgcc -g -O2 -MT bot.o -MD -MP -MF .deps/bot.Tpo -c -o bot.o bot.cpp
mv -f .deps/bot.Tpo .deps/bot.Po
g++ -DHAVE_CONFIG_H -I. -I.. -I/usr/include/lua5.1 -I../include -lssl -lcrypto -llua5.1 -std=c++11 -lpthread -static-libstdc++ -static-libgcc -g -O2 -MT net.o -MD -MP -MF .deps/net.Tpo -c -o net.o net.cpp
net.cpp: In member function ‘void metabot::net::send(std::string)’:
net.cpp:300:66: warning: ignoring return value of ‘ssize_t write(int, const void_, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
else ::write(this->sock, message.c_str(), message.size());
^
mv -f .deps/net.Tpo .deps/net.Po
g++ -lssl -lcrypto -llua5.1 -std=c++11 -lpthread -static-libstdc++ -static-libgcc -g -O2 -o metabot metabot.o md5.o bot.o net.o -ljson-c
metabot.o: In function metabot::console::start()': /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:199: undefined reference toluaL_newstate'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:200: undefined reference to luaL_openlibs' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:202: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:202: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:203: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:203: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:204: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:204: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:205: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:205: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:206: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:206: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:207: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:207: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:208: undefined reference tolua_pushcclosure'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:208: undefined reference to lua_setfield' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:214: undefined reference toluaL_loadstring'
/storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:217: undefined reference to lua_tolstring' /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:214: undefined reference tolua_pcall'
metabot.o: In function metabot::console::selectbot(lua_State_)': /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:162: undefined reference to lua_tolstring'
metabot.o: In functionmetabot::console::logon(lua_State_)': /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:149: undefined reference to lua_tolstring'
metabot.o: In functionmetabot::console::say(lua_State_)': /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:123: undefined reference to lua_tolstring'
metabot.o: In functionmetabot::console::openbot(lua_State_)': /storage/mirror/home/source/Projects/c++/metabot/src/metabot.cpp:131: undefined reference to lua_tolstring'
bot.o: In functionmetabot::bot::bot(std::string)': /usr/include/c++/4.9/thread:136: undefined reference to pthread_create'
net.o: In functionmetabot::init_ssl_lib()': /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:94: undefined reference to OPENSSL_add_all_algorithms_noconf'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:95: undefined reference toERR_load_BIO_strings' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:96: undefined reference to ERR_load_crypto_strings'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:97: undefined reference toSSL_load_error_strings' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:99: undefined reference to SSL_library_init'
net.o: In functionmetabot::net::ssl_ctx()': /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:247: undefined reference to BIO_new_fp'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:249: undefined reference toSSLv23_client_method' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:251: undefined reference to SSL_CTX_new'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:257: undefined reference toSSL_CTX_ctrl' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:258: undefined reference to SSL_new'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:259: undefined reference toSSL_set_fd' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:261: undefined reference to SSL_connect'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:264: undefined reference toSSL_get_error' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:253: undefined reference to BIO_printf'
net.o: In functionmetabot::net::~net()': /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:168: undefined reference to SSL_free'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:169: undefined reference toX509_free' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:170: undefined reference to SSL_CTX_free'
net.o: In functionmetabot::net::net(std::string, int, int, bool)': /usr/include/c++/4.9/thread:136: undefined reference to pthread_create'
net.o: In functionmetabot::net::net(std::string, int, int, bool)': /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:146: undefined reference to SSL_get_peer_certificate'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:149: undefined reference toX509_NAME_new' /storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:150: undefined reference to X509_get_subject_name'
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:152: undefined reference toX509_NAME_print_ex' net.o: In function metabot::net::net(std::string, int, int, bool)':
/usr/include/c++/4.9/thread:136: undefined reference topthread_create' net.o: In function metabot::net::thread_ssl()':
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:196: undefined reference toSSL_read' net.o: In function metabot::net::send(std::string)':
/storage/mirror/home/source/Projects/c++/metabot/src/net.cpp:299: undefined reference toSSL_write' /usr/lib/gcc/x86_64-linux-gnu/4.9/libstdc++.a(thread.o): In function std::thread::_M_start_thread(std::shared_ptrstd::thread::_Impl_base)':
(.text.ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE+0x85): undefined reference to`pthread_create'
collect2: error: ld returned 1 exit status
Makefile:333: recipe for target 'metabot' failed
make[2]: *
* [metabot] Error 1
make[2]: Leaving directory '/storage/mirror/home/source/Projects/c++/metabot/src'
Makefile:433: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/storage/mirror/home/source/Projects/c++/metabot'
Makefile:328: recipe for target 'all' failed
make: *** [all] Error 2
source@megumi:
/Projects/c++/metabot$

method chat is incorectly structured

  1. Roomwide chat:
    • When janusvr sends a chat message, the server receives:
      • { u'data': u'hi', u'method': u'chat' }
    • When the bot sends a chat message, the server receives:
      • { u'data': {u'message': u'hi'}, u'method': u'chat' }
  2. Private chat, or direct chat:
    • When janusvr sends a priv message, the server sees:
      • { u'data': { u'toUserId': u'bot1', u'message': u'hi' }, u'method': u'chat' }
    • When the bot sends a priv message, the server sees:
      • { u'data': { u'message': u'@source hi' }, u'method': u'chat' }

So, as you stated, your bot can't send to janus on my server, and there is a reason for it, as you can see.

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.