DEV Community


Posted on

Mastering IRC tool irssi + scripting

I must confess I'm a big fan of 80's and 90's tech. I grew up admiring cyberpunk stuff, wore green lab goggles until I was fourteen and used computers since I was three. I enjoy learning the newest tool for the tech field and be up to date, but I have a natural attraction for the classics. I admire them for being the beginning of everything we have now, and that way I just wanted to learn about IRC channels for fun.

But then I discovered a rather interesting tool for managing IRC in linux terminal that allows you to load perl scripts on the go. At first I thought I could emulate some classic communications with friends but apart from that I might could take advantage of the scripting magic.

First of all, here's what I'm using:

  • Linux (in my case, debian jessie) terminal
  • Freenode irc channel
  • irssi for Linux
  • Perl, python, bash or whatever scripting

So first of all is downloading the tool:

sudo apt-get install irssi
Enter fullscreen mode Exit fullscreen mode

once irssi is installed execute it, only write irssi in the terminal. In the [(status)] command line you can choose a nickname different from the one in the terminal using the command /SET nick yournickname if you don't use this, it will automatically catch your username from the terminal. You can also set a proxy like this:

/SET use_proxy ON
/SET proxy_address <Proxy host address>
/SET proxy_port <Proxy port>
Enter fullscreen mode Exit fullscreen mode

Once you are set up, it's time to connect. First of all connect to the Freenode:

/CONNECT Freenode
Enter fullscreen mode Exit fullscreen mode

Once you are in (you should wait a bit) join your channel using /join thenameofyourchannel.

These are the basics for a fast set up. For more information about the networks just use /help network in [(status)] command line. The same goes with the channels /help channels. For listing any of those use /list networks or /list channels. Also there are some useful commands:

/help [command] - more information about a command
/eval ${whatever} - evaluates the given command, for example S - server N - username
/cat file_dir/file - the same as bash cat command
/exec - executes commands in the background like, ls
/cd - same as linux terminal
/alias name command - give alias to custom commands. useful with online roleplaying
/ping user - ping an user. Also a Channel.
Enter fullscreen mode Exit fullscreen mode

And much more. Apart from this, you can set an automatic perl command that launches when starting irssi. For example if you want a personal greeting, you should write this:
#special greeting

print "Hello there master, welcome again.\n";
Enter fullscreen mode Exit fullscreen mode

and save it in ~/.irssi/scripts/autorun/. If you want to execute it yourself, save it in ~/.irssi/scripts, and in the [(status)] command line just use /script load But also, you can execute them in the channel using /exec perl ~/.irssi/scripts/, and not just perl, anything. I tried to launch a Flask app with it using python command. Now, once you discovered this, you can create better scripts in perl or take the ones in this repo.

But! more interesting. The irssi saves a log file in ~/irclogs/$tag/$0.log by default but you can change it using /SET autolog_path ~/new_path/irclogs/$tag/$0.log. And then I thought, hey what use could I get from these? well, depending on your needs. For example you can create a script that checks the log and looks for certain words to work. For example, imagine you have a raspberry pi and install the irssi. You gets the script work in the background and open the irc channel. You leave the rpi and go away, next you connect to the irc anywhere and write the magic word.

Like this, you can go and play with all the options this has. Of course,let's not forget about ALL the online role playing options here...

Anyway irssi is easy to use, flexible and fun. I recommend you to try it!

Top comments (5)

johand profile image
Johan • Edited

Irssi ftw! use it inside a tmux or GNU screen session

moopet profile image
Ben Sinclair

If you like that, bitlbee is going to blow your mind.

terceranexus6 profile image

I'll check thanks!

jj profile image
Juan Julián Merelo Guervós

And bots...

areahints profile image

hello i'd like to ask some questions about this?

could i use this to fetch content from the internet and store in a container/cloud? and then zip the contents stored to something really small and transfer to my phone/pc....