An IRC bot written in Haskell. cheek-pinch

Name Last Update
app Loading commit data...
data Loading commit data...
src/Bot Loading commit data...
.gitignore Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
Setup.hs Loading commit data...
stack.yaml Loading commit data...
vomitchan.cabal Loading commit data...


An IRC bot written in Haskell. cheek pinch

vomitchan running in IRC


  • .bots [vomitchan] - prints bot info
  • .source vomitchan - prints a link to bot source
  • .lewd <someone> - lewds someone
  • *vomits* [<someone>] - 'vomits' a link posted by you, or optionally someone else
  • *cheek pinch* - turns off and on dreammode for a channel

Admin Only

  • .quit - kill vomitchan ;-;



  • Stack
  • Haskell packages (stack should install these for you):
    • network
    • text
    • text-format
    • regex-tdfa
    • bytestring
    • aeson
    • monad-loops
    • turtle
    • connection
    • bytestring
    • random
    • stm
    • hashtables Note: you can build and run this without Stack of course, figure it out for yourself.

Building on Linux

  • clone this repo using git clone https://gitla.in/nymphet/vomitchan.git
  • run cd vomitchan && stack setup && stack build to compile


vomitchan requires data/networks.json to store information about IRC networks to connect to. This file should look like the following:

NOTE: one can forego writing T F for "dreammode" and "mutemode" because they default to T F

  { "netServer" : "irc.freenode.net"
  , "netPort"   : 6667
  , "netNick"   : "vomitchan"
  , "netPass"   : "password"
  , "netChans"  : [ "#lainchan", "#extra-chan"]
  , "netState"  : {"dreamMode" : [["#lainchan", true], ["#extra-chan",  true]]
                  , "muteMode" : [["#lainchan", false], ["#extra-chan", false]]

You can add multiple networks if you please.
NOTE: Some networks may not get the join messages if one does not wait for authentication


The bot can be started within ghci by running stack ghci in the project directory. Once at the prompt, run the main function.
stack build should also create an executable that can be started with stack exec vomitchan-exe

Planned Features

  • Versioning
  • Support for the 'major' IRC networks (Freenode, Rizon, IRCNet, QuakeNet, Etc.)
  • Per-channel rate limiting, to prevent spam
  • add 'modes'
  • use parser combinators for handling messages