Nurdbot

From NURDspace

NURDbot is a small IRC bot based on the fantastic jsonbot by Bart Thate. It runs on nurdbot.vm.nurd.space.

Writing custom commands (AKA plugs)

Extensions go in /home/nurdbot/.jsb/myplugs/socket. In theory you could load a plugin with:

!plug-enable <plugin name>

In practice it turns out you have to kill the bot, start it again (see below how) and then do the !plug-enable.

Reloading the bot

  • kill process starting with "python2.7 ./bin/jsb-irc"
  • as user nurdbot, run the following

screen ~/jsonbot/botstart.sh

  • restarting the mqtt connection (for eg the temperature sensors):
    • kill and restart: /usr/bin/screen -d -m -S 'mqtt-to-sqlite3' /home/nurdbot/mqtt-to-sqlite3.py‎


Our custom commands

  • !badum - for terrible jokes
  • !bclabel - Prints Bookcrossing labels @ Labelprinter @ SlabPi
  • !fluoro - controls the fluorescent lights
  • !label - Prints labels with free text @ Labelprinter @ SlabPi
  • !janee - response in the affirmative or negatory sense to inquiries
  • !mpdtube - Sends search query or url to MPDTube
  • !ot - shows OpenTherm data from Home assistant
  • !ot-set - Updates OpenTherm thermostat setpoint through Home assistant
  • !sensors - Queries sensors from Home assistant
  • !speak / !spreek / !dire / !sprech / !habla - Text to speach using espeak on SlabPi (different languages yay \o/)
  • !statustoggle - (temp) manually switch the space from closed to open
  • !sth - temps and humidities of the different rooms
  • !ticker sends text to Led ticker
  • !toggle - toggles switches (Sonoff, epc, pdu) through Home assistant
  • !toggle-list - shows a list of IDs that !toggle can use
  • !wau-temp - Read the external temperature from the WUR sensors
  • !wikipedia - customised from the basic version
  • !who - Checks which known devices are connected to the Wifi (if you want to be on here, see Jarvis#Enable_tracking_for_your_MAC_address)
  • !wol - Performs wake-on-lan actions for machines in the space
  • !power - Current power consumption
  • !sensor - Read sensors from hass

Bot replacement requirements

  • Python - to make it less of a pain to convert the plugins
  • ACL/Groups - current ones are for example SPACE , USER , MPD , SPEAK
  • Nickserv integration - so we don't need to track users ourselves, perhaps, optional

possible replacements

  • pyaib (https://github.com/facebookarchive/pyaib)
    • pros
      • dynamic loadable plugins
      • simple code
      • nickserv tracking
    • cons
      • some cry babies will complain that it was originally made by facebook
      • documentation is scarce
      • old and unmaintained
      • nobody uses it
    • notes
      • python3
  • limnoria (https://github.com/ProgVal/Limnoria)
    • pros
      • documented
      • maintained!
      • ACLs
    • cons
      • plugins are hard to read (their code) << opinion by flok, somebody verify this.
    • notes
      • python3
  • kiki
    • pros
      • stable code
      • maintained
      • flexible database
      • plugin interface
      • lots of functionality
    • cons
      • horrible code (organically grown)
      • java
    • notes
      • java code