herodotus icon indicating copy to clipboard operation
herodotus copied to clipboard

An IRC bot written in node.JS that logs a channel's activity and saves it to JSON, JSONL, Markdown, or CSV

herodotus

An IRC bot written in node.JS that logs a channel's activity and saves it to JSON, JSON Lines, CSV, or Markdown

Getting started

Clone
git clone https://github.com/egladman/herodotus.git && cd herodotus
Install Dependencies
npm install
Start

There are 6 optional parameters

Example One
node server.js --channel='#herodotus-demo' --format='jsonl'

--

Example Two
node server.js --nick='qux' --channel='#foo' --server='bar' --port=1234 --format='md'

--

Example Three
node server.js --format='csv' --verbose

Default Configuration

server: irc.freenode.net

port: 6667

channel: #herodotus-demo

nick: herodotus-bot

format: json

verbose: false


JSON

example logs/YYYY-MM-DD.json

{  
  "server":"irc.freenode.net",
  "channel":"#herodotus-demo",
  "events":[  
    {  
      "nick":"foo",
      "message":"Vivamus elementum semper nisi",
      "time":1456070643
    },
    {  
      "nick":"bar",
      "message":"Aenean vulputate eleifend tellus",
      "time":1456070648
    },
    {  
      "nick":"baz",
      "message":"qux: Maecenas tempus, sit amet adipiscing sem neque sed ipsum",
      "time":1456070651
    },
    {  
      "nick":"qux",
      "message":"foo: Etiam sit amet orci eget eros faucibus tincidunt",
      "time":1456070653
    }
  ]
}

JSON Lines


example logs/YYYY-MM-DD.jsonl

{ "nick": "foo", "message": "Vivamus elementum semper nisi", "time": 1456070643 }
{ "nick": "bar", "message": "Aenean vulputate eleifend tellus", "time": 1456070648 }
{ "nick": "baz", "message": "qux: Maecenas tempus, sit amet adipiscing sem neque sed ipsum", "time": 1456070651 }
{ "nick": "qux", "message": "foo: Etiam sit amet orci eget eros faucibus tincidunt", "time": 1456070653 }

CSV

example logs/YYYY-MM-DD.csv

nick, message, time
"foo", "Vivamus elementum semper nisi", 1456070643
"bar", "Aenean vulputate eleifend tellus", 1456070648
"baz", "qux: Maecenas tempus, sit amet adipiscing sem neque sed ipsum", 1456070651
"qux", "foo: Etiam sit amet orci eget eros faucibus tincidunt", 1456070653


Markdown

example logs/YYYY-MM-DD.md

[02:41:33] foo Vivamus elementum semper nisi
[02:41:40] bar Aenean vulputate eleifend tellus
[02:41:42] baz qux: Maecenas tempus, sit amet adipiscing sem neque sed ipsum
[02:41:45] qux foo: Etiam sit amet orci eget eros faucibus tincidunt


Tested on node v4.2.6

Contributions and/or feature requests are welcomed. Feel free to report issues.