Let's Make an IRC Bot!

Hey guys, I think an excellent use of the Adapt Intent Parser, would be to make a really smart IRC Bot! I don’t have a lot of experience in this area, but the Mycroft team could host the code on our org on Github (if the community wants that), and help guide the development! What do you guys think? Want to give it a shot?

1 Like

Very good idea.

IRC is very good source of non-formal human communication, which can be used as input for Adapt.
Which I believe should be main goal for Adapt, recognising intent from even the most informal statements.

Also it could be great proving ground to see if bot passes Turing test.

Definitely agree that this is a good idea.

More than happy to work on this as I have plenty of free time for two months before the next university semester starts

So, how would the bot work and what would be an example phrase? For instance, with the phrase “Mycroft, tell me a joke”, would it load up a " tell someone" module and then that would read from a joke database? Or is the idea of the project something completely different?

1 Like

@Wolfgange this is what I imagined, yes. However, I have not written an IRC bot before, so I would need community members to help decide how to get started and if there are any other projects we can build on top of. @testman, @eraptic, @Wolfgange any ideas where we start?

A quick google search reveals http://sopel.chat which is written in Python as well. I wonder if it could be written on top of that…

I think this looks really good.

Firstly we should repress our instinct to reinvent the wheel and have a look at some other IRC bots to see how they work.
Ok, that list is bit of a mess. From what I see, Cardinal seems quite promising, since it has many interesting features already integrated, so Adapt could be used to make those features more humanly accessible to IRC users.
But so does Sopel, in fact even more, so I think that @Wolfgange made best suggestion for what should be used as example of IRC bot.

1 Like

Agreed @testman - really we just want to ensure that we don’t have to do a ton of work, as the only thing we want to add is the Adapt layer to allow people, as you said, to interact really easily with the bot through the use of Adapt’s parser.

Simple and easy, both the creation of “skills” for the bot and the bot itself should be as simple as possible.

I had first read through the RFC after this post came up and also checked out sopel and a few others. I also quickly through something together in iPython and it isn’t too complicated to establish a connection to a channel, then just sit in a while loop waiting for input in the channel.

Regardless of which way we go, most of the implementation will be deciding which features we support. I would very much like to have a time zone converter for channels such as jblive (Linux Action Show etc.) for the hosts to be able to give times to the audience in UTC

@eraptic - yes, I think we need to get something up and come up with a way of contributing features which is straightforward and easy. We could model it after the way Mycroft handles skills which is we have a skills folder from which the features are loaded upon starting up the bot.

The starting features could be:

Timezone Converter
"Mycrobot, what time is it in Tokyo?"
Mycrobot: “It is currently 1:46 January 13, 2016 UTC+9”

Wikipedia Summaries
"Mycrobot, tell me about IRC"
Mycrobot: “Internet Relay Chat (IRC) is an application layer
protocol that facilitates communication in the form of text. The chat
process works on a client/server networking model. IRC clients are
computer programs that a user can install on their system. These clients
communicate with chat servers to transfer messages to other clients. IRC is mainly designed for group communication in discussion forums, called channels, but also allows one-on-one communication via private messages as well as chat and data transfer, including file sharing.”

Weather Queries
"Mycrobot, what’s the weather in Seattle?"
Mycrobot: “The weather in Seattle is light rain and the temperature is 45 Fahrenheit”

These are examples (each of which ironically overlap with abilities that Mycroft has). There are more useful features in regards to IRC which would need to be implemented. But as a starting point I think these would be quite easy and useful.

And then we get this hosted on mycroft.ai as an example/demo. Really.

I will look into sopel etc. and see what the best way of making that easily extendable with Adapt. Perhaps just make a subclass of the intents?

@Eirikur Yeah, we’ll host it and anything related to the project. I think it would be a great use for the Parser, and it would be awesome to show other open source projects how they can use Adapt!

@eraptic seems to be a lot of interest in sopel. If that is the way to go, then let’s move forward. We’ll need someone to head up this project and be the maintainer? Any takers?

I’m not sure if I would feel comfortable maintaining, however I spent a fair while over on #sopel and showed them adapt. They want to implement it as well so we can definitely collaborate with their developers as well which is great

@eraptic awesome. Let’s work with them then, if they are truly intersted in doing this. We should have a conversation either here or one of the channels (either #sopel or #mycroft) and see if we can get someone to help guide the Mycroft community to make this a great project!

@ryanleesipes, I’m very sorry, I had gotten the impression I was talking to a bunch of their devs but they’re just making some modules for sopel. I’m sure we’ll still be able to work something out with them though, they were all very friendly

I’m very excited about this one!