JakobOvrum / Diggler

IRC bot framework for the D programming language
http://jakobovrum.github.io/Diggler/
Other
6 stars 5 forks source link

Error: module bot is in file 'diggler/bot.d' which cannot be read #1

Closed dariusc93 closed 10 years ago

dariusc93 commented 10 years ago

Hi,

I came across your framework and thought on giving it a try but for some odd reason I am getting "Error: module bot is in file 'diggler/bot.d' which cannot be read" but the file is readable and does exist.

Compiling... source/app.d(1): Error: module bot is in file 'diggler/bot.d' which cannot be read import path[0] = source import path[1] = ../../../darius/.dub/packages/diggler-master/dirk import path[2] = ../../../darius/.dub/packages/diggler-master/dirk/libev import path[3] = ../../../darius/.dub/packages/dirk-master import path[4] = ../../../darius/.dub/packages/dirk-master/libev import path[5] = /usr/include/dmd/phobos import path[6] = /usr/include/dmd/druntime/import

Any idea?

JakobOvrum commented 10 years ago

Ah, I had a fix for this locally which I just pushed. Does it work with e7479fd?

dariusc93 commented 10 years ago

That fixed that issue but now im getting

Linking... /usr/bin/ld: cannot find -lev collect2: error: ld returned 1 exit status

dariusc93 commented 10 years ago

If it does help I am using Ubuntu to build this

JakobOvrum commented 10 years ago

Do: sudo apt-get install libev-dev Diggler depends on Dirk which depends on libev, a C library, which dub cannot install. Sorry, I'll add that to the readme.

dariusc93 commented 10 years ago

Ah so im assuming the version of libev is different in vibe.d and dirk?

JakobOvrum commented 10 years ago

I think vibe.d uses libevent, which indeed is a different yet similar library.

dariusc93 commented 10 years ago

Ah ok thanks :) ill keep note of this

dariusc93 commented 10 years ago

Also, to make a small comment, could it be possible to implement events (eg join, quit, message, etc) instead of having the bot just do commands? I am looking at the dirk library to see if I could make use of it also

JakobOvrum commented 10 years ago

Sorry for the brevity, I was on a mobile device.

I think the peculiar error message is that way because it already knows where the diggler.bot module is, since it's a source file passed to the compiler, but it can't find it in anywhere in the import paths.

libev and libevent do more or less the same thing, with libevent having more functionality, but the former aims to be small and fast over anything else, making it a good fit for Dirk which has simple requirements. libev has a compatibility layer making it compatible with libevent's API, so any code using libevent, such as vibe.d, can also use libev as a drop-in replacement.

Also, to make a small comment, could it be possible to implement events (eg join, quit, message, etc) instead of having the bot just do commands? I am looking at the dirk library to see if I could make use of it also

Bot.connect returns the Dirk IrcClient object for the new connection, which you can register callbacks on, as shown in the front page example on the online documentation site. However, bot-oriented events other than commands may be added to Diggler in the future. It think it would be cool if Diggler could become a generic bot framework, not necessarily tied to the IRC protocol, so devolving to Dirk shouldn't be par the course unless something very IRC-specific is required.

Either way, the documentation needs work. Referencing the Dirk documentation from Diggler where appropriate might be a good idea.